1 package de.dlr.shepard.common.neo4j.io;
2
3 import static org.junit.jupiter.api.Assertions.assertArrayEquals;
4 import static org.junit.jupiter.api.Assertions.assertEquals;
5 import static org.junit.jupiter.api.Assertions.assertNull;
6
7 import de.dlr.shepard.auth.users.entities.User;
8 import de.dlr.shepard.common.neo4j.entities.BasicEntity;
9 import de.dlr.shepard.context.collection.entities.Collection;
10 import de.dlr.shepard.context.references.basicreference.entities.BasicReference;
11 import de.dlr.shepard.context.version.entities.VersionableEntity;
12 import de.dlr.shepard.data.file.entities.FileContainer;
13 import java.util.Date;
14 import java.util.List;
15 import nl.jqno.equalsverifier.EqualsVerifier;
16 import org.junit.jupiter.api.Test;
17
18 public class BasicEntityIOTest {
19
20 private static class EntityIO extends BasicEntityIO {
21
22 public EntityIO(long id) {
23 this.setId(id);
24 }
25
26 public EntityIO(BasicEntity entity) {
27 super(entity);
28 }
29
30 public EntityIO(VersionableEntity entity) {
31 super(entity);
32 }
33 }
34
35 @Test
36 public void equalsContract() {
37 EqualsVerifier.simple().forClass(BasicEntityIO.class).verify();
38 }
39
40 @Test
41 public void testConversion() {
42 var date = new Date();
43 var user = new User("bob");
44 var update = new Date();
45 var updateUser = new User("claus");
46
47 var obj = new FileContainer(1L);
48 obj.setCreatedAt(date);
49 obj.setCreatedBy(user);
50 obj.setUpdatedAt(update);
51 obj.setUpdatedBy(updateUser);
52 obj.setName("test");
53
54 var converted = new EntityIO(obj);
55 assertEquals(obj.getId(), converted.getId());
56 assertEquals(obj.getCreatedAt(), converted.getCreatedAt());
57 assertEquals("bob", converted.getCreatedBy());
58 assertEquals(obj.getUpdatedAt(), converted.getUpdatedAt());
59 assertEquals("claus", converted.getUpdatedBy());
60 assertEquals("test", converted.getName());
61 }
62
63 @Test
64 public void testConversionVersionable() {
65 var date = new Date();
66 var user = new User("bob");
67 var update = new Date();
68 var updateUser = new User("claus");
69
70 var obj = new BasicReference(1L);
71 obj.setShepardId(2L);
72 obj.setCreatedAt(date);
73 obj.setCreatedBy(user);
74 obj.setName("MyName");
75 obj.setUpdatedAt(update);
76 obj.setUpdatedBy(updateUser);
77
78 var converted = new EntityIO(obj);
79 assertEquals(obj.getShepardId(), converted.getId());
80 assertEquals(obj.getCreatedAt(), converted.getCreatedAt());
81 assertEquals(obj.getCreatedBy().getUsername(), converted.getCreatedBy());
82 assertEquals(obj.getUpdatedAt(), converted.getUpdatedAt());
83 assertEquals(obj.getUpdatedBy().getUsername(), converted.getUpdatedBy());
84 assertEquals(obj.getName(), converted.getName());
85 }
86
87 @Test
88 public void testConversion_userNull() {
89 var obj = new FileContainer(1L);
90
91 var converted = new EntityIO(obj);
92 assertEquals(obj.getId(), converted.getId());
93 assertNull(converted.getCreatedBy());
94 assertNull(converted.getUpdatedBy());
95 }
96
97 @Test
98 public void extractIdsTest() {
99 var input = List.of(new Collection(2L), new Collection(5L));
100 var actual = BasicEntityIO.extractIds(input);
101
102 assertArrayEquals(new long[] { 2, 5 }, actual);
103 }
104
105 @Test
106 public void extractShepardIdsTest() {
107 var col = new Collection(1L);
108 col.setShepardId(2L);
109 var input = List.of(col);
110 var actual = BasicEntityIO.extractShepardIds(input);
111
112 assertArrayEquals(new long[] { 2 }, actual);
113 }
114
115 @Test
116 public void getUniqueIdTest() {
117 var entity = new EntityIO(2L);
118 var actual = entity.getUniqueId();
119
120 assertEquals("2", actual);
121 }
122 }