1 package de.dlr.shepard.context.export;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.junit.jupiter.api.Assertions.assertNotNull;
5
6 import de.dlr.shepard.auth.users.entities.User;
7 import de.dlr.shepard.common.util.DateHelper;
8 import de.dlr.shepard.context.collection.entities.Collection;
9 import de.dlr.shepard.context.collection.entities.DataObject;
10 import de.dlr.shepard.context.references.basicreference.entities.BasicReference;
11 import de.dlr.shepard.context.references.basicreference.io.BasicReferenceIO;
12 import io.quarkus.test.component.QuarkusComponentTest;
13 import jakarta.inject.Inject;
14 import java.io.IOException;
15 import org.junit.jupiter.api.Test;
16
17 @QuarkusComponentTest
18 public class ExportBuilderTest {
19
20 @Inject
21 DateHelper dateHelper;
22
23 @Test
24 public void testConstructor() throws IOException {
25 var user = new User("bob");
26 var collection = getCollection(user);
27 var builder = new ExportBuilder(collection);
28 var crate = builder.getRoCrateBuilder().build();
29 var entity = crate.getDataEntityById("2.json");
30 assertEquals("Collection Name", entity.getProperty("name").asText());
31 }
32
33 @Test
34 public void testAddDataObject() throws IOException {
35 var user = new User("bob");
36 var collection = getCollection(user);
37 var builder = new ExportBuilder(collection);
38
39 var dataObject = getDataObject(user, collection);
40 builder.addDataObject(dataObject);
41
42 var crate = builder.getRoCrateBuilder().build();
43 var entity = crate.getDataEntityById("3.json");
44 assertEquals("DataObject Name", entity.getProperty("name").asText());
45 }
46
47 @Test
48 public void testAddReference() throws IOException {
49 var user = new User("bob");
50 var collection = getCollection(user);
51 var dataObject = getDataObject(user, collection);
52 var builder = new ExportBuilder(collection);
53
54 var reference = getReference(user, dataObject);
55 builder.addReference(new BasicReferenceIO(reference), user);
56
57 var crate = builder.getRoCrateBuilder().build();
58 var entity = crate.getDataEntityById("4.json");
59 assertEquals("Reference Name", entity.getProperty("name").asText());
60 }
61
62 @Test
63 public void testAddPayload_bytes() throws IOException {
64 var user = new User("bob");
65 var collection = getCollection(user);
66 var builder = new ExportBuilder(collection);
67
68 byte[] bytes = new byte[0];
69 builder.addPayload(bytes, "file", "name");
70
71 var crate = builder.getRoCrateBuilder().build();
72 var entity = crate.getEntityById("file");
73 assertEquals("name", entity.getProperty("name").asText());
74 }
75
76 @Test
77 public void testAddPayload_bytesPlusFormat() throws IOException {
78 var user = new User("bob");
79 var collection = getCollection(user);
80 var builder = new ExportBuilder(collection);
81
82 var bytes = new byte[0];
83 builder.addPayload(bytes, "file", "name", "text/csv");
84
85 var crate = builder.getRoCrateBuilder().build();
86 var entity = crate.getEntityById("file");
87 assertEquals("name", entity.getProperty("name").asText());
88 assertEquals("text/csv", entity.getProperty("encodingFormat").asText());
89 }
90
91 @Test
92 public void testBuild() throws IOException {
93 var user = new User("bob");
94 var collection = getCollection(user);
95 var builder = new ExportBuilder(collection);
96
97 assertNotNull(builder.build());
98 }
99
100 private Collection getCollection(User user) {
101 var collection = new Collection() {
102 {
103 setId(2L);
104 setShepardId(2L);
105 setName("Collection Name");
106 setDescription("Desc");
107 setCreatedAt(dateHelper.getDate());
108 setCreatedBy(user);
109 }
110 };
111 return collection;
112 }
113
114 private DataObject getDataObject(User user, Collection collection) {
115 var dataObject = new DataObject() {
116 {
117 setId(3L);
118 setShepardId(3L);
119 setName("DataObject Name");
120 setCreatedAt(dateHelper.getDate());
121 setUpdatedAt(dateHelper.getDate());
122 setCollection(collection);
123 }
124 };
125 return dataObject;
126 }
127
128 private BasicReference getReference(User user, DataObject dataObject) {
129 var reference = new BasicReference() {
130 {
131 setId(4L);
132 setShepardId(4L);
133 setName("Reference Name");
134 setCreatedAt(dateHelper.getDate());
135 setCreatedBy(user);
136 setDataObject(dataObject);
137 }
138 };
139 return reference;
140 }
141 }