@Override public void sendUserMessage(final String user, final Message message) { messagesManager.sendMessage(user, message); }
@Override public void sendLocalMessage(Message message) { messagesManager.sendLocalMessage(message); }
@Override public void broadcastMessage(Message message) { messagesManager.broadcastMessage(message); }
@Override public void sendGroupMessage(final String group, final Message message) { messagesManager.sendGroupMessage(group, message); }
MessagesManager createMockMessagesManager() { MessagesManager messagesManager = mock(MessagesManager.class); doAnswer(new Answer() { @SuppressWarnings("unchecked") @Override public Object answer(InvocationOnMock invocation) throws Throwable { final List<MessageType> types = (List<MessageType>) invocation.getArguments()[1]; final Map<String, Boolean> sortCriteria = (Map<String, Boolean>) invocation.getArguments()[2]; int limit = (Integer) invocation.getArguments()[3]; int offset = (Integer) invocation.getArguments()[4]; return getMockList(types, sortCriteria).subList(offset, offset + limit); } }).when(messagesManager).getMessageBatch(anyString(), anyListOf(MessageType.class), anyMapOf(String.class, Boolean.class), anyInt(), anyInt()); doAnswer(new Answer() { @Override @SuppressWarnings("unchecked") public Object answer(InvocationOnMock invocation) throws Throwable { return getMockList((List<MessageType>) invocation.getArguments()[1], Collections.<String, Boolean>emptyMap()).size(); } }).when(messagesManager).getMessagesAmount(anyString(), anyListOf(MessageType.class)); return messagesManager; }
private void removeMessage(String messageId) { messagesManager.clearMessage(MgnlContext.getUser().getName(), messageId); }
@Test public void testSendGroupMessageForwardsToMessagesManager() { // GIVEN final String testGroup = "test"; final Message message = mock(Message.class); // WHEN appInstanceControllerImpl.sendGroupMessage(testGroup, message); // THEN verify(messagesManager).sendGroupMessage(testGroup, 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); }
public void executeAction(String actionName, Object... parameters) { try { actionExecutor.execute(actionName, parameters); } catch (ActionExecutionException e) { Message error = new Message(MessageType.ERROR, "An error occurred while executing an action.", e.getMessage()); log.error("An error occurred while executing action [{}]", actionName, e); messagesManager.sendLocalMessage(error); } } }
@Test public void testBroadcastMessageForwardsToMessagesManager() { // GIVEN final Message message = mock(Message.class); // WHEN appInstanceControllerImpl.broadcastMessage(message); // THEN verify(messagesManager).broadcastMessage(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()); }
private void showMessage(String messageText, MessageType type) { final Message message = new Message(); message.setMessage(messageText); message.setType(type); messagesManager.sendLocalMessage(message); }
@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 testSendLocalMessageForwardsToMessagesManager() { // GIVEN final Message message = mock(Message.class); // WHEN appInstanceControllerImpl.sendLocalMessage(message); // THEN verify(messagesManager).sendLocalMessage(message); }
@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())); }
private AppDescriptor getAppDescriptor(String name) throws RuntimeException { final DefinitionProvider<AppDescriptor> definitionProvider; try { definitionProvider = appDescriptorRegistry.getProvider(name); } catch (Registry.NoSuchDefinitionException | IllegalStateException e) { Message errorMessage = new Message(); errorMessage.setType(MessageType.ERROR); errorMessage.setSubject(i18n.translate("ui-framework.app.appdescriptorReadError.subject")); errorMessage.setMessage(String.format(i18n.translate("ui-framework.app.appdescriptorReadError.message"), name)); messagesManager.sendLocalMessage(errorMessage); throw new RuntimeException(e); } return definitionProvider.get(); }
@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 testStubAppLaunchedInCaseOfStartUpFailure() throws Exception { // GIVEN appDescriptor.setAppClass(FailingToStartApp.class); setupSubAppComponents(); // WHEN appInstanceControllerImpl.start(new DefaultLocation("app", TEST_APP, FAILING_SUB_APP)); // THEN assertThat(appInstanceControllerImpl.getApp(), instanceOf(FailedAppStub.class)); verify(messagesManager).sendLocalMessage(any(Message.class)); }
@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 testStubSubAppLaunchedInCaseOfStartUpFailure() throws Exception { // GIVEN setupSubAppComponents(); // WHEN appInstanceControllerImpl.openSubApp(new DefaultLocation("app", TEST_APP, FAILING_SUB_APP)); // THEN SubAppContext activeSubAppContext = appInstanceControllerImpl.getActiveSubAppContext(); assertThat(activeSubAppContext.getSubApp(), instanceOf(FailedSubAppStub.class)); verify(messagesManager).sendLocalMessage(any(Message.class)); }