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