Skip to content

Commit 809106b

Browse files
committed
feat: refactor and fix SclReport behavior #304
Signed-off-by: Samir Romdhani <[email protected]> refactor test code to use AssertJ and using Gherkin to define scenarios #306 Signed-off-by: Samir Romdhani <[email protected]>
1 parent 3da0cc2 commit 809106b

File tree

18 files changed

+610
-692
lines changed

18 files changed

+610
-692
lines changed

sct-app/src/main/java/org/lfenergy/compas/sct/app/SclAutomationService.java

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
import org.lfenergy.compas.sct.commons.dto.HeaderDTO;
1111
import org.lfenergy.compas.sct.commons.dto.SubNetworkDTO;
1212
import org.lfenergy.compas.sct.commons.exception.ScdException;
13-
import org.lfenergy.compas.sct.commons.scl.SclRootAdapter;
1413
import org.lfenergy.compas.sct.commons.scl.SclService;
1514
import org.lfenergy.compas.sct.commons.scl.SubstationService;
1615

@@ -22,7 +21,7 @@
2221
* The following features are supported:
2322
* </p>
2423
* <ul>
25-
* <li>{@link SclAutomationService#createSCD(SCL, HeaderDTO, Set) Adds all elements under the <b>SCL </b> object from given <b>SSD </b> and <b>STD </b> files}
24+
* <li>{@link SclAutomationService#createSCD(SCL, HeaderDTO, List) Adds all elements under the <b>SCL </b> object from given <b>SSD </b> and <b>STD </b> files}
2625
* </ul>
2726
*/
2827
public class SclAutomationService {
@@ -40,24 +39,24 @@ private SclAutomationService() {
4039
}
4140

4241
/**
43-
* Create a SCD file from specified parameters, it calls all functions defined in the process one by one, every step
44-
* return a SCD file which will be used by the next step.
42+
* Create an SCD file from specified parameters, it calls all functions defined in the process one by one, every step
43+
* return an SCD file which will be used by the next step.
4544
* @param ssd : (mandatory) file contains substation datas
4645
* @param headerDTO : (mandatory) object which hold header datas and historys' one
47-
* @param stds : (optional) list of STD files containing IED datas (IED, Communication and DataTypeTemplate)
48-
* @return a SCD file encapsuled in object SclRootAdapter
46+
* @param stds : list of STD files containing IED datas (IED, Communication and DataTypeTemplate)
47+
* @return an SCD object
4948
* @throws ScdException
5049
*/
51-
public static SclRootAdapter createSCD(@NonNull SCL ssd, @NonNull HeaderDTO headerDTO, Set<SCL> stds) throws ScdException {
52-
SclRootAdapter scdAdapter = SclService.initScl(Optional.ofNullable(headerDTO.getId()),
50+
public static SCL createSCD(@NonNull SCL ssd, @NonNull HeaderDTO headerDTO, List<SCL> stds) throws ScdException {
51+
SCL scd = SclService.initScl(Optional.ofNullable(headerDTO.getId()),
5352
headerDTO.getVersion(), headerDTO.getRevision());
5453
if (!headerDTO.getHistoryItems().isEmpty()) {
5554
HeaderDTO.HistoryItem hItem = headerDTO.getHistoryItems().get(0);
56-
SclService.addHistoryItem(scdAdapter.getCurrentElem(), hItem.getWho(), hItem.getWhat(), hItem.getWhy());
55+
SclService.addHistoryItem(scd, hItem.getWho(), hItem.getWhat(), hItem.getWhy());
5756
}
58-
SubstationService.addSubstation(scdAdapter.getCurrentElem(), ssd);
59-
SclService.importSTDElementsInSCD(scdAdapter, stds, comMap);
60-
SclService.removeAllControlBlocksAndDatasetsAndExtRefSrcBindings(scdAdapter.getCurrentElem());
61-
return scdAdapter;
57+
SubstationService.addSubstation(scd, ssd);
58+
SclService.importSTDElementsInSCD(scd, stds, comMap);
59+
SclService.removeAllControlBlocksAndDatasetsAndExtRefSrcBindings(scd);
60+
return scd;
6261
}
6362
}

sct-app/src/test/java/org.lfenergy.compas.sct.app/SclAutomationServiceTest.java

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
import java.lang.reflect.Constructor;
1919
import java.lang.reflect.InvocationTargetException;
2020
import java.util.Arrays;
21-
import java.util.HashSet;
22-
import java.util.Set;
21+
import java.util.List;
2322

2423
import static org.assertj.core.api.Assertions.assertThat;
2524
import static org.assertj.core.api.Assertions.assertThatThrownBy;
@@ -43,15 +42,15 @@ void createSCD_should_return_generatedSCD() throws Exception {
4342
SCL ssd = SclTestMarshaller.getSCLFromFile("/scd-ied-dtt-com-import-stds/scd.xml");
4443
SCL std = SclTestMarshaller.getSCLFromFile("/scd-ied-dtt-com-import-stds/std.xml");
4544
// When
46-
SclRootAdapter expectedSCD = SclAutomationService.createSCD(ssd, headerDTO, Set.of(std));
45+
SCL scd = SclAutomationService.createSCD(ssd, headerDTO, List.of(std));
4746
// Then
48-
assertNotNull(expectedSCD.getCurrentElem().getHeader().getId());
49-
assertNull(expectedSCD.getCurrentElem().getHeader().getHistory());
50-
assertEquals(1, expectedSCD.getCurrentElem().getSubstation().size());
51-
assertEquals(1, expectedSCD.getCurrentElem().getIED().size());
52-
assertNotNull(expectedSCD.getCurrentElem().getDataTypeTemplates());
53-
assertEquals(2, expectedSCD.getCurrentElem().getCommunication().getSubNetwork().size());
54-
assertIsMarshallable(expectedSCD.getCurrentElem());
47+
assertNotNull(scd.getHeader().getId());
48+
assertNull(scd.getHeader().getHistory());
49+
assertEquals(1, scd.getSubstation().size());
50+
assertEquals(1, scd.getIED().size());
51+
assertNotNull(scd.getDataTypeTemplates());
52+
assertEquals(2, scd.getCommunication().getSubNetwork().size());
53+
assertIsMarshallable(scd);
5554
}
5655

5756
@Test
@@ -67,16 +66,16 @@ void createSCD_With_HItem() throws Exception {
6766
SCL std2 = SclTestMarshaller.getSCLFromFile("/std_2.xml");
6867
SCL std3 = SclTestMarshaller.getSCLFromFile("/std_3.xml");
6968
// When
70-
SclRootAdapter expectedSCD = SclAutomationService.createSCD(ssd, headerDTO, Set.of(std1, std2, std3));
69+
SCL scd = SclAutomationService.createSCD(ssd, headerDTO, List.of(std1, std2, std3));
7170
// Then
72-
assertNotNull(expectedSCD.getCurrentElem().getHeader().getId());
73-
assertEquals(1, expectedSCD.getCurrentElem().getHeader().getHistory().getHitem().size());
74-
assertEquals(1, expectedSCD.getCurrentElem().getSubstation().size());
75-
assertIsMarshallable(expectedSCD.getCurrentElem());
71+
assertNotNull(scd.getHeader().getId());
72+
assertEquals(1, scd.getHeader().getHistory().getHitem().size());
73+
assertEquals(1, scd.getSubstation().size());
74+
assertIsMarshallable(scd);
7675
}
7776

7877
@Test
79-
void createSCD_With_HItems() throws Exception {
78+
void createSCD_With_HItems() {
8079
// Given
8180
HeaderDTO.HistoryItem historyItem = new HeaderDTO.HistoryItem();
8281
historyItem.setWhat("what");
@@ -92,20 +91,20 @@ void createSCD_With_HItems() throws Exception {
9291
SCL std2 = SclTestMarshaller.getSCLFromFile("/std_2.xml");
9392
SCL std3 = SclTestMarshaller.getSCLFromFile("/std_3.xml");
9493
// When
95-
SclRootAdapter expectedSCD = SclAutomationService.createSCD(ssd, headerDTO, Set.of(std1, std2, std3));
94+
SCL scd = SclAutomationService.createSCD(ssd, headerDTO, List.of(std1, std2, std3));
9695
// Then
97-
assertNotNull(expectedSCD.getCurrentElem().getHeader().getId());
98-
assertEquals(1, expectedSCD.getCurrentElem().getHeader().getHistory().getHitem().size());
99-
assertEquals("what", expectedSCD.getCurrentElem().getHeader().getHistory().getHitem().get(0).getWhat());
100-
assertIsMarshallable(expectedSCD.getCurrentElem());
96+
assertNotNull(scd.getHeader().getId());
97+
assertEquals(1, scd.getHeader().getHistory().getHitem().size());
98+
assertEquals("what", scd.getHeader().getHistory().getHitem().get(0).getWhat());
99+
assertIsMarshallable(scd);
101100
}
102101

103102
@Test
104103
void createSCD_SSD_Without_Substation() throws Exception {
105104
// Given
106105
SCL ssd = SclTestMarshaller.getSCLFromFile("/scd-substation-import-ssd/ssd_without_substations.xml");
107106
// When & Then
108-
Set<SCL> stdListEmpty = new HashSet<>();
107+
List<SCL> stdListEmpty = List.of();
109108
assertThrows(ScdException.class,
110109
() -> SclAutomationService.createSCD(ssd, headerDTO, stdListEmpty));
111110
}
@@ -119,7 +118,7 @@ void createSCD_should_throw_exception_when_null_ssd() throws Exception {
119118
historyItem.setWhy("because");
120119
headerDTO.getHistoryItems().add(historyItem);
121120
SCL std1 = SclTestMarshaller.getSCLFromFile("/std_1.xml");
122-
Set<SCL> stdList = Set.of(std1);
121+
List<SCL> stdList = List.of(std1);
123122

124123
// When & Then
125124
assertThrows(NullPointerException.class, () -> SclAutomationService.createSCD(null, headerDTO, stdList));
@@ -130,7 +129,7 @@ void createSCD_should_throw_exception_when_null_headerDTO() throws Exception {
130129
// Given
131130
SCL ssd = SclTestMarshaller.getSCLFromFile("/scd-substation-import-ssd/ssd.xml");
132131
SCL std1 = SclTestMarshaller.getSCLFromFile("/std_1.xml");
133-
Set<SCL> stdList = Set.of(std1);
132+
List<SCL> stdList = List.of(std1);
134133

135134
// When & Then
136135
assertThrows(NullPointerException.class, () -> SclAutomationService.createSCD(ssd, null, stdList));
@@ -142,9 +141,9 @@ void createSCD_should_delete_ControlBlocks_DataSet_and_ExtRef_src_attributes() t
142141
SCL ssd = SclTestMarshaller.getSCLFromFile("/scd-ied-dtt-com-import-stds/ssd.xml");
143142
SCL std = SclTestMarshaller.getSCLFromFile("/scl-remove-controlBlocks-dataSet-extRefSrc/scl-with-control-blocks.xml");
144143
// When
145-
SclRootAdapter expectedSCD = SclAutomationService.createSCD(ssd, headerDTO, Set.of(std));
144+
SCL scd = SclAutomationService.createSCD(ssd, headerDTO, List.of(std));
146145
// Then
147-
LN0 ln0 = expectedSCD.streamIEDAdapters()
146+
LN0 ln0 = new SclRootAdapter(scd).streamIEDAdapters()
148147
.findFirst()
149148
.map(iedAdapter -> iedAdapter.findLDeviceAdapterByLdInst("lDeviceInst1").orElseThrow())
150149
.map(LDeviceAdapter::getLN0Adapter)
@@ -154,7 +153,7 @@ void createSCD_should_delete_ControlBlocks_DataSet_and_ExtRef_src_attributes() t
154153
assertThat(ln0.getDataSet()).isEmpty();
155154
assertThat(ln0.getInputs().getExtRef()).hasSize(2);
156155
assertFalse(ln0.getInputs().getExtRef().get(0).isSetSrcLDInst());
157-
assertIsMarshallable(expectedSCD.getCurrentElem());
156+
assertIsMarshallable(scd);
158157
}
159158

160159
@Test

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/dto/SclReport.java

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)