@Override public void sendUserMessage(final String user, final Message message) { messagesManager.sendMessage(user, message); }
@Test public void testSendUserMessageForwardsToMessagesManager() { // GIVEN final String testUser = "test"; final Message message = mock(Message.class); // WHEN appInstanceControllerImpl.sendUserMessage(testUser, message); // THEN verify(messagesManager).sendMessage(testUser, message); }
@Test public void reclaimingATaskCallsTaskManagerAndSendsAMessage() throws Exception { // GIVEN task.setStatus(Task.Status.InProgress); claimTaskActionDefinition.setNotifyPreviousAssignee(true); // WHEN action.execute(); // THEN verify(tasksManager, times(1)).claim(anyString(), anyString()); verify(messagesManager).sendMessage(anyString(), messageArgumentCaptor.capture()); Message message = messageArgumentCaptor.getValue(); assertEquals(MessageType.INFO, message.getType()); assertEquals("Task reassigned", message.getSubject()); assertEquals("Your publication task for food item /article was reclaimed by John Doe.", message.getMessage()); }
@Test public void reclaimingCallsTaskManagerAndSendsMessages() throws Exception { // GIVEN task1.setStatus(Task.Status.InProgress); task2.setStatus(Task.Status.InProgress); claimTasksActionDefinition.setNotifyPreviousAssignee(true); // WHEN action.execute(); // THEN verify(tasksManager, times(2)).claim(anyString(), anyString()); verify(messagesManager, times(2)).sendMessage(anyString(), messageArgumentCaptor.capture()); List<Message> messages = messageArgumentCaptor.getAllValues(); assertEquals(MessageType.INFO, messages.get(0).getType()); assertEquals("Task reassigned", messages.get(0).getSubject()); assertEquals("Your publication task for food item /pizza was reclaimed by John Doe.", messages.get(0).getMessage()); assertEquals(MessageType.INFO, messages.get(1).getType()); assertEquals("Task reassigned", messages.get(1).getSubject()); assertEquals("Your unpublication task for food item /pancake was reclaimed by John Doe.", messages.get(1).getMessage()); }
@Test public void triggerListenerSendsSuccessMessageToCurrentUserAndIsRemovedFromScheduler() throws Exception { // GIVEN definition.setAsynchronous(true); definition.setCommand("qux"); setUpForTriggerListenerTests(); JobExecutionContext jec = mock(JobExecutionContext.class); doReturn(new JobResult(true)).when(jec).getResult(); when(jec.getScheduler()).thenReturn(scheduler); AsyncActionExecutor executor = new DefaultAsyncActionExecutor<>(definition, schedulerModuleProvider, ctx, null, i18n); // WHEN executor.execute(item, null); // simulate triggerComplete after execute completed, last parameter (-1) is scheduler internals, we don't use it. triggerListener.triggerComplete(trigger, jec, null); // THEN we only want to make sure message is sent with current user (not system user) verify(messagesManager).sendMessage(eq(TEST_USER), any(Message.class)); // and the current TriggerListener should be removed from scheduler verify(scheduler.getListenerManager(), times(1)).removeTriggerListener(eq(triggerListener.getName())); }
@Test public void triggerListenerSendsErrorMessageToCurrentUserAndIsRemovedFromScheduler() throws Exception { // GIVEN definition.setAsynchronous(true); definition.setCommand("qux"); setUpForTriggerListenerTests(); JobExecutionContext jec = mock(JobExecutionContext.class); doReturn(new JobResult(false)).when(jec).getResult(); when(jec.getScheduler()).thenReturn(scheduler); AsyncActionExecutor executor = new DefaultAsyncActionExecutor<>(definition, schedulerModuleProvider, ctx, null, i18n); // WHEN executor.execute(item, null); // simulate triggerComplete after execute completed, last parameter (-1) is scheduler internals, we don't use it. triggerListener.triggerComplete(trigger, jec, null); // THEN we only want to make sure message is sent with current user (not system user) verify(messagesManager).sendMessage(eq(TEST_USER), any(Message.class)); // and the current TriggerListener should be removed from scheduler verify(scheduler.getListenerManager(), times(1)).removeTriggerListener(eq(triggerListener.getName())); }
@Test public void reclaimingATaskWhoseTaskNameKeyIsNotDefinedReturnsAMessageWhoseTaskNameSingleQuoted() throws Exception { // GIVEN task.setName("approve"); task.setStatus(Task.Status.InProgress); claimTaskActionDefinition.setNotifyPreviousAssignee(true); // WHEN action.execute(); // THEN verify(tasksManager, times(1)).claim(anyString(), anyString()); verify(messagesManager).sendMessage(anyString(), messageArgumentCaptor.capture()); Message message = messageArgumentCaptor.getValue(); assertEquals(MessageType.INFO, message.getType()); assertEquals("Task reassigned", message.getSubject()); assertEquals("Your 'approve' task for food item /article was reclaimed by John Doe.", message.getMessage()); } }
@Test public void reclaimingATaskWhoseTaskNameKeyIsNotDefinedReturnsAMessageWhoseTaskNameSingleQuoted() throws Exception { // GIVEN task1 = createTask("1", "approve", "/pizza"); task1.setStatus(Task.Status.InProgress); task2 = createTask("2", "reject", "/pancake"); task2.setStatus(Task.Status.InProgress); claimTasksActionDefinition.setNotifyPreviousAssignee(true); // WHEN action.execute(); // THEN verify(tasksManager, times(2)).claim(anyString(), anyString()); verify(messagesManager, times(2)).sendMessage(anyString(), messageArgumentCaptor.capture()); List<Message> messages = messageArgumentCaptor.getAllValues(); assertEquals(MessageType.INFO, messages.get(0).getType()); assertEquals("Task reassigned", messages.get(0).getSubject()); assertEquals("Your 'approve' task for food item /pizza was reclaimed by John Doe.", messages.get(0).getMessage()); assertEquals(MessageType.INFO, messages.get(1).getType()); assertEquals("Task reassigned", messages.get(1).getSubject()); assertEquals("Your 'reject' task for food item /pancake was reclaimed by John Doe.", messages.get(1).getMessage()); } }