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