Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
rhbz844820 - fix TargetContentPresenterTest and refactoring along the…
Browse files Browse the repository at this point in the history
… way
  • Loading branch information
Patrick Huang committed Aug 23, 2012
1 parent 91e52fd commit 0361ebe
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 133 deletions.
Expand Up @@ -127,9 +127,9 @@ public class TargetContentsPresenter implements TargetContentsDisplay.Listener,
private final KeyShortcut prevStateShortcut;

@Inject
public TargetContentsPresenter(Provider<TargetContentsDisplay> displayProvider, final CachingDispatchAsync dispatcher, final Identity identity, final EventBus eventBus, final TableEditorMessages messages, final SourceContentsPresenter sourceContentsPresenter, final UserSessionService sessionService, final UserConfigHolder configHolder, UserWorkspaceContext userWorkspaceContext, Scheduler scheduler, ValidationMessagePanelDisplay validationMessagePanel, final KeyShortcutPresenter keyShortcutPresenter, TranslationHistoryPresenter historyPresenter)
public TargetContentsPresenter(TargetContentsDisplay display, final CachingDispatchAsync dispatcher, final Identity identity, final EventBus eventBus, final TableEditorMessages messages, final SourceContentsPresenter sourceContentsPresenter, final UserSessionService sessionService, final UserConfigHolder configHolder, UserWorkspaceContext userWorkspaceContext, ValidationMessagePanelDisplay validationMessagePanel, final KeyShortcutPresenter keyShortcutPresenter, TranslationHistoryPresenter historyPresenter)
{
currentDisplay = displayProvider.get();
currentDisplay = display;
currentDisplay.setListener(this);
if (userWorkspaceContext.hasReadOnlyAccess())
{
Expand Down Expand Up @@ -352,21 +352,6 @@ public void setToViewMode()
}
}

private void fireTransUnitEditAction()
{
dispatcher.execute(new TransUnitEditAction(identity.getPerson(), cellEditor.getTargetCell()), new AsyncCallback<TransUnitEditResult>()
{
@Override
public void onFailure(Throwable caught)
{
}

@Override
public void onSuccess(TransUnitEditResult result)
{
}
});
}
public void showEditors(int editorIndex)
{
Log.debug("enter show editor with editor index:" + editorIndex + " current editor index:" + currentEditorIndex);
Expand All @@ -378,9 +363,8 @@ public void showEditors(int editorIndex)
editor.clearTranslatorList();
validate(editor);
}

revealDisplay();

fireTransUnitEditAction();

