@@ -117,7 +117,7 @@ void testFiltersOnOtherEquipmentTypes() {
117117 Mockito .when (voltageLevelFilter .getEquipmentType ()).thenReturn (EquipmentType .VOLTAGE_LEVEL );
118118
119119 Mockito .when (loader .getFilters (genericFiltersUuids )).thenReturn (List .of (
120- lineFilter , voltageLevelFilter ));
120+ lineFilter , voltageLevelFilter ));
121121
122122 List <AbstractFilter > genericFilters = loader .getFilters (genericFiltersUuids );
123123
@@ -295,16 +295,16 @@ private static Stream<Arguments> substationPropertyFieldTypeData() {
295295 class BuildExpertFilter {
296296 @ Test
297297 void shouldReturnNullWhenNoExpertFiltersProvided () {
298- final GlobalFilter globalFilter = new GlobalFilter (null , null , null , null );
299- assertThat (GlobalFilterUtils .buildExpertFilter (globalFilter , EquipmentType .GENERATOR , List .of ()))
298+ final GlobalFilter globalFilter = new GlobalFilter (null , null , null , null , null );
299+ assertThat (GlobalFilterUtils .buildExpertFilter (globalFilter , EquipmentType .GENERATOR , List .of (), List . of () ))
300300 .as ("result" ).isNull ();
301301 }
302302
303303 @ Test
304304 void shouldReturnNullWhenNoRules () {
305- final GlobalFilter globalFilter = new GlobalFilter (List .of (), List .of (), List .of (), Map .of ());
305+ final GlobalFilter globalFilter = new GlobalFilter (List .of (), List .of (), List .of (), List . of (), Map .of ());
306306 assertTrue (globalFilter .isEmpty ());
307- assertThat (GlobalFilterUtils .buildExpertFilter (globalFilter , EquipmentType .GENERATOR , List .of ()))
307+ assertThat (GlobalFilterUtils .buildExpertFilter (globalFilter , EquipmentType .GENERATOR , List .of (), List . of () ))
308308 .as ("result" ).isNull ();
309309 }
310310
@@ -316,8 +316,8 @@ void shouldReturnResult() {
316316 List .of (new IdentifierListFilterEquipmentAttributes ("GEN1" , 50. ),
317317 new IdentifierListFilterEquipmentAttributes ("GEN2" , 50. )
318318 )));
319- final GlobalFilter globalFilter = new GlobalFilter (List .of ("380" , "225" ), List .of (Country .FR , Country .BE ), filterUuids , Map .of ());
320- assertThat (GlobalFilterUtils .buildExpertFilter (globalFilter , EquipmentType .GENERATOR , filters ))
319+ final GlobalFilter globalFilter = new GlobalFilter (List .of ("380" , "225" ), List .of (Country .FR , Country .BE ), filterUuids , List . of (), Map .of ());
320+ assertThat (GlobalFilterUtils .buildExpertFilter (globalFilter , EquipmentType .GENERATOR , filters , List . of () ))
321321 .as ("result" ).isNotNull ();
322322 }
323323
@@ -329,8 +329,8 @@ void shouldReturnResultWithGenericFilterTypeDifferentFromEquipmentType() {
329329 List .of (new IdentifierListFilterEquipmentAttributes ("GEN1" , 50. ),
330330 new IdentifierListFilterEquipmentAttributes ("GEN2" , 50. )
331331 )));
332- final GlobalFilter globalFilter = new GlobalFilter (List .of ("380" , "225" ), List .of (Country .FR , Country .BE ), filterUuids , Map .of ());
333- assertThat (GlobalFilterUtils .buildExpertFilter (globalFilter , EquipmentType .GENERATOR , filters ))
332+ final GlobalFilter globalFilter = new GlobalFilter (List .of ("380" , "225" ), List .of (Country .FR , Country .BE ), filterUuids , List . of (), Map .of ());
333+ assertThat (GlobalFilterUtils .buildExpertFilter (globalFilter , EquipmentType .GENERATOR , List . of (), filters ))
334334 .as ("result" ).isNotNull ();
335335 }
336336 }
@@ -497,7 +497,35 @@ void shouldBuildVoltageLevelFilterWhenVoltageLevelType() {
497497 final List <Identifiable <?>> attributes = List .of (line1 , line2 );
498498 mockedFU .when (() -> FiltersUtils .getIdentifiables (any (ExpertFilter .class ), eq (network ), eq (loader ))).thenReturn (attributes );
499499 mockedFU .clearInvocations (); //important because stubbing static method counts as call
500- assertThat (GlobalFilterUtils .applyGlobalFilterOnNetwork (network , globalFilter , EquipmentType .LINE , List .of (filter ), loader ))
500+ assertThat (GlobalFilterUtils .applyGlobalFilterOnNetwork (network , globalFilter , EquipmentType .LINE , List .of (), List .of (filter ), loader ))
501+ .as ("result" ).containsExactlyInAnyOrder ("line1" , "line2" );
502+ Mockito .verify (filter , Mockito .atLeastOnce ()).getEquipmentType ();
503+ Mockito .verify (filter , Mockito .atLeastOnce ()).getId ();
504+ Mockito .verify (line1 , Mockito .atLeastOnce ()).getId ();
505+ Mockito .verify (line2 , Mockito .atLeastOnce ()).getId ();
506+ Mockito .verifyNoMoreInteractions (filter , network , line1 , line2 );
507+ mockedFU .verify (() -> FiltersUtils .getIdentifiables (any (ExpertFilter .class ), eq (network ), eq (loader )), Mockito .atLeastOnce ());
508+ }
509+ }
510+
511+ @ Test
512+ void shouldBuildSubstationFilterWhenSubstationType () {
513+ final Network network = Mockito .mock (Network .class );
514+ final FilterLoader loader = Mockito .mock (FilterLoader .class );
515+ final AbstractFilter filter = Mockito .mock (AbstractFilter .class );
516+ final GlobalFilter globalFilter = Mockito .mock (GlobalFilter .class );
517+ when (filter .getEquipmentType ()).thenReturn (EquipmentType .SUBSTATION );
518+ final UUID filterUuid = UuidUtils .createUUID (0 );
519+ when (filter .getId ()).thenReturn (filterUuid );
520+ try (final MockedStatic <FiltersUtils > mockedFU = Mockito .mockStatic (FiltersUtils .class , Mockito .CALLS_REAL_METHODS )) {
521+ final Identifiable <?> line1 = Mockito .mock (Identifiable .class );
522+ when (line1 .getId ()).thenReturn ("line1" );
523+ final Identifiable <?> line2 = Mockito .mock (Identifiable .class );
524+ when (line2 .getId ()).thenReturn ("line2" );
525+ final List <Identifiable <?>> attributes = List .of (line1 , line2 );
526+ mockedFU .when (() -> FiltersUtils .getIdentifiables (any (ExpertFilter .class ), eq (network ), eq (loader ))).thenReturn (attributes );
527+ mockedFU .clearInvocations (); //important because stubbing static method counts as call
528+ assertThat (GlobalFilterUtils .applyGlobalFilterOnNetwork (network , globalFilter , EquipmentType .LINE , List .of (), List .of (filter ), loader ))
501529 .as ("result" ).containsExactlyInAnyOrder ("line1" , "line2" );
502530 Mockito .verify (filter , Mockito .atLeastOnce ()).getEquipmentType ();
503531 Mockito .verify (filter , Mockito .atLeastOnce ()).getId ();
@@ -515,7 +543,7 @@ void shouldReturnEmptyWhenDifferentEquipmentType() {
515543 final AbstractFilter filter = Mockito .mock (AbstractFilter .class );
516544 final GlobalFilter globalFilter = Mockito .mock (GlobalFilter .class );
517545 when (filter .getEquipmentType ()).thenReturn (EquipmentType .LOAD );
518- assertThat (GlobalFilterUtils .applyGlobalFilterOnNetwork (network , globalFilter , EquipmentType .GENERATOR , List .of (filter ), loader ))
546+ assertThat (GlobalFilterUtils .applyGlobalFilterOnNetwork (network , globalFilter , EquipmentType .GENERATOR , List .of (filter ), List . of (), loader ))
519547 .as ("result" ).isEmpty ();
520548 Mockito .verify (filter , Mockito .atLeastOnce ()).getEquipmentType ();
521549 Mockito .verifyNoMoreInteractions (network , filter );
@@ -540,9 +568,16 @@ void shouldReturnFilteredNetwork() {
540568 final UUID filterTransUuid = UuidUtils .createUUID (1 );
541569 when (filterTrans .getId ()).thenReturn (filterTransUuid );
542570
571+ final AbstractFilter filterSubstation = Mockito .mock (AbstractFilter .class );
572+ when (filterSubstation .getEquipmentType ()).thenReturn (EquipmentType .SUBSTATION );
573+ final UUID filterSubstationUuid = UuidUtils .createUUID (2 );
574+ when (filterSubstation .getId ()).thenReturn (filterSubstationUuid );
575+
543576 final GlobalFilter globalFilter = Mockito .mock (GlobalFilter .class );
544577 List <UUID > genericFilterUuids = List .of (filterLineUuid , filterTransUuid );
545578 when (globalFilter .getGenericFilter ()).thenReturn (genericFilterUuids );
579+ List <UUID > substationOrVoltageLevelFilteUuids = List .of (filterSubstationUuid );
580+ when (globalFilter .getSubstationOrVoltageLevelFilter ()).thenReturn (substationOrVoltageLevelFilteUuids );
546581
547582 when (loader .getFilters (genericFilterUuids )).thenReturn (List .of (filterLine , filterTrans ));
548583
@@ -612,9 +647,12 @@ void testSubstationAndVoltageLevelOnAnyEquipmentType() {
612647 when (filter2 .getId ()).thenReturn (filterUuids .get (1 ));
613648
614649 List <AbstractFilter > filters = Arrays .asList (filter1 , filter2 );
615- assertNotNull (GlobalFilterUtils .buildGenericFilterRule (filters , EquipmentType .LINE ));
616- assertNotNull (GlobalFilterUtils .buildGenericFilterRule (filters , EquipmentType .GENERATOR ));
617- assertNotNull (GlobalFilterUtils .buildGenericFilterRule (filters , EquipmentType .TWO_WINDINGS_TRANSFORMER ));
650+ assertNull (GlobalFilterUtils .buildGenericFilterRule (filters , EquipmentType .LINE ));
651+ assertNull (GlobalFilterUtils .buildGenericFilterRule (filters , EquipmentType .GENERATOR ));
652+ assertNull (GlobalFilterUtils .buildGenericFilterRule (filters , EquipmentType .TWO_WINDINGS_TRANSFORMER ));
653+ assertNotNull (GlobalFilterUtils .buildSubstationOrVoltageLevelFilterRule (filters , EquipmentType .LINE ));
654+ assertNotNull (GlobalFilterUtils .buildSubstationOrVoltageLevelFilterRule (filters , EquipmentType .GENERATOR ));
655+ assertNotNull (GlobalFilterUtils .buildSubstationOrVoltageLevelFilterRule (filters , EquipmentType .TWO_WINDINGS_TRANSFORMER ));
618656 }
619657
620658 @ Test
0 commit comments