1 package de.dlr.shepard.context.references.basicreference.services;
2
3 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
4 import static org.junit.jupiter.api.Assertions.assertEquals;
5 import static org.junit.jupiter.api.Assertions.assertThrows;
6 import static org.mockito.Mockito.when;
7
8 import de.dlr.shepard.auth.users.daos.UserDAO;
9 import de.dlr.shepard.auth.users.entities.User;
10 import de.dlr.shepard.common.exceptions.InvalidPathException;
11 import de.dlr.shepard.common.util.DateHelper;
12 import de.dlr.shepard.common.util.QueryParamHelper;
13 import de.dlr.shepard.context.collection.entities.DataObject;
14 import de.dlr.shepard.context.references.basicreference.daos.BasicReferenceDAO;
15 import de.dlr.shepard.context.references.basicreference.entities.BasicReference;
16 import io.quarkus.test.InjectMock;
17 import io.quarkus.test.component.QuarkusComponentTest;
18 import jakarta.inject.Inject;
19 import java.util.Date;
20 import java.util.List;
21 import org.junit.jupiter.api.Test;
22
23 @QuarkusComponentTest
24 public class BasicReferenceServiceTest {
25
26 @InjectMock
27 BasicReferenceDAO dao;
28
29 @InjectMock
30 UserDAO userDAO;
31
32 @InjectMock
33 DateHelper dateHelper;
34
35 @Inject
36 BasicReferenceService service;
37
38 private final long collectionId = 123456L;
39 private final User user = new User("Testuser");
40
41 @Test
42 public void getBasicReferenceByShepardIdTest_successful() {
43 BasicReference ref = new BasicReference(1L);
44 ref.setShepardId(15L);
45
46 DataObject dataObject = new DataObject(5432L);
47 dataObject.setShepardId(54321L);
48 dataObject.setReferences(List.of(ref));
49 ref.setDataObject(dataObject);
50
51 when(dao.findByShepardId(ref.getShepardId())).thenReturn(ref);
52
53 BasicReference actual = service.getReference(collectionId, dataObject.getShepardId(), ref.getShepardId());
54 assertEquals(ref, actual);
55 }
56
57 @Test
58 public void getBasicReferenceByShepardIdNotFoundTest() {
59 BasicReference ref = new BasicReference(1L);
60 ref.setShepardId(15L);
61
62 DataObject dataObject = new DataObject(5432L);
63 dataObject.setShepardId(54321L);
64 dataObject.setReferences(List.of(ref));
65 ref.setDataObject(dataObject);
66
67 when(dao.findByShepardId(ref.getShepardId())).thenReturn(null);
68
69 var ex = assertThrows(InvalidPathException.class, () ->
70 service.getReference(collectionId, dataObject.getShepardId(), ref.getShepardId())
71 );
72 assertEquals("ID ERROR - Basic Reference with id 15 is null or deleted", ex.getMessage());
73 }
74
75 @Test
76 public void getBasicReferenceByShepardIdIsDeletedTest() {
77 BasicReference ref = new BasicReference(1L);
78 ref.setShepardId(15L);
79 ref.setDeleted(true);
80
81 DataObject dataObject = new DataObject(5432L);
82 dataObject.setShepardId(54321L);
83 dataObject.setReferences(List.of(ref));
84 ref.setDataObject(dataObject);
85
86 when(dao.findByShepardId(ref.getShepardId())).thenReturn(ref);
87
88 var ex = assertThrows(InvalidPathException.class, () ->
89 service.getReference(collectionId, dataObject.getShepardId(), ref.getShepardId())
90 );
91 assertEquals("ID ERROR - Basic Reference with id 15 is null or deleted", ex.getMessage());
92 }
93
94 @Test
95 public void getAllBasicReferencesByShepardIdsTest() {
96 var ref1 = new BasicReference(1L);
97 ref1.setShepardId(15L);
98 var ref2 = new BasicReference(2L);
99 ref2.setShepardId(25L);
100 var ref3 = new BasicReference(3L);
101 ref3.setShepardId(35L);
102 ref3.setDeleted(true);
103 QueryParamHelper params = new QueryParamHelper().withName("test");
104 Long dataObjectShepardId = 2005L;
105
106 when(dao.findByDataObjectShepardId(dataObjectShepardId, params)).thenReturn(List.of(ref1, ref2));
107
108 var actual = service.getAllBasicReferences(collectionId, dataObjectShepardId, params);
109 assertEquals(List.of(ref1, ref2), actual);
110 }
111
112 @Test
113 public void deleteReferenceByShepardIdTest() {
114 Date date = new Date(30L);
115 BasicReference ref = new BasicReference(1L);
116 ref.setShepardId(15L);
117
118 DataObject dataObject = new DataObject(5432L);
119 dataObject.setShepardId(54321L);
120 dataObject.setReferences(List.of(ref));
121 ref.setDataObject(dataObject);
122
123 BasicReference expected = new BasicReference(ref.getId());
124 expected.setShepardId(ref.getShepardId());
125 expected.setDeleted(true);
126 expected.setUpdatedAt(date);
127 expected.setUpdatedBy(user);
128
129 when(dao.findByShepardId(ref.getShepardId())).thenReturn(ref);
130 when(userDAO.find(user.getUsername())).thenReturn(user);
131 when(dateHelper.getDate()).thenReturn(date);
132
133 assertDoesNotThrow(() -> service.deleteReference(collectionId, dataObject.getShepardId(), ref.getShepardId()));
134 }
135 }