if (currentEditorIndex == LAST_INDEX)
{
Expand Down Expand Up @@ -724,7 +708,7 @@ public void moveToNextState(final NavTransUnitEvent.NavigationType nav)

public void saveAndMoveRow(NavTransUnitEvent.NavigationType nav)
{
cellEditor.saveAndMoveRow(nav);
// cellEditor.saveAndMoveRow(nav);
}

@Override
Expand Down
Expand Up @@ -23,6 +23,7 @@

import org.zanata.webtrans.client.events.TransUnitSaveEvent;
import org.zanata.webtrans.client.events.TransUnitSaveEventHandler;
import org.zanata.webtrans.client.rpc.NoOpAsyncCallback;
import org.zanata.webtrans.client.service.TransUnitSaveService;
import org.zanata.webtrans.client.service.TransUnitsDataModel;
import org.zanata.webtrans.client.editor.table.GetTransUnitActionContext;
Expand All @@ -34,13 +35,17 @@
import org.zanata.webtrans.client.events.NavTransUnitHandler;
import org.zanata.webtrans.client.events.WorkspaceContextUpdateEvent;
import org.zanata.webtrans.client.events.WorkspaceContextUpdateEventHandler;
import org.zanata.webtrans.client.service.TranslatorInteractionService;
import org.zanata.webtrans.client.view.TransUnitEditDisplay;
import org.zanata.webtrans.client.view.TransUnitListDisplay;
import org.zanata.webtrans.shared.model.TransUnit;
import org.zanata.webtrans.shared.model.WorkspaceContext;
import org.zanata.webtrans.shared.rpc.TransUnitEditAction;
import org.zanata.webtrans.shared.rpc.TransUnitEditResult;
import com.allen_sauer.gwt.log.client.Log;
import com.google.common.base.Objects;
import com.google.gwt.user.cellview.client.LoadingStateChangeEvent;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.view.client.SelectionChangeEvent;
import com.google.inject.Inject;

Expand All @@ -65,6 +70,7 @@ public class TransUnitEditPresenter extends WidgetPresenter<TransUnitEditDisplay
private final SourceContentsPresenter sourceContentsPresenter;
private final TargetContentsPresenter targetContentsPresenter;
private final TransUnitSaveService saveService;
private final TranslatorInteractionService translatorService;
private final TransUnitsDataModel dataModel;

private TransUnit selectedTransUnit = null;
Expand All @@ -76,6 +82,7 @@ public TransUnitEditPresenter(TransUnitEditDisplay display, EventBus eventBus, N
SourceContentsPresenter sourceContentsPresenter,
TargetContentsPresenter targetContentsPresenter,
TransUnitSaveService saveService,
TranslatorInteractionService translatorService,
WorkspaceContext workspaceContext)
{
super(display, eventBus);
Expand All @@ -86,6 +93,7 @@ public TransUnitEditPresenter(TransUnitEditDisplay display, EventBus eventBus, N
this.sourceContentsPresenter = sourceContentsPresenter;
this.targetContentsPresenter = targetContentsPresenter;
this.saveService = saveService;
this.translatorService = translatorService;

initViewOnWorkspaceContext(workspaceContext.isReadOnly());

Expand Down Expand Up @@ -145,6 +153,7 @@ public void onSelectionChange(SelectionChangeEvent event)
targetContentsPresenter.setValue(selectedTransUnit, null);
sourceContentsPresenter.selectedSource();
targetContentsPresenter.showEditors(0);
translatorService.transUnitSelected(selectedTransUnit);
}
}

Expand Down
Expand Up @@ -33,8 +33,7 @@

import java.util.ArrayList;
import java.util.Arrays;

import javax.inject.Provider;
import java.util.List;

import net.customware.gwt.presenter.client.EventBus;

Expand All @@ -46,6 +45,7 @@
import org.mockito.MockitoAnnotations;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.zanata.common.ContentState;
import org.zanata.webtrans.client.events.CopyDataToEditorEvent;
import org.zanata.webtrans.client.events.EnableModalNavigationEvent;
import org.zanata.webtrans.client.events.InsertStringInEditorEvent;
Expand All @@ -54,6 +54,7 @@
import org.zanata.webtrans.client.events.RequestValidationEvent;
import org.zanata.webtrans.client.events.RunValidationEvent;
import org.zanata.webtrans.client.events.TransUnitEditEvent;
import org.zanata.webtrans.client.events.TransUnitSaveEvent;
import org.zanata.webtrans.client.events.UserConfigChangeEvent;
import org.zanata.webtrans.client.presenter.KeyShortcutPresenter;
import org.zanata.webtrans.client.presenter.SourceContentsPresenter;
Expand All @@ -69,34 +70,30 @@
import org.zanata.webtrans.shared.model.TransUnit;
import org.zanata.webtrans.shared.model.UserWorkspaceContext;

import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.event.shared.GwtEvent;

@Test(groups = { "unit-tests" })
public class TargetContentsPresenterTest
{
public static final int PAGE_SIZE = 2;
private TargetContentsPresenter presenter;

@Mock private Provider<TargetContentsDisplay> displayProvider;
@Mock private EventBus eventBus;
@Mock private TableEditorMessages tableEditorMessages;
@Mock private SourceContentsPresenter sourceContentPresenter;
@Mock private KeyShortcutPresenter keyShortcutPresenter;
@Mock private NavigationMessages navMessages;
@Mock private UserWorkspaceContext userWorkspaceContext;
@Mock private Scheduler scheduler;
@Mock private TargetContentsDisplay display1;
@Mock private TargetContentsDisplay display2;
@Mock private TargetContentsDisplay display;
@Mock private ValidationMessagePanelDisplay validationPanel;
@Mock
private ToggleEditor editor, editor2, editor3;
@Mock
private Identity identity;
@Mock private TransUnit transUnit;
@Mock private UserConfigHolder configHolder;
@Mock private TransUnitsEditModel cellEditor;

private final ArrayList<String> targetContents = Lists.newArrayList("", "");
@Captor private ArgumentCaptor<RunValidationEvent> runValidationEventCaptor;
Expand All @@ -115,7 +112,7 @@ public class TargetContentsPresenterTest
public void beforeMethod()
{
MockitoAnnotations.initMocks(this);
presenter = new TargetContentsPresenter(displayProvider, dispatcher, identity, eventBus, tableEditorMessages, sourceContentPresenter, sessionService, configHolder, userWorkspaceContext, scheduler, validationPanel, keyShortcutPresenter, historyPresenter);
presenter = new TargetContentsPresenter(display, dispatcher, identity, eventBus, tableEditorMessages, sourceContentPresenter, sessionService, configHolder, userWorkspaceContext, validationPanel, keyShortcutPresenter, historyPresenter);

verify(eventBus).addHandler(UserConfigChangeEvent.getType(), presenter);
verify(eventBus).addHandler(RequestValidationEvent.getType(), presenter);
Expand All @@ -125,13 +122,7 @@ public void beforeMethod()
verify(eventBus).addHandler(TransUnitEditEvent.getType(), presenter);
verify(eventBus).addHandler(EnableModalNavigationEvent.getType(), presenter);

presenter.setCellEditor(cellEditor);

when(displayProvider.get()).thenReturn(display1).thenReturn(display2);
presenter.initWidgets();

verify(display1).setListener(presenter);
verify(display2).setListener(presenter);
verify(display).setListener(presenter);
}

@Test
Expand All @@ -142,50 +133,28 @@ public void canSetToViewMode()

presenter.setToViewMode();

verify(display1).setToView();
verify(display1).showButtons(false);
verifyZeroInteractions(display2);
verify(display).setToView();
verify(display).showButtons(false);
}

@Test
public void canGetNextTargetContentsDisplay()
public void canSetValueToDisplay()
{
//given NOT read only mode, enter NOT as save
String buttonTitle = "Save (Ctrl + Enter)";
String findMessages = "abc";
when(transUnit.getTargets()).thenReturn(targetContents);
// when(workspaceContext.isReadOnly()).thenReturn(false);
when(userWorkspaceContext.hasReadOnlyAccess()).thenReturn(false);
when(configHolder.isEnterSavesApproved()).thenReturn(false);
when(navMessages.editSaveShortcut()).thenReturn(buttonTitle);

//when selecting row 1
TargetContentsDisplay result = presenter.setValue(transUnit, findMessages);

assertThat(result, sameInstance(display1));
verify(display1).setTargets(targetContents);
verify(display1).setFindMessage(findMessages);
verifyNoMoreInteractions(display1);
verifyZeroInteractions(display2);
}

@Test
public void canGetNextTargetContentsDisplayWithDifferentButtonTitle()
{
//given read only mode, enter as save option
String buttonTitle = "Save (Enter)";
String findMessages = "abc";
when(transUnit.getTargets()).thenReturn(targetContents);
when(configHolder.isEnterSavesApproved()).thenReturn(true);
when(navMessages.editSaveWithEnterShortcut()).thenReturn(buttonTitle);

//when selecting row 2
TargetContentsDisplay result = presenter.setValue(transUnit, findMessages);

assertThat(result, sameInstance(display2));
verify(display2).setTargets(targetContents);
verify(display2).setFindMessage(findMessages);
verifyNoMoreInteractions(display2);
verifyZeroInteractions(display1);
assertThat(result, sameInstance(display));
verify(display).setTargets(targetContents);
verify(display).setFindMessage(findMessages);
verifyNoMoreInteractions(display);
}

@Test
Expand Down Expand Up @@ -219,9 +188,14 @@ public void willNotValidateIfEditorIsNotCurrent()
@Test
public void canSaveAsFuzzy()
{
when(display.getNewTargets()).thenReturn(targetContents);
presenter.saveAsFuzzy();

verify(cellEditor).acceptFuzzyEdit();
ArgumentCaptor<TransUnitSaveEvent> captor = ArgumentCaptor.forClass(TransUnitSaveEvent.class);
verify(eventBus).fireEvent(captor.capture());
TransUnitSaveEvent event = captor.getValue();
assertThat(event.getTargets(), Matchers.<List<String>>equalTo(targetContents));
assertThat(event.getStatus(), equalTo(ContentState.NeedReview));
}

@Test
Expand All @@ -234,23 +208,12 @@ public void canCopySource()

verify(editor).setTextAndValidate("source");
verify(editor).setViewMode(ToggleEditor.ViewMode.EDIT);
verify(display1).showButtons(true);
verify(display).showButtons(true);
verify(editor).autoSize();
verify(editor).setFocus();
verify(eventBus).fireEvent(isA(NotificationEvent.class));
}

