This repository has been archived by the owner on Nov 9, 2017. It is now read-only.
/
TransMemoryPresenterTest.java
125 lines (97 loc) · 5.88 KB
/
TransMemoryPresenterTest.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package org.zanata.webtrans.client.presenter;
import static org.easymock.EasyMock.and;
import static org.easymock.EasyMock.capture;
import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.isA;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.reset;
import static org.easymock.EasyMock.verify;
import net.customware.gwt.presenter.client.EventBus;
import org.easymock.Capture;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import org.zanata.webtrans.client.events.TransMemoryShorcutCopyHandler;
import org.zanata.webtrans.client.events.TransMemoryShortcutCopyEvent;
import org.zanata.webtrans.client.events.TransUnitSelectionEvent;
import org.zanata.webtrans.client.events.TransUnitSelectionHandler;
import org.zanata.webtrans.client.presenter.TransMemoryPresenter.Display;
import org.zanata.webtrans.client.rpc.CachingDispatchAsync;
import org.zanata.webtrans.shared.model.TranslationMemoryGlossaryItem;
import org.zanata.webtrans.shared.model.WorkspaceContext;
import org.zanata.webtrans.shared.rpc.HasSearchType.SearchType;
import com.google.gwt.cell.client.FieldUpdater;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.view.client.ListDataProvider;
@Test(groups = { "unit-tests" })
public class TransMemoryPresenterTest
{
// object under test
TransMemoryPresenter transMemoryPresenter;
//injected mocks
Display mockDisplay = createMock(Display.class);
EventBus mockEventBus = createMock(EventBus.class);
CachingDispatchAsync mockDispatcher = createMock(CachingDispatchAsync.class);
TransMemoryDetailsPresenter mockTransMemoryDetailsPresenter = createMock(TransMemoryDetailsPresenter.class);
WorkspaceContext mockWorkspaceContext = createMock(WorkspaceContext.class);
@SuppressWarnings("unchecked")
HasValue<SearchType> mockSearchType = createMock(HasValue.class);
HasClickHandlers mockSearchButton = createMock(HasClickHandlers.class);
@SuppressWarnings("unchecked")
Column<TranslationMemoryGlossaryItem, ImageResource> mockDetailsColumn = createMock(Column.class);
@SuppressWarnings("unchecked")
Column<TranslationMemoryGlossaryItem, String> mockCopyColumn = createMock(Column.class);
Capture<TransUnitSelectionHandler> capturedTransUnitSelectionEventHandler = new Capture<TransUnitSelectionHandler>();
Capture<ClickHandler> capturedClearButtonClickHandler = new Capture<ClickHandler>();
Capture<ClickHandler> capturedSearchButtonClickHandler = new Capture<ClickHandler>();
Capture<TransMemoryShorcutCopyHandler> capturedTransMemoryShortcutCopyEventHandler = new Capture<TransMemoryShorcutCopyHandler>();
HasClickHandlers mockClearButton = createMock(HasClickHandlers.class);
@BeforeMethod
public void resetMocks()
{
reset(mockDispatcher, mockDisplay, mockEventBus, mockTransMemoryDetailsPresenter, mockWorkspaceContext);
reset(mockSearchType, mockSearchButton, mockClearButton);
reset(mockDetailsColumn, mockCopyColumn);
capturedTransUnitSelectionEventHandler.reset();
capturedSearchButtonClickHandler.reset();
capturedTransMemoryShortcutCopyEventHandler.reset();
}
public void canBind()
{
expect(mockDisplay.getSearchType()).andReturn(mockSearchType).anyTimes();
mockSearchType.setValue(SearchType.FUZZY);
expectLastCall().once();
expect(mockDisplay.getSearchButton()).andReturn(mockSearchButton).anyTimes();
expect(mockSearchButton.addClickHandler(capture(capturedSearchButtonClickHandler))).andReturn(createMock(HandlerRegistration.class)).once();
expect(mockDisplay.getClearButton()).andReturn(mockClearButton).anyTimes();
expect(mockClearButton.addClickHandler(capture(capturedClearButtonClickHandler))).andReturn(createMock(HandlerRegistration.class)).once();
expect(mockEventBus.addHandler(eq(TransUnitSelectionEvent.getType()), and(capture(capturedTransUnitSelectionEventHandler), isA(TransUnitSelectionHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once();
expect(mockEventBus.addHandler(eq(TransMemoryShortcutCopyEvent.getType()), and(capture(capturedTransMemoryShortcutCopyEventHandler ), isA(TransMemoryShorcutCopyHandler.class)))).andReturn(createMock(HandlerRegistration.class)).once();
expect(mockDisplay.getDetailsColumn()).andReturn(mockDetailsColumn).anyTimes();
//TODO capture field updaters and data provider to check them?
mockDetailsColumn.setFieldUpdater(isA(FieldUpdater.class));
expectLastCall().once();
expect(mockDisplay.getCopyColumn()).andReturn(mockCopyColumn).anyTimes();
mockCopyColumn.setFieldUpdater(isA(FieldUpdater.class));
expectLastCall().once();
//multiple calls may be bad (rendering issues?). May want to inject into
//view and presenter instead.
mockDisplay.setDataProvider(isA(ListDataProvider.class));
expectLastCall().once();
replay(mockDispatcher, mockDisplay, mockEventBus, mockTransMemoryDetailsPresenter, mockWorkspaceContext);
replay(mockSearchType, mockSearchButton, mockClearButton);
replay(mockDetailsColumn, mockCopyColumn);
transMemoryPresenter = new TransMemoryPresenter(mockDisplay, mockEventBus, mockDispatcher, mockTransMemoryDetailsPresenter , mockWorkspaceContext);
transMemoryPresenter.bind();
verify(mockDispatcher, mockDisplay, mockEventBus, mockTransMemoryDetailsPresenter, mockWorkspaceContext);
verify(mockSearchType, mockSearchButton, mockClearButton);
verify(mockDetailsColumn, mockCopyColumn);
}
}