View Javadoc
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  }