blob: 87e09c1879301e6108908c4a0c57d2ba58777758 [file] [log] [blame]
Eliza Margaretha38a94662014-11-20 13:48:00 +00001package de.ids_mannheim.korap.response;
Nils Diewaldc471b182014-11-19 22:51:15 +00002
3import java.io.*;
4
5import de.ids_mannheim.korap.response.Messages;
6import de.ids_mannheim.korap.response.Notifications;
7
8import com.fasterxml.jackson.databind.ObjectMapper;
9import com.fasterxml.jackson.databind.JsonNode;
10
11import static org.junit.Assert.*;
12import org.junit.Test;
13import org.junit.Ignore;
14import org.junit.runner.RunWith;
15import org.junit.runners.JUnit4;
16
17@RunWith(JUnit4.class)
18public class TestNotifications {
19
20 ObjectMapper mapper = new ObjectMapper();
21
Nils Diewaldbb33da22015-03-04 16:24:25 +000022
Nils Diewaldc471b182014-11-19 22:51:15 +000023 @Test
24 public void testNotification () {
Nils Diewaldbb33da22015-03-04 16:24:25 +000025 Notifications notes = new Notifications();
26 assertEquals("{}", notes.toJsonString());
Nils Diewaldc471b182014-11-19 22:51:15 +000027 };
28
Nils Diewaldbb33da22015-03-04 16:24:25 +000029
Nils Diewaldc471b182014-11-19 22:51:15 +000030 @Test
31 public void testNotificationWarnings () throws IOException {
Nils Diewaldbb33da22015-03-04 16:24:25 +000032 Notifications notes = new Notifications();
33 assertFalse(notes.hasWarnings());
34 assertFalse(notes.hasMessages());
35 assertFalse(notes.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +000036
Nils Diewaldbb33da22015-03-04 16:24:25 +000037 notes.addWarning(613, "Foo");
38 notes.addWarning(614, "Bar", "Spiel");
Nils Diewaldc471b182014-11-19 22:51:15 +000039
Eliza Margaretha6f989202016-10-14 21:48:29 +020040 assertEquals(
41 "{\"warnings\":[[613,\"Foo\"],[614,\"Bar\"," + "\"Spiel\"]]}",
42 notes.toJsonString());
Nils Diewaldc471b182014-11-19 22:51:15 +000043
Nils Diewaldbb33da22015-03-04 16:24:25 +000044 assertTrue(notes.hasWarnings());
45 assertFalse(notes.hasMessages());
46 assertFalse(notes.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +000047
Nils Diewaldbb33da22015-03-04 16:24:25 +000048 notes.addError(412, "Test");
Nils Diewaldc471b182014-11-19 22:51:15 +000049
Nils Diewaldbb33da22015-03-04 16:24:25 +000050 assertTrue(notes.hasWarnings());
51 assertFalse(notes.hasMessages());
52 assertTrue(notes.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +000053
Nils Diewaldbb33da22015-03-04 16:24:25 +000054 JsonNode noteJson = mapper.readTree(notes.toJsonString());
Nils Diewaldc471b182014-11-19 22:51:15 +000055
Nils Diewaldbb33da22015-03-04 16:24:25 +000056 // {"warnings":[[613,"Foo"],[614,"Bar","Spiel"]],"errors":[[412,"Test"]]}
57 assertEquals(613, noteJson.at("/warnings/0/0").asInt());
58 assertEquals("Foo", noteJson.at("/warnings/0/1").asText());
59 assertEquals(614, noteJson.at("/warnings/1/0").asInt());
60 assertEquals("Bar", noteJson.at("/warnings/1/1").asText());
61 assertEquals("Spiel", noteJson.at("/warnings/1/2").asText());
62 assertEquals(412, noteJson.at("/errors/0/0").asInt());
63 assertEquals("Test", noteJson.at("/errors/0/1").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +000064
Nils Diewaldbb33da22015-03-04 16:24:25 +000065 notes.addMessage(567, "Probe", "huhu", "hihi");
Nils Diewaldc471b182014-11-19 22:51:15 +000066
Nils Diewaldbb33da22015-03-04 16:24:25 +000067 assertTrue(notes.hasWarnings());
68 assertTrue(notes.hasMessages());
69 assertTrue(notes.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +000070
Nils Diewaldbb33da22015-03-04 16:24:25 +000071 noteJson = mapper.readTree(notes.toJsonString());
Nils Diewaldc471b182014-11-19 22:51:15 +000072
Nils Diewaldbb33da22015-03-04 16:24:25 +000073 // {"warnings":[[613,"Foo"],[614,"Bar","Spiel"]],
74 // "errors":[[412,"Test"]]}
75 assertEquals(613, noteJson.at("/warnings/0/0").asInt());
76 assertEquals("Foo", noteJson.at("/warnings/0/1").asText());
77 assertEquals(614, noteJson.at("/warnings/1/0").asInt());
78 assertEquals("Bar", noteJson.at("/warnings/1/1").asText());
79 assertEquals("Spiel", noteJson.at("/warnings/1/2").asText());
80 assertEquals(412, noteJson.at("/errors/0/0").asInt());
81 assertEquals("Test", noteJson.at("/errors/0/1").asText());
82 assertEquals(567, noteJson.at("/messages/0/0").asInt());
83 assertEquals("Probe", noteJson.at("/messages/0/1").asText());
84 assertEquals("huhu", noteJson.at("/messages/0/2").asText());
85 assertEquals("hihi", noteJson.at("/messages/0/3").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +000086
Nils Diewaldbb33da22015-03-04 16:24:25 +000087 // Todo: Check how to check for missing node
Nils Diewaldc471b182014-11-19 22:51:15 +000088
Nils Diewaldbb33da22015-03-04 16:24:25 +000089 Messages msgs = notes.getWarnings();
90 assertEquals("[[613,\"Foo\"],[614,\"Bar\",\"Spiel\"]]",
91 msgs.toJsonString());
Nils Diewaldc471b182014-11-19 22:51:15 +000092 };
93
94
95 @Test
96 public void testNotificationCopy () throws IOException {
97
Nils Diewaldbb33da22015-03-04 16:24:25 +000098 Notifications notes1 = new Notifications();
99 notes1.addWarning(1, "Foo");
100 notes1.addWarning(2, "Bar", "Test");
101 notes1.addError(3, "Probe");
Nils Diewaldc471b182014-11-19 22:51:15 +0000102
Nils Diewaldbb33da22015-03-04 16:24:25 +0000103 Notifications notes2 = new Notifications();
104 notes2.addMessage(4, "Krah");
105 notes2.addWarning(5, "Wu", "Niegel");
Nils Diewaldc471b182014-11-19 22:51:15 +0000106
Nils Diewaldbb33da22015-03-04 16:24:25 +0000107 assertTrue(notes1.hasWarnings());
108 assertFalse(notes1.hasMessages());
109 assertTrue(notes1.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +0000110
Nils Diewaldbb33da22015-03-04 16:24:25 +0000111 assertTrue(notes2.hasWarnings());
112 assertTrue(notes2.hasMessages());
113 assertFalse(notes2.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +0000114
Nils Diewaldbb33da22015-03-04 16:24:25 +0000115 // Copy notations
116 notes1.copyNotificationsFrom(notes2);
117 assertTrue(notes1.hasWarnings());
118 assertTrue(notes1.hasMessages());
119 assertTrue(notes1.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +0000120
Nils Diewaldbb33da22015-03-04 16:24:25 +0000121 JsonNode noteJson = mapper.readTree(notes1.toJsonString());
122 assertEquals(1, noteJson.at("/warnings/0/0").asInt());
123 assertEquals("Foo", noteJson.at("/warnings/0/1").asText());
124 assertEquals(2, noteJson.at("/warnings/1/0").asInt());
125 assertEquals("Bar", noteJson.at("/warnings/1/1").asText());
126 assertEquals("Test", noteJson.at("/warnings/1/2").asText());
127 assertEquals(5, noteJson.at("/warnings/2/0").asInt());
128 assertEquals("Wu", noteJson.at("/warnings/2/1").asText());
129 assertEquals("Niegel", noteJson.at("/warnings/2/2").asText());
130 assertEquals(4, noteJson.at("/messages/0/0").asInt());
131 assertEquals("Krah", noteJson.at("/messages/0/1").asText());
132 assertEquals(3, noteJson.at("/errors/0/0").asInt());
133 assertEquals("Probe", noteJson.at("/errors/0/1").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +0000134 };
135
Nils Diewaldbb33da22015-03-04 16:24:25 +0000136
Nils Diewaldc471b182014-11-19 22:51:15 +0000137 @Test
138 public void testNotificationJSONCopy () throws IOException {
139
Nils Diewaldbb33da22015-03-04 16:24:25 +0000140 Notifications notes1 = new Notifications();
141 notes1.addWarning(1, "Foo");
142 notes1.addWarning(2, "Bar", "Test");
143 notes1.addError(3, "Probe");
Nils Diewaldc471b182014-11-19 22:51:15 +0000144
Nils Diewaldbb33da22015-03-04 16:24:25 +0000145 assertTrue(notes1.hasWarnings());
146 assertFalse(notes1.hasMessages());
147 assertTrue(notes1.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +0000148
Nils Diewaldbb33da22015-03-04 16:24:25 +0000149 JsonNode noteJson = mapper
150 .readTree("{\"warnings\":[[5,\"Wu\",\"Niegel\"]],"
151 + "\"messages\":[[4,\"Krah\"]]}");
152 notes1.copyNotificationsFrom(noteJson);
Nils Diewaldc471b182014-11-19 22:51:15 +0000153
Nils Diewaldbb33da22015-03-04 16:24:25 +0000154 assertTrue(notes1.hasWarnings());
155 assertTrue(notes1.hasMessages());
156 assertTrue(notes1.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +0000157
Nils Diewaldbb33da22015-03-04 16:24:25 +0000158 noteJson = mapper.readTree(notes1.toJsonString());
Nils Diewaldc471b182014-11-19 22:51:15 +0000159
Nils Diewaldbb33da22015-03-04 16:24:25 +0000160 assertEquals(1, noteJson.at("/warnings/0/0").asInt());
161 assertEquals("Foo", noteJson.at("/warnings/0/1").asText());
162 assertEquals(2, noteJson.at("/warnings/1/0").asInt());
163 assertEquals("Bar", noteJson.at("/warnings/1/1").asText());
164 assertEquals("Test", noteJson.at("/warnings/1/2").asText());
165 assertEquals(5, noteJson.at("/warnings/2/0").asInt());
166 assertEquals("Wu", noteJson.at("/warnings/2/1").asText());
167 assertEquals("Niegel", noteJson.at("/warnings/2/2").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +0000168
Nils Diewaldbb33da22015-03-04 16:24:25 +0000169 assertEquals(4, noteJson.at("/messages/0/0").asInt());
170 assertEquals("Krah", noteJson.at("/messages/0/1").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +0000171
Nils Diewaldbb33da22015-03-04 16:24:25 +0000172 assertEquals(3, noteJson.at("/errors/0/0").asInt());
173 assertEquals("Probe", noteJson.at("/errors/0/1").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +0000174
Nils Diewaldbb33da22015-03-04 16:24:25 +0000175 noteJson = mapper
176 .readTree("{\"warnings\":[[8, \"Tanja\", \"Gaby\"]],\"errors\":"
177 + "[[\"Klößchen\"],[9,\"Karl\"]]}");
178 notes1.copyNotificationsFrom(noteJson);
Nils Diewaldc471b182014-11-19 22:51:15 +0000179
Nils Diewaldbb33da22015-03-04 16:24:25 +0000180 assertTrue(notes1.hasWarnings());
181 assertTrue(notes1.hasMessages());
182 assertTrue(notes1.hasErrors());
Nils Diewaldc471b182014-11-19 22:51:15 +0000183
Nils Diewaldbb33da22015-03-04 16:24:25 +0000184 noteJson = mapper.readTree(notes1.toJsonString());
Nils Diewaldc471b182014-11-19 22:51:15 +0000185
Nils Diewaldbb33da22015-03-04 16:24:25 +0000186 assertEquals(1, noteJson.at("/warnings/0/0").asInt());
187 assertEquals("Foo", noteJson.at("/warnings/0/1").asText());
188 assertEquals(2, noteJson.at("/warnings/1/0").asInt());
189 assertEquals("Bar", noteJson.at("/warnings/1/1").asText());
190 assertEquals("Test", noteJson.at("/warnings/1/2").asText());
191 assertEquals(5, noteJson.at("/warnings/2/0").asInt());
192 assertEquals("Wu", noteJson.at("/warnings/2/1").asText());
193 assertEquals("Niegel", noteJson.at("/warnings/2/2").asText());
194 assertEquals(8, noteJson.at("/warnings/3/0").asInt());
195 assertEquals("Tanja", noteJson.at("/warnings/3/1").asText());
196 assertEquals("Gaby", noteJson.at("/warnings/3/2").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +0000197
Nils Diewaldbb33da22015-03-04 16:24:25 +0000198 assertEquals(4, noteJson.at("/messages/0/0").asInt());
199 assertEquals("Krah", noteJson.at("/messages/0/1").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +0000200
Nils Diewaldbb33da22015-03-04 16:24:25 +0000201 assertEquals(3, noteJson.at("/errors/0/0").asInt());
202 assertEquals("Probe", noteJson.at("/errors/0/1").asText());
203 assertEquals("Klößchen", noteJson.at("/errors/1/0").asText());
204 assertEquals(9, noteJson.at("/errors/2/0").asInt());
205 assertEquals("Karl", noteJson.at("/errors/2/1").asText());
Nils Diewaldc471b182014-11-19 22:51:15 +0000206 };
207};