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
31 @Test
32 public void equalsContract() {
33 EqualsVerifier.simple().forClass(BasicEntityIO.class).verify();
34 }
35
36 @Test
37 public void testConversion() {
38 var date = new Date();
39 var user = new User("bob");
40 var update = new Date();
41 var updateUser = new User("claus");
42
43 var obj = new FileContainer(1L);
44 obj.setCreatedAt(date);
45 obj.setCreatedBy(user);
46 obj.setUpdatedAt(update);
47 obj.setUpdatedBy(updateUser);
48 obj.setName("test");
49
50 var converted = new EntityIO(obj);
51 assertEquals(obj.getId(), converted.getId());
52 assertEquals(obj.getCreatedAt(), converted.getCreatedAt());
53 assertEquals("bob", converted.getCreatedBy());
54 assertEquals(obj.getUpdatedAt(), converted.getUpdatedAt());
55 assertEquals("claus", converted.getUpdatedBy());
56 assertEquals("test", converted.getName());
57 }
58
59 @Test
60 public void testConversionVersionable() {
61 var date = new Date();
62 var user = new User("bob");
63 var update = new Date();
64 var updateUser = new User("claus");
65
66 var obj = new BasicReference(1L);
67 obj.setShepardId(2L);
68 obj.setCreatedAt(date);
69 obj.setCreatedBy(user);
70 obj.setName("MyName");
71 obj.setUpdatedAt(update);
72 obj.setUpdatedBy(updateUser);
73
74 var converted = new EntityIO(obj);
75 assertEquals(obj.getShepardId(), converted.getId());
76 assertEquals(obj.getCreatedAt(), converted.getCreatedAt());
77 assertEquals(obj.getCreatedBy().getUsername(), converted.getCreatedBy());
78 assertEquals(obj.getUpdatedAt(), converted.getUpdatedAt());
79 assertEquals(obj.getUpdatedBy().getUsername(), converted.getUpdatedBy());
80 assertEquals(obj.getName(), converted.getName());
81 }
82
83 @Test
84 public void testConversion_userNull() {
85 var obj = new FileContainer(1L);
86
87 var converted = new EntityIO(obj);
88 assertEquals(obj.getId(), converted.getId());
89 assertNull(converted.getCreatedBy());
90 assertNull(converted.getUpdatedBy());
91 }
92
93 @Test
94 public void extractIdsTest() {
95 var input = List.of(new Collection(2L), new Collection(5L));
96 var actual = BasicEntityIO.extractIds(input);
97
98 assertArrayEquals(new long[] { 2, 5 }, actual);
99 }
100
101 @Test
102 public void extractShepardIdsTest() {
103 var col = new Collection(1L);
104 col.setShepardId(2L);
105 var input = List.of(col);
106 var actual = BasicEntityIO.extractShepardIds(input);
107
108 assertArrayEquals(new long[] { 2 }, actual);
109 }
110
111 @Test
112 public void getUniqueIdTest() {
113 var entity = new EntityIO(2L);
114 var actual = entity.getUniqueId();
115
116 assertEquals("2", actual);
117 }
118 }