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 }