@Test public void testShowEditorsInReadOnlyMode() { // Given: userWorkspaceContext.setProjectActive(false); userWorkspaceContext.setHasEditTranslationAccess(false); selectedTU = currentPageRows.get(0); ArrayList<ToggleEditor> currentEditors = Lists.newArrayList(editor); when(editor.getId()).thenReturn(selectedTU.getId()); ArrayList<ToggleEditor> previousEditors = Lists.newArrayList(editor2); presenter.setStatesForTesting(null, 0, display); when(display.getId()).thenReturn(selectedTU.getId()); when(display.getEditors()).thenReturn(previousEditors, currentEditors); when(sourceContentPresenter.getSourceContent(selectedTU.getId())) .thenReturn(Optional.of("source")); // When: presenter.setSelected(selectedTU.getId()); // Then: verify(editorTranslators).clearTranslatorList(previousEditors); verify(editor).clearTranslatorList(); verify(display).showButtons(false); verify(display).setToMode(ToggleEditor.ViewMode.VIEW); verify(editorKeyShortcuts).enableNavigationContext(); }
@Test public void willNotMoveToNextEntryIfTranslationHasError() { // Given: selected display and focus on first entry ValidationMessages messages = mock(ValidationMessages.class); Map<ValidationAction, List<String>> errorMessage = Maps.newHashMap(); errorMessage.put( new HtmlXmlTagValidation(ValidationId.HTML_XML, messages), new ArrayList<String>()); selectedTU = currentPageRows.get(0); when(display.getNewTargets()).thenReturn(NEW_TARGETS); when(display.getCachedTargets()).thenReturn(CACHED_TARGETS); when(display.getId()).thenReturn(selectedTU.getId()); when(display.getEditors()).thenReturn(Lists.newArrayList(editor)); when(display.getErrorMessages()).thenReturn(errorMessage); presenter.setStatesForTesting(selectedTU.getId(), 0, display); // When: presenter.saveAsApprovedAndMoveNext(selectedTU.getId()); // Then: verify(validationWarning) .center( selectedTU.getId(), userWorkspaceContext.getSelectedDoc(), NEW_TARGETS, errorMessage); }
@Test public void testOnInsertString() { // Given: selectedTU = currentPageRows.get(0); when(editor.getId()).thenReturn(selectedTU.getId()); when(display.getId()).thenReturn(selectedTU.getId()); when(display.getEditors()).thenReturn(Lists.newArrayList(editor)); when(tableEditorMessages.notifyCopied()).thenReturn("copied"); when(sourceContentPresenter.getSourceContent(selectedTU.getId())) .thenReturn(Optional.of("source content")); presenter.setStatesForTesting(selectedTU.getId(), 0, display); // When: presenter.onInsertString(new InsertStringInEditorEvent("", "suggestion")); // Then: verify(editor).insertTextInCursorPosition("suggestion"); verify(eventBus, atLeastOnce()).fireEvent(eventCaptor.capture()); NotificationEvent notificationEvent = TestFixture.extractFromEvents(eventCaptor.getAllValues(), NotificationEvent.class); MatcherAssert.assertThat(notificationEvent.getMessage(), Matchers.equalTo("copied")); RunValidationEvent runValidationEvent = TestFixture.extractFromEvents(eventCaptor.getAllValues(), RunValidationEvent.class); assertThat(runValidationEvent.getSourceContent(), equalTo("source content")); }
@Test public void willSaveAndMoveToNextRow() { // Given: selected display and there is only one entry(no plural or last entry of plural) selectedTU = currentPageRows.get(0); when(display.getNewTargets()).thenReturn(NEW_TARGETS); when(display.getCachedTargets()).thenReturn(CACHED_TARGETS); when(display.getId()).thenReturn(selectedTU.getId()); when(display.getEditors()).thenReturn(Lists.newArrayList(editor)); presenter.setStatesForTesting(selectedTU.getId(), 0, display); // When: presenter.saveAsApprovedAndMoveNext(selectedTU.getId()); // Then: verify(eventBus, atLeastOnce()).fireEvent(eventCaptor.capture()); TransUnitSaveEvent saveEvent = TestFixture.extractFromEvents(eventCaptor.getAllValues(), TransUnitSaveEvent.class); assertThat(saveEvent.getTransUnitId(), equalTo(selectedTU.getId())); assertThat(saveEvent.getTargets(), Matchers.equalTo(NEW_TARGETS)); assertThat(saveEvent.getStatus(), equalTo(ContentState.Translated)); NavTransUnitEvent navEvent = TestFixture.extractFromEvents(eventCaptor.getAllValues(), NavTransUnitEvent.class); assertThat(navEvent.getRowType(), equalTo(NavTransUnitEvent.NavigationType.NextEntry)); }
@Test public void canGetCurrentTransUnitId() { selectedTU = currentPageRows.get(0); presenter.setStatesForTesting(selectedTU.getId(), 0, display); TransUnitId result = presenter.getCurrentTransUnitIdOrNull(); assertThat(result, Matchers.sameInstance(selectedTU.getId())); }
@Test public void testSetFocus() { presenter.setStatesForTesting(selectedTU.getId(), 99, display); presenter.setFocus(); // current editor index will be corrected if out of bound verify(display).focusEditor(0); }
@Test public void canGetNewTargets() { selectedTU = currentPageRows.get(0); when(display.getNewTargets()).thenReturn(NEW_TARGETS); presenter.setStatesForTesting(selectedTU.getId(), 0, display); List<String> result = presenter.getNewTargets(); MatcherAssert.assertThat(result, Matchers.sameInstance(NEW_TARGETS)); }
@Test public void willIgnoreRejectIfItsAlreadyRejectedState() { selectedTU = currentPageRows.get(1); when(display.getId()).thenReturn(selectedTU.getId()); when(display.getCachedState()).thenReturn(ContentState.Rejected); presenter.setStatesForTesting(selectedTU.getId(), 0, display); presenter.rejectTranslation(selectedTU.getId()); verifyZeroInteractions(eventBus); }
@Test public void canMoveToPreviousEditorInPluralForm() { // Given: current editor index is 1 presenter.setStatesForTesting(selectedTU.getId(), 1, display); // When: presenter.moveToPreviousEntry(); // Then: verify(display).focusEditor(0); verifyZeroInteractions(eventBus); }
@Test public void canShowHistory() { // Given: selectedTU = currentPageRows.get(0); presenter.setStatesForTesting(selectedTU.getId(), 0, display); // When: presenter.showHistory(selectedTU.getId()); // Then: verify(historyPresenter).showTranslationHistory(selectedTU.getId()); }
@Test public void canMoveToPreviousEntry() { // Given: default current editor index is 0 TargetContentsPresenter spyPresenter = spy(presenter); doNothing().when(spyPresenter).savePendingChangesIfApplicable(); // When: spyPresenter.moveToPreviousEntry(); // Then: verify(spyPresenter).savePendingChangesIfApplicable(); verify(eventBus).fireEvent(NavTransUnitEvent.PREV_ENTRY_EVENT); }
@Test public void canMoveToNextEditorInPluralForm() { // Given: current editor index is 0 when(display.getEditors()).thenReturn(Lists.newArrayList(editor, editor2)); presenter.setStatesForTesting(selectedTU.getId(), 0, display); // When: presenter.moveToNextEntry(); // Then: verify(display).focusEditor(1); verifyZeroInteractions(eventBus); }
@Test public void canMoveToNextEditorInPluralFormOnFirstRow() { // Given: current editor index is last index (represent last entry from move to previous) when(display.getEditors()).thenReturn(Lists.newArrayList(editor, editor2)); presenter.setStatesForTesting(selectedTU.getId(), TargetContentsPresenter.LAST_INDEX, display); // When: presenter.moveToNextEntry(); // Then: verify(display).focusEditor(1); verifyZeroInteractions(eventBus); }
@Test public void testOnFocus() { selectedTU = currentPageRows.get(0); TransUnitId oldSelection = currentPageRows.get(1).getId(); presenter.setStatesForTesting(oldSelection, 0, display); presenter.onEditorClicked(selectedTU.getId(), 1); verify(eventBus).fireEvent(eventCaptor.capture()); TableRowSelectedEvent tableRowSelectedEvent = TestFixture.extractFromEvents(eventCaptor.getAllValues(), TableRowSelectedEvent.class); assertThat(tableRowSelectedEvent.getSelectedId(), Matchers.equalTo(selectedTU.getId())); }
@Test public void willMoveToNextEntryIfItIsPluralAndNotAtLastEntry() { // Given: selected display and focus on first entry selectedTU = currentPageRows.get(0); when(display.getId()).thenReturn(selectedTU.getId()); when(display.getEditors()).thenReturn(Lists.newArrayList(editor, editor2)); presenter.setStatesForTesting(selectedTU.getId(), 0, display); // When: presenter.saveAsApprovedAndMoveNext(selectedTU.getId()); // Then: verify(display).focusEditor(1); }
@Test public void rejectTranslationWillForceComment() { selectedTU = currentPageRows.get(1); when(display.getId()).thenReturn(selectedTU.getId()); presenter.setStatesForTesting(selectedTU.getId(), 0, display); presenter.rejectTranslation(selectedTU.getId()); verify(eventBus).fireEvent(eventCaptor.capture()); CommentBeforeSaveEvent commentBeforeSaveEvent = extractFromEvents(eventCaptor.getAllValues(), CommentBeforeSaveEvent.class); assertThat( commentBeforeSaveEvent.getSaveEvent().getStatus(), Matchers.equalTo(ContentState.Rejected)); }
@Test public void canConfirmSavedOnSavingState() { selectedTU = currentPageRows.get(1); when(display.getId()).thenReturn(selectedTU.getId()); when(display.getEditingState()).thenReturn(TargetContentsDisplay.EditingState.SAVING); presenter.setStatesForTesting(selectedTU.getId(), 0, display); presenter.confirmSaved(selectedTU); verify(display) .updateCachedTargetsAndVersion( selectedTU.getTargets(), selectedTU.getVerNum(), selectedTU.getStatus()); verify(display).setState(TargetContentsDisplay.EditingState.SAVED); }
@Test public void canConfirmSavedOnSavedState() { selectedTU = currentPageRows.get(1); when(display.getId()).thenReturn(selectedTU.getId()); when(display.getEditingState()).thenReturn(TargetContentsDisplay.EditingState.SAVED); presenter.setStatesForTesting(selectedTU.getId(), 0, display); presenter.confirmSaved(selectedTU); InOrder inOrder = Mockito.inOrder(display); inOrder.verify(display).setValueAndCreateNewEditors(selectedTU); inOrder.verify(display).refresh(); inOrder.verify(display).setState(TargetContentsDisplay.EditingState.SAVED); }
@Test public void canUpdateRowIfInCurrentDisplaysAndIsCurrentRow() { selectedTU = currentPageRows.get(2); presenter.setStatesForTesting(selectedTU.getId(), 0, display); when(display.getId()).thenReturn(selectedTU.getId()); TransUnit updatedTransUnit = TestFixture.makeTransUnit(selectedTU.getId().getId()); presenter.updateRow(updatedTransUnit); verify(display).setValueAndCreateNewEditors(updatedTransUnit); verify(display).refresh(); verify(display).getEditors(); verify(editorTranslators).updateTranslator(display.getEditors(), selectedTU.getId()); }
@Test public void canMoveToNextEntry() { // Given: current editor index is 1 TargetContentsPresenter spyPresenter = spy(presenter); spyPresenter.setStatesForTesting(selectedTU.getId(), 1, display); doNothing().when(spyPresenter).savePendingChangesIfApplicable(); // When: spyPresenter.moveToNextEntry(); // Then: verify(spyPresenter).savePendingChangesIfApplicable(); verify(eventBus).fireEvent(NavTransUnitEvent.NEXT_ENTRY_EVENT); }
@Test public void canCopySource() { // Given: selected one trans unit selectedTU = currentPageRows.get(0); when(display.getId()).thenReturn(selectedTU.getId()); when(display.getEditors()).thenReturn(Lists.newArrayList(editor)); presenter.setStatesForTesting(selectedTU.getId(), 0, display); when(sourceContentPresenter.getSelectedSource()).thenReturn("source"); presenter.copySource(editor, selectedTU.getId()); verify(editor).setTextAndValidate("source"); verify(editor).setFocus(); verify(eventBus).fireEvent(isA(NotificationEvent.class)); }
@Test public void willIgnoreSavePendingIfNoChange() { // Given: display new targets is equal to cached targets selectedTU = currentPageRows.get(0); presenter.setStatesForTesting(selectedTU.getId(), 0, display); when(display.getCachedTargets()).thenReturn(CACHED_TARGETS); when(display.getNewTargets()).thenReturn(CACHED_TARGETS); // When: presenter.savePendingChangesIfApplicable(); // Then: verifyZeroInteractions(eventBus); verify(display, never()).revertEditorContents(); }
@Test public void canCopySourceForActiveRow() { // Given: current editor is focused TargetContentsPresenter spyPresenter = spy(presenter); selectedTU = currentPageRows.get(0); spyPresenter.setStatesForTesting(selectedTU.getId(), 0, display); doNothing().when(spyPresenter).copySource(editor, selectedTU.getId()); when(editor.isFocused()).thenReturn(true); when(display.getEditors()).thenReturn(Lists.newArrayList(editor)); // When: spyPresenter.copySourceForActiveRow(); // Then: verify(spyPresenter).copySource(editor, selectedTU.getId()); }
@Test public void testOnTransMemoryCopy() { when(tableEditorMessages.notifyCopied()).thenReturn("copied"); selectedTU = currentPageRows.get(0); when(display.getId()).thenReturn(selectedTU.getId()); when(display.getEditors()).thenReturn(Lists.newArrayList(editor)); presenter.setStatesForTesting(selectedTU.getId(), 0, display); presenter.onDataCopy(new CopyDataToEditorEvent(Arrays.asList("target"))); verify(editor).setTextAndValidate("target"); verify(eventBus, atLeastOnce()).fireEvent(eventCaptor.capture()); NotificationEvent notificationEvent = TestFixture.extractFromEvents(eventCaptor.getAllValues(), NotificationEvent.class); MatcherAssert.assertThat(notificationEvent.getMessage(), Matchers.equalTo("copied")); }
@Test public void onTransUnitEditEvent() { selectedTU = currentPageRows.get(0); TransUnitEditEvent event = mock(TransUnitEditEvent.class); when(event.getSelectedTransUnitId()).thenReturn(selectedTU.getId()); ArrayList<ToggleEditor> currentEditors = Lists.newArrayList(editor); presenter.setStatesForTesting(selectedTU.getId(), 0, display); when(display.getEditors()).thenReturn(currentEditors); presenter.onTransUnitEdit(event); InOrder inOrder = inOrder(editorTranslators); inOrder.verify(editorTranslators).clearTranslatorList(currentEditors); inOrder.verify(editorTranslators).updateTranslator(currentEditors, selectedTU.getId()); verifyNoMoreInteractions(editorTranslators); }
@BeforeMethod public void beforeMethod() { MockitoAnnotations.initMocks(this); configHolder = new UserConfigHolder(); when(userOptionsService.getConfigHolder()).thenReturn(configHolder); userWorkspaceContext = TestFixture.userWorkspaceContext(); presenter = new TargetContentsPresenter( displayProvider, editorTranslators, eventBus, tableEditorMessages, sourceContentPresenter, userWorkspaceContext, editorKeyShortcuts, historyPresenter, userOptionsService, saveAsApprovedConfirmation, reviewCommentPresenter); verify(eventBus).addHandler(UserConfigChangeEvent.TYPE, presenter); verify(eventBus).addHandler(RequestValidationEvent.getType(), presenter); verify(eventBus).addHandler(InsertStringInEditorEvent.getType(), presenter); verify(eventBus).addHandler(CopyDataToEditorEvent.getType(), presenter); verify(eventBus).addHandler(TransUnitEditEvent.getType(), presenter); verify(eventBus).addHandler(TransUnitEditEvent.getType(), presenter); verify(eventBus).addHandler(WorkspaceContextUpdateEvent.getType(), presenter); verify(saveAsApprovedConfirmation).setListener(presenter); when(displayProvider.get()).thenReturn(display); presenter.showData(currentPageRows); }
@Test public void canAddUndoLink() { UndoLink undoLink = mock(UndoLink.class); presenter.addUndoLink(0, undoLink); verify(display).addUndo(undoLink); }
@Test public void testIsReadOnly() { userWorkspaceContext.setProjectActive(false); boolean readOnly = presenter.isReadOnly(); assertThat(readOnly, Matchers.is(true)); }
@Test public void testIsDisplayButtons() { userWorkspaceContext.setHasEditTranslationAccess(false); userWorkspaceContext.setHasReviewAccess(false); boolean displayButtons = presenter.isDisplayButtons(); assertThat(displayButtons, Matchers.is(false)); }
@Test public void onCancelCanResetTextBack() { // Given: selectedTU = currentPageRows.get(0); when(display.getCachedTargets()).thenReturn(CACHED_TARGETS); when(display.getId()).thenReturn(selectedTU.getId()); ArrayList<ToggleEditor> currentEditors = Lists.newArrayList(editor); when(display.getEditors()).thenReturn(currentEditors); presenter.setStatesForTesting(selectedTU.getId(), 0, display); // When: presenter.onCancel(selectedTU.getId()); // Then: verify(display).revertEditorContents(); verify(display).highlightSearch(anyString()); verify(display).focusEditor(0); }