Obtain and control VSP package upload status
[sdc.git] / openecomp-be / lib / openecomp-sdc-vendor-software-product-lib / openecomp-sdc-vendor-software-product-core / src / test / java / org / openecomp / sdc / vendorsoftwareproduct / dao / impl / VspUploadStatusRecordDaoImlTest.java
1 /*
2  * -
3  *  ============LICENSE_START=======================================================
4  *  Copyright (C) 2022 Nordix Foundation.
5  *  ================================================================================
6  *  Licensed under the Apache License, Version 2.0 (the "License");
7  *  you may not use this file except in compliance with the License.
8  *  You may obtain a copy of the License at
9  *
10  *       http://www.apache.org/licenses/LICENSE-2.0
11  *
12  *  Unless required by applicable law or agreed to in writing, software
13  *  distributed under the License is distributed on an "AS IS" BASIS,
14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  *
18  *  SPDX-License-Identifier: Apache-2.0
19  *  ============LICENSE_END=========================================================
20  */
21
22 package org.openecomp.sdc.vendorsoftwareproduct.dao.impl;
23
24 import static org.junit.jupiter.api.Assertions.assertEquals;
25 import static org.junit.jupiter.api.Assertions.assertTrue;
26 import static org.mockito.Mockito.mock;
27 import static org.mockito.Mockito.when;
28
29 import com.datastax.driver.mapping.Result;
30 import java.util.ArrayList;
31 import java.util.Calendar;
32 import java.util.List;
33 import java.util.Optional;
34 import java.util.UUID;
35 import java.util.stream.IntStream;
36 import org.junit.jupiter.api.BeforeEach;
37 import org.junit.jupiter.api.Test;
38 import org.mockito.Mock;
39 import org.mockito.MockitoAnnotations;
40 import org.openecomp.sdc.vendorsoftwareproduct.dao.VspUploadStatusRecordAccessor;
41 import org.openecomp.sdc.vendorsoftwareproduct.dao.type.VspUploadStatusRecord;
42
43 class VspUploadStatusRecordDaoImlTest {
44
45     @Mock
46     private VspUploadStatusRecordAccessor accessor;
47
48     private VspUploadStatusRecordDaoIml packageUploadManagerDaoIml;
49
50     @BeforeEach
51     void setUp() {
52         MockitoAnnotations.openMocks(this);
53         packageUploadManagerDaoIml = new VspUploadStatusRecordDaoIml(accessor);
54     }
55
56     @Test
57     void findAllByVspIdAndVersionIdSuccessTest() {
58         //given
59         final String vspId = "vspId";
60         final String vspVersionId = "vspVersionId";
61         final List<VspUploadStatusRecord> expectedVspUploadStatusRecordList = List.of(new VspUploadStatusRecord(), new VspUploadStatusRecord());
62         final Result<VspUploadStatusRecord> resultMock = mock(Result.class);
63         when(resultMock.all()).thenReturn(expectedVspUploadStatusRecordList);
64         when(accessor.findAllByVspIdAndVspVersionId(vspId, vspVersionId)).thenReturn(resultMock);
65         //when
66         final List<VspUploadStatusRecord> actualVspUploadStatusRecordList =
67             packageUploadManagerDaoIml.findAllByVspIdAndVersionId(vspId, vspVersionId);
68         //then
69         assertEquals(expectedVspUploadStatusRecordList, actualVspUploadStatusRecordList);
70     }
71
72     @Test
73     void findByVspIdAndVersionIdAndLockIdSuccessTest() {
74         //given
75         final String vspId = "vspId";
76         final String vspVersionId = "vspVersionId";
77         final UUID lockId = UUID.randomUUID();
78         final var expectedVspUploadStatus = new VspUploadStatusRecord();
79         final Result<VspUploadStatusRecord> resultMock = mock(Result.class);
80         when(resultMock.one()).thenReturn(expectedVspUploadStatus);
81         when(accessor.findByVspIdAndVersionIdAndLockId(vspId, vspVersionId, lockId)).thenReturn(resultMock);
82         //when
83         final Optional<VspUploadStatusRecord> vspUploadStatusOptional =
84             packageUploadManagerDaoIml.findByVspIdAndVersionIdAndLockId(vspId, vspVersionId, lockId);
85         //then
86         assertTrue(vspUploadStatusOptional.isPresent());
87         assertEquals(expectedVspUploadStatus, vspUploadStatusOptional.get());
88     }
89
90     @Test
91     void findAllNotCompleteSuccessTest() {
92         //given
93         final String vspId = "vspId";
94         final String vspVersionId = "vspVersionId";
95         final List<VspUploadStatusRecord> expectedVspUploadStatusRecordList = List.of(new VspUploadStatusRecord(), new VspUploadStatusRecord());
96         final Result<VspUploadStatusRecord> resultMock = mock(Result.class);
97         when(resultMock.all()).thenReturn(expectedVspUploadStatusRecordList);
98         when(accessor.findAllIncomplete(vspId, vspVersionId)).thenReturn(resultMock);
99         //when
100         final List<VspUploadStatusRecord> actualVspUploadStatusRecordList = packageUploadManagerDaoIml.findAllInProgress(vspId, vspVersionId);
101         //then
102         assertEquals(expectedVspUploadStatusRecordList, actualVspUploadStatusRecordList);
103     }
104
105     @Test
106     void findLatestSuccessTest() {
107         //given
108         final String vspId = "vspId";
109         final String vspVersionId = "vspVersionId";
110         final List<VspUploadStatusRecord> expectedVspUploadStatusRecordList = new ArrayList<>();
111         IntStream.rangeClosed(1, 31)
112             .mapToObj(day -> {
113                 final VspUploadStatusRecord vspUploadStatusRecord = new VspUploadStatusRecord();
114                 final Calendar calendar = Calendar.getInstance();
115                 calendar.set(2022, Calendar.JANUARY, day);
116                 vspUploadStatusRecord.setCreated(calendar.getTime());
117                 return vspUploadStatusRecord;
118             })
119             .forEach(expectedVspUploadStatusRecordList::add);
120         final Result<VspUploadStatusRecord> resultMock = mock(Result.class);
121         when(resultMock.all()).thenReturn(expectedVspUploadStatusRecordList);
122
123         final VspUploadStatusRecord mostRecentVspUploadStatus = expectedVspUploadStatusRecordList.get(expectedVspUploadStatusRecordList.size() - 1);
124
125         when(accessor.findAllByVspIdAndVspVersionId(vspId, vspVersionId)).thenReturn(resultMock);
126         //when
127         final Optional<VspUploadStatusRecord> vspUploadStatusOptional = packageUploadManagerDaoIml.findLatest(vspId, vspVersionId);
128         //then
129         assertTrue(vspUploadStatusOptional.isPresent());
130         assertEquals(mostRecentVspUploadStatus, vspUploadStatusOptional.get());
131     }
132
133     @Test
134     void findLatest_noEntryFoundTest() {
135         //given
136         final String vspId = "vspId";
137         final String vspVersionId = "vspVersionId";
138         final Result<VspUploadStatusRecord> resultMock = mock(Result.class);
139         when(resultMock.all()).thenReturn(new ArrayList<>());
140
141         when(accessor.findAllByVspIdAndVspVersionId(vspId, vspVersionId)).thenReturn(resultMock);
142         //when
143         final Optional<VspUploadStatusRecord> vspUploadStatusOptional = packageUploadManagerDaoIml.findLatest(vspId, vspVersionId);
144         //then
145         assertTrue(vspUploadStatusOptional.isEmpty());
146     }
147
148 }