3
3
// SPDX-License-Identifier: Apache-2.0
4
4
package org .lfenergy .compas .scl .data .service ;
5
5
6
+ import org .junit .jupiter .api .BeforeEach ;
6
7
import org .junit .jupiter .api .Test ;
7
8
import org .junit .jupiter .api .extension .ExtendWith ;
9
+ import org .lfenergy .compas .commons .CompasExtensionsManager ;
8
10
import org .lfenergy .compas .scl .SCL ;
9
11
import org .lfenergy .compas .scl .THeader ;
10
12
import org .lfenergy .compas .scl .data .model .ChangeSetType ;
11
13
import org .lfenergy .compas .scl .data .model .SclType ;
12
14
import org .lfenergy .compas .scl .data .model .Version ;
13
15
import org .lfenergy .compas .scl .data .repository .CompasSclDataRepository ;
14
- import org .mockito .InjectMocks ;
16
+ import org .lfenergy .compas .scl .extensions .ObjectFactory ;
17
+ import org .lfenergy .compas .scl .extensions .TSclFileType ;
15
18
import org .mockito .Mock ;
16
19
import org .mockito .junit .jupiter .MockitoExtension ;
17
20
18
21
import java .util .UUID ;
19
22
20
23
import static java .util .Collections .emptyList ;
21
- import static org .junit .jupiter .api .Assertions .assertNotNull ;
24
+ import static org .junit .jupiter .api .Assertions .*;
25
+ import static org .lfenergy .compas .scl .extensions .common .CompasExtensionsField .SCL_FILETYPE_EXTENSION ;
26
+ import static org .lfenergy .compas .scl .extensions .common .CompasExtensionsField .SCL_NAME_EXTENSION ;
22
27
import static org .mockito .Mockito .*;
23
28
24
29
@ ExtendWith (MockitoExtension .class )
25
30
class CompasSclDataServiceTest {
31
+ private CompasExtensionsManager compasExtensionsManager = new CompasExtensionsManager ();
32
+
26
33
@ Mock
27
34
private CompasSclDataRepository compasSclDataRepository ;
28
35
29
- @ InjectMocks
30
36
private CompasSclDataService compasSclDataService ;
31
37
38
+ @ BeforeEach
39
+ void beforeEach () {
40
+ compasSclDataService = new CompasSclDataService (compasSclDataRepository , compasExtensionsManager );
41
+ }
42
+
32
43
@ Test
33
44
void list_WhenCalled_ThenRepositoryIsCalled () {
34
45
var type = SclType .SCD ;
@@ -88,20 +99,40 @@ void create_WhenCalled_ThenRepositoryIsCalledAndUUIDIsReturned() {
88
99
var uuid = compasSclDataService .create (type , name , scl );
89
100
90
101
assertNotNull (uuid );
102
+ assertCompasExtenions (scl , name , type );
103
+ verify (compasSclDataRepository , times (1 )).create (eq (type ), any (UUID .class ), eq (scl ), any (Version .class ));
104
+ }
105
+
106
+ @ Test
107
+ void create_WhenCalledWithCompasExtension_ThenRepositoryIsCalledAndUUIDIsReturned () {
108
+ var type = SclType .SCD ;
109
+ var name = "JUSTSOMENAME" ;
110
+ var scl = createBasicSCL ();
111
+ createCompasPrivate (scl , "JUSTANOTHERNAME" , SclType .ISD );
112
+
113
+ doNothing ().when (compasSclDataRepository ).create (eq (type ), any (UUID .class ), eq (scl ), any (Version .class ));
114
+
115
+ var uuid = compasSclDataService .create (type , name , scl );
116
+
117
+ assertNotNull (uuid );
118
+ assertCompasExtenions (scl , name , type );
91
119
verify (compasSclDataRepository , times (1 )).create (eq (type ), any (UUID .class ), eq (scl ), any (Version .class ));
92
120
}
93
121
94
122
@ Test
95
123
void update_WhenCalled_ThenRepositoryIsCalledAndNewUUIDIsReturned () {
96
124
var type = SclType .SCD ;
125
+ var name = "JUSTANOTHERNAME" ;
97
126
var uuid = UUID .randomUUID ();
98
127
var scl = createBasicSCL ();
128
+ createCompasPrivate (scl , name , SclType .ISD );
99
129
100
130
when (compasSclDataRepository .findByUUID (type , uuid )).thenReturn (createBasicSCL ());
101
131
doNothing ().when (compasSclDataRepository ).create (eq (type ), eq (uuid ), eq (scl ), any (Version .class ));
102
132
103
133
compasSclDataService .update (type , uuid , ChangeSetType .MAJOR , scl );
104
134
135
+ assertCompasExtenions (scl , name , type );
105
136
verify (compasSclDataRepository , times (1 )).create (eq (type ), eq (uuid ), eq (scl ), any (Version .class ));
106
137
verify (compasSclDataRepository , times (1 )).findByUUID (type , uuid );
107
138
}
@@ -131,10 +162,32 @@ void delete_WhenCalledWithVersion_ThenRepositoryIsCalled() {
131
162
verify (compasSclDataRepository , times (1 )).delete (type , uuid , version );
132
163
}
133
164
165
+ private void assertCompasExtenions (SCL scl , String name , SclType type ) {
166
+ var compasPrivate = compasExtensionsManager .getCompasPrivate (scl );
167
+ assertTrue (compasPrivate .isPresent ());
168
+
169
+ var nameElement = compasExtensionsManager .getCompasElement (compasPrivate .get (), SCL_NAME_EXTENSION );
170
+ assertTrue (nameElement .isPresent ());
171
+ assertEquals (name , nameElement .get ().getValue ().toString ());
172
+
173
+ var typeElement = compasExtensionsManager .getCompasElement (compasPrivate .get (), SCL_FILETYPE_EXTENSION );
174
+ assertTrue (typeElement .isPresent ());
175
+ assertEquals (type .toString (), typeElement .get ().getValue ().toString ());
176
+ }
177
+
134
178
private SCL createBasicSCL () {
135
179
var scl = new SCL ();
136
180
scl .setHeader (new THeader ());
137
181
scl .getHeader ().setVersion ("1.0.0" );
138
182
return scl ;
139
183
}
184
+
185
+ private void createCompasPrivate (SCL scl , String name , SclType type ) {
186
+ var compasPrivateElementFactory = new ObjectFactory ();
187
+ var compasPrivate = compasExtensionsManager .createCompasPrivate ();
188
+ compasPrivate .getContent ().add (compasPrivateElementFactory .createSclName (name ));
189
+ TSclFileType sclFileType = TSclFileType .valueOf (type .toString ());
190
+ compasPrivate .getContent ().add (compasPrivateElementFactory .createSclFileType (sclFileType ));
191
+ scl .getPrivate ().add (compasPrivate );
192
+ }
140
193
}
0 commit comments