1 package de.dlr.shepard.migrations.neo4j;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4
5 import org.neo4j.cypherdsl.core.Node;
6 import org.neo4j.cypherdsl.core.Relationship;
7
8 public class TestV11 extends MigrationTest {
9
10 private static String HAS_PAYLOAD = "has_payload";
11
12 private final Node tsrMixed = sample.timeseriesReference("mixed");
13 private final Node tsrUnique1 = sample.timeseriesReference("unique");
14 private final Node uniqueTs1 = sample.timeseries("unique-device-1");
15 private final Node uniqueTs2 = sample.timeseries("unique-device-2");
16 private final Node tsrDup11 = sample.timeseriesReference("dup11");
17 private final Node tsrDup12 = sample.timeseriesReference("dup12");
18 private final Node duplicatedTs1 = sample.timeseries("duplicated-device1");
19 private final Node tsrDup21 = sample.timeseriesReference("dup21");
20 private final Node tsrDup22 = sample.timeseriesReference("dup22");
21 private final Node tsrDup23 = sample.timeseriesReference("dup23");
22 private final Node duplicatedTs2 = sample.timeseries("duplicated-device2");
23
24 private void create_payload(Node tsr, Node ts) {
25 q.merge(payload(tsr, ts));
26 }
27
28 private static Relationship payload(Node tsr, Node ts) {
29 return tsr.relationshipTo(ts, HAS_PAYLOAD);
30 }
31
32 @Override
33 public void setupPreMigrationData() {
34 create_payload(tsrUnique1, uniqueTs1);
35 create_payload(tsrUnique1, uniqueTs2);
36
37 create_payload(tsrDup11, duplicatedTs1);
38 create_payload(tsrDup12, duplicatedTs1);
39
40 create_payload(tsrDup21, duplicatedTs2);
41 create_payload(tsrDup22, duplicatedTs2);
42 create_payload(tsrDup23, duplicatedTs2);
43
44 q.create(tsrMixed);
45 q.createRelationshipForExisting(tsrMixed, uniqueTs1, HAS_PAYLOAD);
46 q.createRelationshipForExisting(tsrMixed, duplicatedTs1, HAS_PAYLOAD);
47 }
48
49 @Override
50 public String getTargetVersion() {
51 return "V11";
52 }
53
54 public void assertUniqueTimeseriesUntouched() {
55 assertEquals(1, q.match(payload(tsrUnique1, uniqueTs1), uniqueTs1).size());
56 assertEquals(1, q.match(payload(tsrUnique1, uniqueTs2), uniqueTs2).size());
57 }
58
59 public void assertDuplicatesEliminated() {
60 assertEquals(1, q.match(duplicatedTs1).size());
61 assertEquals(1, q.match(duplicatedTs2).size());
62 }
63
64 public void assertReferencesMigrated() {
65 assertEquals(1, q.match(payload(tsrDup11, duplicatedTs1), duplicatedTs1).size());
66 assertEquals(1, q.match(payload(tsrDup12, duplicatedTs1), duplicatedTs1).size());
67
68 assertEquals(1, q.match(payload(tsrDup21, duplicatedTs2), duplicatedTs2).size());
69 assertEquals(1, q.match(payload(tsrDup22, duplicatedTs2), duplicatedTs2).size());
70 assertEquals(1, q.match(payload(tsrDup23, duplicatedTs2), duplicatedTs2).size());
71
72 assertEquals(1, q.match(payload(tsrMixed, uniqueTs1), uniqueTs1).size());
73 assertEquals(1, q.match(payload(tsrMixed, duplicatedTs1), duplicatedTs1).size());
74 }
75
76 public void cleanup() {
77 q.deleteAll("Timeseries");
78 q.deleteAll("TimeseriesReference");
79 }
80 }