@Test
public void toggleViewIsDeferredExecuted()
{
when(editor.getIndex()).thenReturn(99);
presenter.showEditors(TargetContentsPresenter.NO_OPEN_EDITOR);

presenter.toggleView(editor);

verify(display1).focusEditor(99);
}

@Test
public void isDisplayButtonsReturnFromUserConfig()
{
Expand All @@ -265,7 +228,7 @@ public void isDisplayButtonsReturnFromUserConfig()
public void canGetNewTargets()
{
presenter.showEditors(TargetContentsPresenter.NO_OPEN_EDITOR);
when(display2.getNewTargets()).thenReturn(targetContents);
when(display.getNewTargets()).thenReturn(targetContents);

ArrayList<String> result = presenter.getNewTargets();

Expand All @@ -287,8 +250,7 @@ public void canChangeViewOnUserConfigChange()

presenter.onValueChanged(new UserConfigChangeEvent());

verify(display1).showButtons(configHolder.isDisplayButtons());
verify(display2).showButtons(configHolder.isDisplayButtons());
verify(display).showButtons(configHolder.isDisplayButtons());
}

@Test
Expand Down Expand Up @@ -317,50 +279,17 @@ public void onRequestValidationWillFireRunValidationEventIfItsEditing()

private void givenCurrentEditorsAs(ToggleEditor... currentEditors)
{
when(display1.getEditors()).thenReturn(Lists.newArrayList(currentEditors));
when(display1.isEditing()).thenReturn(true);
when(display.getEditors()).thenReturn(Lists.newArrayList(currentEditors));
when(display.isEditing()).thenReturn(true);
presenter.showEditors(0);
}

@Test
public void canSaveAndMoveRow()
{
presenter.saveAndMoveRow(NavTransUnitEvent.NavigationType.NextEntry);

verify(cellEditor).saveAndMoveRow(NavTransUnitEvent.NavigationType.NextEntry);
}

@Test
public void onCancelCanResetTextBack()
{
givenCurrentEditorsAs(editor, editor2, editor3);
when(cellEditor.getTargetCell()).thenReturn(transUnit);
when(transUnit.getTargets()).thenReturn(Lists.newArrayList("a", "b", "c"));
when(editor.getIndex()).thenReturn(0);
when(editor2.getIndex()).thenReturn(1);
when(editor3.getIndex()).thenReturn(2);

presenter.onCancel();

verify(display1).setToView();
verify(editor).setTextAndValidate("a");
verify(editor2).setTextAndValidate("b");
verify(editor3).setTextAndValidate("c");
}

@Test
public void onCancelCanSetTextBackToNull()
{
givenCurrentEditorsAs(editor, editor2, editor3);
when(cellEditor.getTargetCell()).thenReturn(transUnit);
when(transUnit.getTargets()).thenReturn(null);

presenter.onCancel();

verify(display1).setToView();
verify(editor).setTextAndValidate(null);
verify(editor2).setTextAndValidate(null);
verify(editor3).setTextAndValidate(null);
verify(eventBus).fireEvent(TransUnitSaveEvent.CANCEL_EDIT_EVENT);
}

@Test
Expand Down

0 comments on commit 0361ebe

Please sign in to comment.