Skip to content

Commit e6c25ad

Browse files
committed
Actual function tests for the Overview, One stupid test case for ResxChooser and a stab at useful tests for Translation view
1 parent ff49bc6 commit e6c25ad

File tree

4 files changed

+116
-8
lines changed

4 files changed

+116
-8
lines changed

src/main/java/de/vogel612/helper/ui/ResxChooser.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ public ResxChooser() {
5656
window.add(chooseFileset);
5757
window.add(submit);
5858

59+
// unit-test related
60+
submit.setName("submit");
61+
chooseFileset.setName("fileset");
62+
rightLocaleChange.setName("right");
63+
leftLocaleChange.setName("left");
64+
5965
fileChooser.setFileFilter(new FileNameExtensionFilter("Resx files", "resx"));
6066
fileChooser.setMultiSelectionEnabled(false);
6167
fileChooser.setDialogTitle("Choose a resx file kind to translate");
@@ -89,7 +95,9 @@ public ResxChooser() {
8995

9096
public void setFileset(Path fileset) {
9197
this.fileset = fileset;
92-
onFilesetChange();
98+
if (fileset != null) { // FIXME should we even allow null??
99+
onFilesetChange();
100+
}
93101
}
94102

95103
private void onFilesetChange() {

src/test/java/de/vogel612/helper/ui/OverviewViewTests.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,39 @@
11
package de.vogel612.helper.ui;
22

3+
import static junit.framework.Assert.assertEquals;
34
import static org.assertj.swing.finder.WindowFinder.findFrame;
45
import static org.mockito.Matchers.any;
6+
import static org.mockito.Matchers.eq;
57
import static org.mockito.Mockito.mock;
68
import static org.mockito.Mockito.verify;
79
import static org.mockito.Mockito.verifyNoMoreInteractions;
810

911
import org.assertj.swing.core.GenericTypeMatcher;
12+
import org.assertj.swing.data.TableCell;
1013
import org.assertj.swing.edt.FailOnThreadViolationRepaintManager;
1114
import org.assertj.swing.fixture.FrameFixture;
1215
import org.assertj.swing.junit.testcase.AssertJSwingJUnitTestCase;
1316
import org.junit.Before;
1417
import org.junit.Test;
1518

16-
import javax.swing.*;
19+
import de.vogel612.helper.data.Translation;
20+
1721
import java.awt.*;
1822
import java.awt.event.WindowEvent;
23+
import java.util.Arrays;
1924
import java.util.function.Consumer;
2025

2126
/**
2227
* Created by vogel612 on 26.01.16.
2328
*/
2429
public class OverviewViewTests extends AssertJSwingJUnitTestCase {
2530

31+
private static final Translation[] dataLeft = new Translation[] {
32+
new Translation("", "key", "value"), new Translation("", "another_key", "some better value")
33+
};
34+
private static final Translation[] dataRight = new Translation[] {
35+
new Translation("ts", "key", "something"), new Translation("ts", "another_key", "awesome value")
36+
};
2637
private FrameFixture frame;
2738

2839
private OverviewView cut;
@@ -41,6 +52,8 @@ protected void onSetUp() {
4152
windowClosingListener = mock(Consumer.class);
4253
translationReqListener = mock(Consumer.class);
4354
langReqListener = mock(Runnable.class);
55+
56+
robot().settings().delayBetweenEvents(20);
4457
}
4558

4659
@Before
@@ -51,6 +64,8 @@ public void before() {
5164
cut.addWindowClosingListener(windowClosingListener);
5265
cut.addTranslationRequestListener(translationReqListener);
5366
cut.addLanguageRequestListener(langReqListener);
67+
68+
cut.rebuildWith(Arrays.asList(dataLeft), Arrays.asList(dataRight));
5469
cut.show();
5570

5671
frame = findFrame(new GenericTypeMatcher<Frame>(Frame.class) {
@@ -87,5 +102,25 @@ public void closingWindow_firesWindowClosingListener() {
87102
verifyNoMoreInteractions(saveReqListener, windowClosingListener, translationReqListener, langReqListener);
88103
}
89104

90-
// FIXME need some translation table tests
105+
@Test
106+
public void table_containsCorrectRows() {
107+
assertEquals(dataLeft.length, frame.table().rowCount());
108+
109+
verifyNoMoreInteractions(saveReqListener, windowClosingListener, translationReqListener, langReqListener);
110+
}
111+
112+
@Test
113+
public void tableClick_doesNothing() {
114+
frame.table().cell(TableCell.row(0).column(1)).click();
115+
116+
verifyNoMoreInteractions(saveReqListener, windowClosingListener, translationReqListener, langReqListener);
117+
}
118+
119+
@Test
120+
public void tableDoubleClick_firesTranslationReqListener() {
121+
frame.table().cell(TableCell.row(0).column(1)).doubleClick();
122+
123+
verify(translationReqListener).accept(eq("key"));
124+
verifyNoMoreInteractions(saveReqListener, windowClosingListener, translationReqListener, langReqListener);
125+
}
91126
}
Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,60 @@
11
package de.vogel612.helper.ui;
22

3+
import static org.assertj.swing.finder.WindowFinder.findFrame;
4+
import static org.mockito.Mockito.mock;
5+
import static org.mockito.Mockito.verifyNoMoreInteractions;
6+
7+
import org.assertj.swing.core.GenericTypeMatcher;
8+
import org.assertj.swing.edt.FailOnThreadViolationRepaintManager;
9+
import org.assertj.swing.fixture.FrameFixture;
10+
import org.assertj.swing.junit.testcase.AssertJSwingJUnitTestCase;
11+
import org.junit.Before;
12+
import org.junit.Test;
13+
import de.vogel612.helper.ui.ResxChooser.ResxChooserEvent;
14+
15+
import java.awt.*;
16+
import java.nio.file.Paths;
17+
import java.util.function.Consumer;
18+
319
/**
420
* Created by vogel612 on 26.01.16.
521
*/
6-
public class ResxChooserTests {
22+
public class ResxChooserTests extends AssertJSwingJUnitTestCase {
23+
24+
private ResxChooser cut;
25+
26+
private Consumer<ResxChooserEvent> listener;
27+
private FrameFixture frame;
28+
29+
30+
@Override
31+
protected void onSetUp() {
32+
FailOnThreadViolationRepaintManager.uninstall();
33+
34+
listener = mock(Consumer.class);
35+
robot().settings().delayBetweenEvents(20);
36+
}
37+
38+
@Before
39+
public void before() {
40+
cut = new ResxChooser();
41+
cut.addCompletionListener(listener);
42+
cut.setFileset(Paths.get(getClass().getResource("RubberduckUI.resx").getFile()));
43+
cut.show();
44+
45+
frame = findFrame(new GenericTypeMatcher<Frame>(Frame.class){
46+
@Override
47+
protected boolean isMatching(Frame component) {
48+
return component.isShowing();
49+
}
50+
}).using(robot());
51+
}
52+
53+
@Test
54+
public void submitButton_withUnselectedPath_doesNothing() {
55+
cut.setFileset(null);
56+
frame.button("submit").click();
57+
58+
verifyNoMoreInteractions(listener);
59+
}
760
}

src/test/java/de/vogel612/helper/ui/TranslationPresenterTests.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33
import static org.assertj.swing.finder.WindowFinder.findFrame;
44
import static org.mockito.Matchers.any;
55
import static org.mockito.Matchers.eq;
6-
import static org.mockito.Mockito.mock;
7-
import static org.mockito.Mockito.verify;
8-
import static org.mockito.Mockito.verifyNoMoreInteractions;
6+
import static org.mockito.Mockito.*;
97

108
import org.assertj.swing.core.GenericTypeMatcher;
119
import org.assertj.swing.edt.FailOnThreadViolationRepaintManager;
@@ -37,14 +35,16 @@ protected void onSetUp() {
3735

3836
abortListener = mock(Runnable.class);
3937
submitListener = mock(Consumer.class);
38+
39+
robot().settings().delayBetweenEvents(20);
4040
}
4141

4242
@Before
4343
public void before() {
4444
cut = new TranslationPresenter();
4545
cut.addTranslationAbortListener(abortListener);
4646
cut.addTranslationSubmitListener(submitListener);
47-
cut.setRequestedTranslation(new Translation("","",""), new Translation("","",""));
47+
cut.setRequestedTranslation(new Translation("", "", ""), new Translation("", "", ""));
4848
cut.show();
4949

5050
frame = findFrame(new GenericTypeMatcher<Frame>(Frame.class) {
@@ -64,6 +64,18 @@ public void abortButton_firesAbortListener() {
6464
verifyNoMoreInteractions(abortListener, submitListener);
6565
}
6666

67+
@Test
68+
public void settingTranslation_fillsRelevantUI() {
69+
cut.setRequestedTranslation(new Translation("src", "key", "original"),
70+
new Translation("target", "key", "current"));
71+
72+
frame.textBox().requireText("current");
73+
frame.textBox().requireEditable();
74+
frame.label().requireText("original");
75+
// FIXME verify title
76+
verifyNoMoreInteractions(abortListener, submitListener);
77+
}
78+
6779
@Test
6880
public void submitButton_firesSubmitListener() {
6981
frame.button("submit").click();

0 commit comments

Comments
 (0)