Skip to content

Commit 8bdd0eb

Browse files
committed
Metamorph splitter test should verify that no unexpected interactions occurred.
1 parent ec9a190 commit 8bdd0eb

File tree

1 file changed

+83
-47
lines changed

1 file changed

+83
-47
lines changed

metamorph/src/test/java/org/metafacture/metamorph/SplitterTest.java

Lines changed: 83 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,19 @@
1616

1717
package org.metafacture.metamorph;
1818

19-
import static org.mockito.Mockito.inOrder;
20-
import static org.mockito.Mockito.verify;
21-
import static org.mockito.Mockito.verifyZeroInteractions;
22-
23-
import org.junit.Before;
19+
import org.junit.Rule;
2420
import org.junit.Test;
2521
import org.metafacture.framework.StreamReceiver;
2622
import org.mockito.InOrder;
2723
import org.mockito.Mock;
28-
import org.mockito.MockitoAnnotations;
24+
import org.mockito.Mockito;
25+
import org.mockito.exceptions.base.MockitoAssertionError;
26+
import org.mockito.junit.MockitoJUnit;
27+
import org.mockito.junit.MockitoRule;
28+
29+
import java.util.function.BiConsumer;
30+
import java.util.function.Consumer;
31+
import java.util.function.Supplier;
2932

3033
/**
3134
* Tests for class {@link Splitter}.
@@ -36,68 +39,101 @@
3639
*/
3740
public final class SplitterTest {
3841

42+
@Rule
43+
public MockitoRule mockito = MockitoJUnit.rule();
44+
3945
@Mock
4046
private StreamReceiver receiver1;
4147

4248
@Mock
4349
private StreamReceiver receiver2;
4450

45-
private Splitter splitter;
46-
47-
@Before
48-
public void setup() {
49-
MockitoAnnotations.initMocks(this);
50-
splitter = new Splitter("org/metafacture/metamorph/splitter-test.xml");
51-
splitter.setReceiver("receiver-1", receiver1);
52-
splitter.setReceiver("receiver-2", receiver2);
53-
}
54-
5551
@Test
5652
public void shouldPassRecordToReceiverWithMatchingKey() {
57-
splitter.startRecord("1");
58-
splitter.startEntity("data");
59-
splitter.literal("forward-to", "receiver-1");
60-
splitter.endEntity();
61-
splitter.endRecord();
62-
splitter.startRecord("2");
63-
splitter.literal("forward-to", "receiver-2");
64-
splitter.endRecord();
65-
66-
final InOrder ordered = inOrder(receiver1, receiver2);
67-
ordered.verify(receiver1).startRecord("1");
68-
ordered.verify(receiver1).startEntity("data");
69-
ordered.verify(receiver1).literal("forward-to", "receiver-1");
70-
ordered.verify(receiver1).endEntity();
71-
ordered.verify(receiver1).endRecord();
72-
ordered.verify(receiver2).startRecord("2");
73-
ordered.verify(receiver2).literal("forward-to", "receiver-2");
74-
ordered.verify(receiver2).endRecord();
75-
ordered.verifyNoMoreInteractions();
53+
assertSplitter(
54+
i -> {
55+
i.startRecord("1");
56+
i.startEntity("data");
57+
i.literal("forward-to", "receiver-1");
58+
i.endEntity();
59+
i.endRecord();
60+
i.startRecord("2");
61+
i.literal("forward-to", "receiver-2");
62+
i.endRecord();
63+
},
64+
(o1, o2) -> {
65+
o1.get().startRecord("1");
66+
o1.get().startEntity("data");
67+
o1.get().literal("forward-to", "receiver-1");
68+
o1.get().endEntity();
69+
o1.get().endRecord();
70+
o2.get().startRecord("2");
71+
o2.get().literal("forward-to", "receiver-2");
72+
o2.get().endRecord();
73+
}
74+
);
7675
}
7776

7877
@Test
7978
public void shouldDiscardNonMatchingRecords() {
80-
splitter.startRecord("1");
81-
splitter.literal("forward-to", "none");
82-
splitter.endRecord();
83-
84-
verifyZeroInteractions(receiver1, receiver2);
79+
assertSplitter(
80+
i -> {
81+
i.startRecord("1");
82+
i.literal("forward-to", "none");
83+
i.endRecord();
84+
},
85+
(o1, o2) -> {
86+
}
87+
);
8588
}
8689

8790
@Test
8891
public void shouldPassResetStreamToAllReceivers() {
89-
splitter.resetStream();
90-
91-
verify(receiver1).resetStream();
92-
verify(receiver2).resetStream();
92+
assertSplitter(
93+
i -> {
94+
i.resetStream();
95+
},
96+
(o1, o2) -> {
97+
o1.get().resetStream();
98+
o2.get().resetStream();
99+
}
100+
);
93101
}
94102

95103
@Test
96104
public void shouldPassCloseStreamToAllReceivers() {
97-
splitter.closeStream();
105+
assertSplitter(
106+
i -> {
107+
i.closeStream();
108+
},
109+
(o1, o2) -> {
110+
o1.get().closeStream();
111+
o2.get().closeStream();
112+
}
113+
);
114+
}
115+
116+
private void assertSplitter(final Consumer<Splitter> in, final BiConsumer<Supplier<StreamReceiver>, Supplier<StreamReceiver>> out) {
117+
final InOrder ordered = Mockito.inOrder(receiver1, receiver2);
118+
119+
final Splitter splitter = new Splitter("org/metafacture/metamorph/splitter-test.xml");
120+
splitter.setReceiver("receiver-1", receiver1);
121+
splitter.setReceiver("receiver-2", receiver2);
122+
123+
in.accept(splitter);
124+
125+
try {
126+
out.accept(() -> ordered.verify(receiver1), () -> ordered.verify(receiver2));
98127

99-
verify(receiver1).closeStream();
100-
verify(receiver2).closeStream();
128+
ordered.verifyNoMoreInteractions();
129+
Mockito.verifyNoMoreInteractions(receiver1);
130+
Mockito.verifyNoMoreInteractions(receiver2);
131+
}
132+
catch (final MockitoAssertionError e) {
133+
System.out.println(Mockito.mockingDetails(receiver1).printInvocations());
134+
System.out.println(Mockito.mockingDetails(receiver2).printInvocations());
135+
throw e;
136+
}
101137
}
102138

103139
}

0 commit comments

Comments
 (0)