Unittests added
diff --git a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java index 204b858..49c07da 100644 --- a/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java +++ b/gfsBackendService/src/main/java/org/eclipse/openk/gridfailureinformation/service/ImportService.java
@@ -163,7 +163,7 @@ Assert.notNull(existingDtoClone, "existingDtoClone was null"); //Don't update if the failureinformation was already edited by an user - if (foreignFailureDataDto.isExcludeAlreadyEdited() && !Objects.equals(updatedDto.getModUser(), existingDtoClone.getModUser())){ + if (foreignFailureDataDto.isExcludeAlreadyEdited() && !Objects.equals(updatedDto.getModUser(), existingDtoClone.getModUser())){ //NOSONAR assertion for existingDtoClone exists and logically existingDtoClone must be valid log.debug("External failure information [MetaId: " + importDataDto.getMetaId() + "] from " + importDataDto.getSource() + " has already been edited in SIT by an user, no update will be executed."); return null; @@ -190,7 +190,7 @@ } } - private FailureInformationDto setNewFromForeignDto(ImportDataDto importDataDto, ForeignFailureDataDto foreignFailureDataDto) { + public FailureInformationDto setNewFromForeignDto(ImportDataDto importDataDto, ForeignFailureDataDto foreignFailureDataDto) { FailureInformationDto failureInformationDto = failureInformationMapper.mapForeignFiDtoToGfiDto(foreignFailureDataDto); @@ -200,7 +200,7 @@ return failureInformationDto; } - private FailureInformationDto setUpdateFromForeignDto(ImportDataDto importDataDto, ForeignFailureDataDto foreignFailureDataDto, FailureInformationDto failureInformationDto) { + public FailureInformationDto setUpdateFromForeignDto(ImportDataDto importDataDto, ForeignFailureDataDto foreignFailureDataDto, FailureInformationDto failureInformationDto) { setFromForeignDto(importDataDto, foreignFailureDataDto, failureInformationDto); failureInformationDto.setModUser(importDataDto.getSource()); return failureInformationDto;
diff --git a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/ImportServiceTest.java b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/ImportServiceTest.java index 28a6709..6fd72ba 100644 --- a/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/ImportServiceTest.java +++ b/gfsBackendService/src/test/java/org/eclipse/openk/gridfailureinformation/service/ImportServiceTest.java
@@ -524,4 +524,153 @@ verify(processHelper, times(1)).resetPublishedStateForChannels(any()); } + @Test + public void shouldImportUpdateMessageOnceOnly() { + ImportDataDto dto = MockDataHelper.mockImportDataDto(); + dto.setMessageContent("{\n" + + " \"branch\": \"S\",\n" + // invalid branch + " \"city\": \"Belfast\",\n" + + " \"description\": \"Schlimmer Fehler im System\",\n" + + " \"district\": \"\",\n" + + " \"failureBegin\": \"2020-11-19T14:13:15.666Z\",\n" + + " \"housenumber\": \"10b\",\n" + + " \"latitude\": 12.345,\n" + + " \"longitude\": 0,\n" + + " \"planned\": false,\n" + + " \"postcode\": \"3456\",\n" + + " \"pressureLevel\": null,\n" + + " \"radiusInMeters\": 678,\n" + + " \"stationDescription\": null,\n" + + " \"stationId\": null,\n" + + " \"street\": \"Oxfordstreet\",\n" + + " \"voltageLevel\": \"HS\",\n" + + " \"onceOnlyImport\": \"true\",\n" + + " \"autopublish\": \"false\"\n" + + " }"); + + BranchDto branchStromDto = MockDataHelper.mockBranchDto(); + branchStromDto.setName("S"); + when( branchService.findByName(eq("S"))).thenReturn(branchStromDto); + StatusDto qualifiedStatusDto = MockDataHelper.mockStatusDto("qualified", UUID.randomUUID()); + StatusDto canceledStatusDto = MockDataHelper.mockStatusDto("canceled", UUID.randomUUID()); + StatusDto completedStatusDto = MockDataHelper.mockStatusDto("completed", UUID.randomUUID()); + StatusDto udpatedStatusDto = MockDataHelper.mockStatusDto("updated", UUID.randomUUID()); + + when( statusService.getStatusFromId( GfiProcessState.QUALIFIED.getStatusValue()) ).thenReturn(qualifiedStatusDto); + when( statusService.getStatusFromId( GfiProcessState.COMPLETED.getStatusValue()) ).thenReturn(completedStatusDto); + when( statusService.getStatusFromId( GfiProcessState.CANCELED.getStatusValue()) ).thenReturn(canceledStatusDto); + when( statusService.getStatusFromId( GfiProcessState.UPDATED.getStatusValue()) ).thenReturn(udpatedStatusDto); + when( radiusService.getRadii() ).thenReturn(getRadiusDtoList()); + + FailureInformationDto existingDto = MockDataHelper.mockFailureInformationDto(); + existingDto.setStatusInternId(qualifiedStatusDto.getUuid()); + when( failureInformationService.findByObjectReferenceExternalSystem(anyString())).thenReturn(existingDto); + + importService.validateAndImport(dto); + + verify(failureInformationService, times(0)) + .updateFailureInfo(any( FailureInformationDto.class)); + } + + @Test + public void shouldImportUpdateMessageExcludeEquals() { + ImportDataDto dto = MockDataHelper.mockImportDataDto(); + dto.setMessageContent("{\n" + + " \"branch\": \"S\",\n" + // invalid branch + " \"city\": \"Belfast\",\n" + + " \"description\": \"Schlimmer Fehler im System\",\n" + + " \"district\": \"\",\n" + + " \"failureBegin\": \"2020-11-19T14:13:15.666Z\",\n" + + " \"housenumber\": \"10b\",\n" + + " \"latitude\": 12.345,\n" + + " \"longitude\": 0,\n" + + " \"planned\": false,\n" + + " \"postcode\": \"3456\",\n" + + " \"pressureLevel\": null,\n" + + " \"radiusInMeters\": 678,\n" + + " \"stationDescription\": null,\n" + + " \"stationId\": null,\n" + + " \"street\": \"Oxfordstreet\",\n" + + " \"voltageLevel\": \"HS\",\n" + + " \"excludeEquals\": \"true\",\n" + + " \"excludeAlreadyEdited\": \"true\",\n" + + " \"autopublish\": \"false\"\n" + + " }"); + + ForeignFailureDataDto foreignFailureDataDto = importDataValidator.readSafeForeignFailureInfo(dto); + + BranchDto branchStromDto = MockDataHelper.mockBranchDto(); + branchStromDto.setName("S"); + when( branchService.findByName(eq("S"))).thenReturn(branchStromDto); + StatusDto qualifiedStatusDto = MockDataHelper.mockStatusDto("qualified", UUID.randomUUID()); + StatusDto canceledStatusDto = MockDataHelper.mockStatusDto("canceled", UUID.randomUUID()); + StatusDto completedStatusDto = MockDataHelper.mockStatusDto("completed", UUID.randomUUID()); + StatusDto udpatedStatusDto = MockDataHelper.mockStatusDto("updated", UUID.randomUUID()); + + when( statusService.getStatusFromId( GfiProcessState.QUALIFIED.getStatusValue()) ).thenReturn(qualifiedStatusDto); + when( statusService.getStatusFromId( GfiProcessState.COMPLETED.getStatusValue()) ).thenReturn(completedStatusDto); + when( statusService.getStatusFromId( GfiProcessState.CANCELED.getStatusValue()) ).thenReturn(canceledStatusDto); + when( statusService.getStatusFromId( GfiProcessState.UPDATED.getStatusValue()) ).thenReturn(udpatedStatusDto); + when( radiusService.getRadii() ).thenReturn(getRadiusDtoList()); + + FailureInformationDto existingDto = importService.setNewFromForeignDto(dto, foreignFailureDataDto); + existingDto.setStatusInternId(qualifiedStatusDto.getUuid()); + when( failureInformationService.findByObjectReferenceExternalSystem(anyString())).thenReturn(existingDto); + + importService.validateAndImport(dto); + + verify(failureInformationService, times(0)) + .updateFailureInfo(any( FailureInformationDto.class)); + } + + @Test + public void shouldImportUpdateMessageExcludeAlreadyEdited() { + ImportDataDto dto = MockDataHelper.mockImportDataDto(); + dto.setMessageContent("{\n" + + " \"branch\": \"S\",\n" + // invalid branch + " \"city\": \"Belfast\",\n" + + " \"description\": \"Schlimmer Fehler im System\",\n" + + " \"district\": \"\",\n" + + " \"failureBegin\": \"2020-11-19T14:13:15.666Z\",\n" + + " \"housenumber\": \"10b\",\n" + + " \"latitude\": 12.345,\n" + + " \"longitude\": 0,\n" + + " \"planned\": false,\n" + + " \"postcode\": \"3456\",\n" + + " \"pressureLevel\": null,\n" + + " \"radiusInMeters\": 678,\n" + + " \"stationDescription\": null,\n" + + " \"stationId\": null,\n" + + " \"street\": \"Oxfordstreet\",\n" + + " \"voltageLevel\": \"HS\",\n" + + " \"excludeEquals\": \"true\",\n" + + " \"excludeAlreadyEdited\": \"true\",\n" + + " \"autopublish\": \"false\"\n" + + " }"); + + BranchDto branchStromDto = MockDataHelper.mockBranchDto(); + branchStromDto.setName("S"); + when( branchService.findByName(eq("S"))).thenReturn(branchStromDto); + StatusDto qualifiedStatusDto = MockDataHelper.mockStatusDto("qualified", UUID.randomUUID()); + StatusDto canceledStatusDto = MockDataHelper.mockStatusDto("canceled", UUID.randomUUID()); + StatusDto completedStatusDto = MockDataHelper.mockStatusDto("completed", UUID.randomUUID()); + StatusDto udpatedStatusDto = MockDataHelper.mockStatusDto("updated", UUID.randomUUID()); + + when( statusService.getStatusFromId( GfiProcessState.QUALIFIED.getStatusValue()) ).thenReturn(qualifiedStatusDto); + when( statusService.getStatusFromId( GfiProcessState.COMPLETED.getStatusValue()) ).thenReturn(completedStatusDto); + when( statusService.getStatusFromId( GfiProcessState.CANCELED.getStatusValue()) ).thenReturn(canceledStatusDto); + when( statusService.getStatusFromId( GfiProcessState.UPDATED.getStatusValue()) ).thenReturn(udpatedStatusDto); + when( radiusService.getRadii() ).thenReturn(getRadiusDtoList()); + + FailureInformationDto existingDto = MockDataHelper.mockFailureInformationDto(); + existingDto.setStatusInternId(qualifiedStatusDto.getUuid()); + when( failureInformationService.findByObjectReferenceExternalSystem(anyString())).thenReturn(existingDto); + + importService.validateAndImport(dto); + + verify(failureInformationService, times(0)) + .updateFailureInfo(any( FailureInformationDto.class)); + verify(processHelper, times(0)).resetPublishedStateForChannels(any()); + } + }