4911060a18022b70ce2ca96b765e487f82415428
[sdc/sdc-workflow-designer.git] / workflow-designer-be / src / test / java / org / onap / sdc / workflow / services / UniqueValueServiceTest.java
1 package org.onap.sdc.workflow.services;
2
3 import static org.junit.Assert.assertFalse;
4 import static org.junit.Assert.assertTrue;
5 import static org.mockito.ArgumentMatchers.any;
6 import static org.mockito.ArgumentMatchers.anyString;
7 import static org.mockito.Mockito.doReturn;
8 import static org.mockito.Mockito.never;
9 import static org.mockito.Mockito.times;
10 import static org.mockito.Mockito.verify;
11
12 import java.util.Optional;
13 import org.junit.Before;
14 import org.junit.Test;
15 import org.mockito.InjectMocks;
16 import org.mockito.Mock;
17 import org.mockito.MockitoAnnotations;
18 import org.mockito.Spy;
19 import org.onap.sdc.workflow.persistence.UniqueValueRepository;
20 import org.onap.sdc.workflow.persistence.types.UniqueValueEntity;
21 import org.onap.sdc.workflow.services.exceptions.UniqueValueViolationException;
22
23 public class UniqueValueServiceTest {
24
25     private static final String TYPE = "ss";
26     private static final String DUMMY_COMBINATION = "dummy";
27
28     @Mock
29     private UniqueValueRepository uniqueValueRepositoryMock;
30
31     @Spy
32     @InjectMocks
33     private UniqueValueService uniqueValueService;
34
35     @Before
36     public void setUp() {
37         MockitoAnnotations.initMocks(this);
38     }
39
40     @Test
41     public void shouldCallRepositoryInsertIfValueUnique(){
42         doReturn(Optional.empty()).when(uniqueValueRepositoryMock).findById(any());
43         uniqueValueService.createUniqueValue(TYPE, new String[]{DUMMY_COMBINATION});
44         verify(uniqueValueRepositoryMock, times(1)).insert(any(UniqueValueEntity.class));
45     }
46
47     @Test
48     public void shouldNotCheckValueIfNoUniqueCombination(){
49         uniqueValueService.createUniqueValue(TYPE, null);
50         verify(uniqueValueRepositoryMock, never()).findById(any(UniqueValueEntity.class));
51     }
52
53     @Test(expected = UniqueValueViolationException.class)
54     public void shouldThrowExceptionIfValueIsNotUnique(){
55         doReturn(Optional.of("xxx")).when(uniqueValueRepositoryMock).findById(any());
56         uniqueValueService.createUniqueValue(TYPE, new String[]{DUMMY_COMBINATION});
57     }
58
59     @Test
60     public void shouldCallRepositoryDeleteIfValueValid(){
61         uniqueValueService.deleteUniqueValue(TYPE, new String[]{DUMMY_COMBINATION});
62         verify(uniqueValueRepositoryMock, times(1)).delete(any(UniqueValueEntity.class));
63     }
64
65     @Test
66     public void shouldNotCallRepositoryDeleteIfValueNouniqueCombination(){
67         uniqueValueService.deleteUniqueValue(TYPE, new String[]{});
68         verify(uniqueValueRepositoryMock, never()).delete(any(UniqueValueEntity.class));
69     }
70
71     @Test
72     public void shouldNotUpdateIfNewAndOldValueAreEqualsCaseIgnore(){
73         String value = "value";
74         uniqueValueService.updateUniqueValue(TYPE, value, value.toUpperCase());
75         verify(uniqueValueService, never()).createUniqueValue(anyString(), any());
76     }
77
78     @Test
79     public void shouldUpdateIfNewAndOldValueAreNotEqualsCaseIgnore(){
80         String oldValue = "oldValue";
81         String newValue = "newValue";
82         uniqueValueService.updateUniqueValue(TYPE, oldValue, newValue);
83         verify(uniqueValueService, times(1)).createUniqueValue(anyString(), any());
84         verify(uniqueValueService, times(1)).deleteUniqueValue(anyString(), any());
85     }
86
87     @Test
88     public void shouldReturnTrueIfValueExist() {
89         doReturn(Optional.of("xxx")).when(uniqueValueRepositoryMock).findById(any());
90         assertTrue(uniqueValueService.isUniqueValueOccupied(TYPE, new String[]{DUMMY_COMBINATION}));
91     }
92
93     @Test
94     public void shouldReturnFalseIfValueNotExist() {
95         doReturn(Optional.empty()).when(uniqueValueRepositoryMock).findById(any());
96         assertFalse(uniqueValueService.isUniqueValueOccupied(TYPE, new String[]{DUMMY_COMBINATION}));
97     }
98 }