View Javadoc
1   package de.dlr.shepard.context.version.services;
2   
3   import static org.assertj.core.api.Assertions.assertThat;
4   import static org.junit.jupiter.api.Assertions.assertEquals;
5   import static org.mockito.ArgumentMatchers.any;
6   import static org.mockito.Mockito.times;
7   import static org.mockito.Mockito.verify;
8   import static org.mockito.Mockito.when;
9   
10  import de.dlr.shepard.BaseTestCase;
11  import de.dlr.shepard.auth.users.daos.UserDAO;
12  import de.dlr.shepard.auth.users.entities.User;
13  import de.dlr.shepard.common.util.DateHelper;
14  import de.dlr.shepard.context.collection.daos.CollectionDAO;
15  import de.dlr.shepard.context.collection.entities.Collection;
16  import de.dlr.shepard.context.collection.services.CollectionService;
17  import de.dlr.shepard.context.version.daos.VersionDAO;
18  import de.dlr.shepard.context.version.entities.Version;
19  import de.dlr.shepard.context.version.io.VersionIO;
20  import io.quarkus.test.InjectMock;
21  import io.quarkus.test.component.QuarkusComponentTest;
22  import jakarta.inject.Inject;
23  import java.util.Date;
24  import java.util.List;
25  import java.util.UUID;
26  import org.junit.jupiter.api.Test;
27  import org.mockito.ArgumentCaptor;
28  import org.mockito.Captor;
29  
30  @QuarkusComponentTest
31  public class VersionServiceTest extends BaseTestCase {
32  
33    @InjectMock
34    VersionDAO versionDAO;
35  
36    @InjectMock
37    UserDAO userDAO;
38  
39    @InjectMock
40    CollectionService collectionService;
41  
42    @InjectMock
43    DateHelper dateHelper;
44  
45    @InjectMock
46    UUID uuid;
47  
48    @Captor
49    ArgumentCaptor<Version> newVersionCaptor;
50  
51    @Captor
52    ArgumentCaptor<Version> HEADVersionCaptor;
53  
54    @Captor
55    ArgumentCaptor<Collection> collectionCaptor;
56  
57    @InjectMock
58    CollectionDAO collectionDAO;
59  
60    @Inject
61    VersionService service;
62  
63    @Test
64    public void getAllVersionsTest() {
65      Version ver1 = new Version();
66      Version ver2 = new Version();
67      ver1.setName("name1");
68      ver2.setName("name2");
69      long collectionId = 10L;
70      when(versionDAO.findAllVersions(collectionId)).thenReturn(List.of(ver1, ver2));
71      List<Version> allVersions = service.getAllVersions(collectionId);
72      assertThat(allVersions.contains(ver1));
73      assertThat(allVersions.contains(ver2));
74    }
75  
76    @Test
77    public void createVersionTest() {
78      long collectionId = 15L;
79      Collection collection = new Collection(collectionId);
80      VersionIO versionIO = new VersionIO();
81      versionIO.setDescription("new Version");
82      String username = "username";
83      User user = new User(username);
84      Version HEADVersion = new Version();
85      HEADVersion.setName("HEADVersion");
86      Version newVersion = new Version();
87      newVersion.setName("new Version");
88      UUID HeadVersionUUID = new UUID(2L, 3L);
89      HEADVersion.setUid(HeadVersionUUID);
90      Version predecessorVersion = new Version();
91      predecessorVersion.setName("predecessor");
92      UUID predecessorUUID = new UUID(1L, 2L);
93      predecessorVersion.setUid(predecessorUUID);
94      HEADVersion.setPredecessor(predecessorVersion);
95      Date date = new Date(10L);
96      when(versionDAO.findHEADVersion(collectionId)).thenReturn(HEADVersion);
97      when(userDAO.find(username)).thenReturn(user);
98      when(collectionService.getCollectionWithDataObjectsAndIncomingReferences(collectionId, null)).thenReturn(
99        collection
100     );
101     when(dateHelper.getDate()).thenReturn(date);
102     when(versionDAO.createOrUpdate(any())).thenReturn(predecessorVersion);
103     service.createVersion(collectionId, versionIO, username);
104     verify(versionDAO, times(2)).createOrUpdate(newVersionCaptor.capture());
105     verify(collectionDAO, times(1)).createOrUpdate(any());
106   }
107 
108   @Test
109   public void getVersionTest() {
110     UUID VersionUID = new UUID(0L, 1L);
111     Version version = new Version(VersionUID);
112     when(versionDAO.find(VersionUID)).thenReturn(version);
113     assertEquals(version, service.getVersion(VersionUID));
114   }
115 }