Skip to content

Commit

Permalink
implement unit test for delete modification
Browse files Browse the repository at this point in the history
  • Loading branch information
jamal-khey committed Oct 6, 2023
1 parent e11b993 commit 15d1982
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 54 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -149,26 +149,30 @@ public ResponseEntity<ModificationInfos> getNetworkModification(
@ApiResponse(responseCode = "200", description = "The network modifications were returned")
public ResponseEntity<List<ModificationInfos>> getAllNetworkModification(
@Parameter(description = "Group UUID") @RequestParam("groupUuid") UUID groupUuid,
@Parameter(description = "delete only stashed modifications") @RequestParam(name = "onlyStashed", required = false, defaultValue = "false") Boolean onlyStashed){
if(!onlyStashed)
@Parameter(description = "delete only stashed modifications") @RequestParam(name = "onlyStashed", required = false, defaultValue = "false") Boolean onlyStashed) {

if (!onlyStashed) {
return ResponseEntity.ok().body(networkModificationService.getAllNetworkModifications(groupUuid));
else
} else {
return ResponseEntity.ok().body(networkModificationService.getAllStashedModifications(groupUuid));
}
}

@DeleteMapping(value = "/network-modifications", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "Delete network modifications")
@ApiResponse(responseCode = "200", description = "The network modifications were deleted")
public ResponseEntity<Void> deleteNetworkModifications(
@Parameter(description = "Network modification UUIDs") @RequestParam(name = "uuids", required = false) List<UUID> networkModificationUuids,
@Parameter(description = "Network modification UUIDs") @RequestParam(name = "uuids", required = false) List<UUID> networkModificationUuids,
@Parameter(description = "Group UUID") @RequestParam("groupUuid") UUID groupUuid,
@Parameter(description = "delete only stashed modifications") @RequestParam(name = "onlyStashed", required = false, defaultValue = "false") Boolean onlyStashed){
if(networkModificationUuids == null || networkModificationUuids.isEmpty())
@Parameter(description = "delete only stashed modifications") @RequestParam(name = "onlyStashed", required = false, defaultValue = "false") Boolean onlyStashed) {

if (onlyStashed && networkModificationUuids == null) {
networkModificationService.deleteAllStashedNetworkModifications(groupUuid);
} else if (networkModificationUuids == null || networkModificationUuids.isEmpty()) {
networkModificationService.deleteAllNetworkModifications(groupUuid);
else if(!onlyStashed)
} else {
networkModificationService.deleteNetworkModifications(groupUuid, networkModificationUuids);
else
networkModificationService.deleteAllStashedNetworkModifications(groupUuid);
}
return ResponseEntity.ok().build();
}

Expand Down Expand Up @@ -220,23 +224,18 @@ public ResponseEntity<UUID> createModificationInGroup(@RequestBody ModificationI
return ResponseEntity.ok().body(networkModificationService.createModificationInGroup(modificationsInfos));
}

@PostMapping(value = "/network-modifications/stash", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "stash network modifications")
@PutMapping(value = "/network-modifications", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "stash or unstash network modifications")
@ApiResponse(responseCode = "200", description = "The network modifications were stashed")
public ResponseEntity<Void> stashNetworkModifications(
@Parameter(description = "Network modification UUIDs") @RequestParam("uuids") List<UUID> networkModificationUuids,
@Parameter(description = "Group UUID") @RequestParam("groupUuid") UUID groupUuid) {
networkModificationService.stashNetworkModifications(networkModificationUuids);
return ResponseEntity.ok().build();
}

@PostMapping(value = "/network-modifications/restore", produces = MediaType.APPLICATION_JSON_VALUE)
@Operation(summary = "restore network modifications")
@ApiResponse(responseCode = "200", description = "The network modifications were restored")
public ResponseEntity<Void> restoreNetworkModifications(
@Parameter(description = "Network modification UUIDs") @RequestParam("uuids") List<UUID> networkModificationUuids,
@Parameter(description = "Group UUID") @RequestParam("groupUuid") UUID groupUuid) {
networkModificationService.restoreNetworkModifications(networkModificationUuids);
@Parameter(description = "Group UUID") @RequestParam("groupUuid") UUID groupUuid,
@Parameter(description = "stash or unstash network modifications") @RequestParam(name = "stashed", required = true) Boolean stashed) {
if (stashed) {
networkModificationService.stashNetworkModifications(networkModificationUuids);
} else {
networkModificationService.restoreNetworkModifications(networkModificationUuids);
}
return ResponseEntity.ok().build();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ public int deleteAllModifications(UUID groupUuid) {
this.modificationRepository.deleteAll(modifications);
return count;
}

@Transactional
public int deleteAllStashedModifications(UUID groupUuid) {
ModificationGroupEntity groupEntity = getModificationGroup(groupUuid);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,16 +210,17 @@ public void stopBuildRequest(String receiver) {
}

public void deleteAllNetworkModifications(UUID groupUuid) {
if(networkModificationRepository.deleteAllModifications(groupUuid) == 0) {
if (networkModificationRepository.deleteAllModifications(groupUuid) == 0) {
throw new NetworkModificationException(NOTHING_TO_DELETE);
}
}

public void deleteAllStashedNetworkModifications(UUID groupUuid) {
if(networkModificationRepository.deleteAllStashedModifications(groupUuid) == 0) {
if (networkModificationRepository.deleteAllStashedModifications(groupUuid) == 0) {
throw new NetworkModificationException(NOTHING_TO_DELETE);
}
}

public void deleteNetworkModifications(UUID groupUuid, List<UUID> modificationsUuids) {
if (networkModificationRepository.deleteModifications(groupUuid, modificationsUuids) == 0) {
throw new NetworkModificationException(MODIFICATION_NOT_FOUND);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ public class ModificationControllerTest {
private static final UUID TEST_REPORT_ID = UUID.randomUUID();

private static final String URI_NETWORK_MODIF_BASE = "/v1/network-modifications";
private static final String URI_RESTORE_NETWORK_MODIF_BASE = URI_NETWORK_MODIF_BASE + "/restore";
private static final String URI_NETWORK_MODIF_PARAMS = "&groupUuid=" + TEST_GROUP_ID + "&reportUuid=" + TEST_REPORT_ID + "&reporterId=" + UUID.randomUUID();
private static final String URI_NETWORK_MODIF = URI_NETWORK_MODIF_BASE + "?networkUuid=" + TEST_NETWORK_ID + URI_NETWORK_MODIF_PARAMS;
private static final String URI_NETWORK_MODIF_BUS_BREAKER = URI_NETWORK_MODIF_BASE + "?networkUuid=" + TEST_NETWORK_BUS_BREAKER_ID + URI_NETWORK_MODIF_PARAMS;
Expand Down Expand Up @@ -298,9 +297,10 @@ public void testRestoreNetworkModifications() throws Exception {
assertEquals(1, modifications.size());

String uuidString = modifications.get(0).getUuid().toString();
mockMvc.perform(post(URI_RESTORE_NETWORK_MODIF_BASE)
mockMvc.perform(put(URI_NETWORK_MODIF_BASE)
.queryParam("groupUuid", TEST_GROUP_ID.toString())
.queryParam("uuids", uuidString))
.queryParam("uuids", uuidString)
.queryParam("stashed", "false"))
.andExpect(status().isOk());
assertEquals(0, modificationRepository.getModifications(TEST_GROUP_ID, true, true, true).size());
}
Expand All @@ -324,9 +324,10 @@ public void testStashNetworkModifications() throws Exception {
List<ModificationInfos> modifications = modificationRepository.getModifications(TEST_GROUP_ID, false, true);
assertEquals(1, modifications.size());
String uuidString = modifications.get(0).getUuid().toString();
mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "/stash")
mockMvc.perform(put(URI_NETWORK_MODIF_BASE)
.queryParam("groupUuid", TEST_GROUP_ID.toString())
.queryParam("uuids", uuidString))
.queryParam("uuids", uuidString)
.queryParam("stashed", "true"))
.andExpect(status().isOk());
assertEquals(0, modificationRepository.getModifications(TEST_GROUP_ID, false, true, false).size());
}
Expand Down Expand Up @@ -383,19 +384,21 @@ public void testDeleteAllModification() throws Exception {
assertEquals(0, modificationRepository.getModifications(TEST_GROUP_ID, false, true).size());
}

// @Test
// public void testDeleteAllStashedModification() throws Exception {
// List<ModificationInfos> modificationList = createSomeSwitchModifications(TEST_GROUP_ID, 3);
//
//
// assertEquals(3, modificationRepository.getModifications(TEST_GROUP_ID, false, true).size());
// mockMvc.perform(delete(URI_NETWORK_MODIF_BASE)
// .queryParam("groupUuid", TEST_GROUP_ID.toString())
// .queryParam("stashed", "true"))
// .andExpect(status().isOk());
// assertEquals(0, modificationRepository.getModifications(TEST_GROUP_ID, false, true).size());
// }

@Test
public void testDeleteAllStashedModification() throws Exception {
List<ModificationInfos> modificationList = createSomeSwitchModifications(TEST_GROUP_ID, 5);
List<UUID> modificationToStash = List.of(modificationList.get(0).getUuid(), modificationList.get(1).getUuid(), modificationList.get(2).getUuid());
modificationRepository.stashNetworkModifications(modificationToStash);
// get stashed modifications
List<ModificationInfos> stashedModificationInfos = modificationRepository.getAllStashedModificationsInfo(TEST_GROUP_ID);

assertEquals(3, stashedModificationInfos.size());
mockMvc.perform(delete(URI_NETWORK_MODIF_BASE)
.queryParam("groupUuid", TEST_GROUP_ID.toString())
.queryParam("onlyStashed", "true"))
.andExpect(status().isOk());
assertEquals(2, modificationRepository.getModifications(TEST_GROUP_ID, false, true).size());
}

@Test
public void testNetworkModificationsWithErrorOnNetworkFlush() throws Exception {
Expand Down Expand Up @@ -468,33 +471,32 @@ public void testGetNetworkModification() throws Exception {
{
MvcResult mvcResult = mockMvc.perform(get("/v1/network-modifications?groupUuid=" + TEST_GROUP_ID))
.andExpect(status().isOk()).andReturn();
var modificationListResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<List<ModificationInfos>>() {});
var modificationListResult = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<List<ModificationInfos>>() { });
var newModificationList = modificationRepository.getAllModificationInfo(TEST_GROUP_ID);
assertEquals(modificationUuidList, newModificationList.stream().map(ModificationInfos::getUuid).collect(Collectors.toList()));
assertEquals(modificationListResult.size(), modificationUuidList.size());
}

{
MvcResult mvcResultStashed = mockMvc.perform(get("/v1/network-modifications?groupUuid=" + TEST_GROUP_ID+ "&onlyStashed=true"))
MvcResult mvcResultStashed = mockMvc.perform(get("/v1/network-modifications?groupUuid=" + TEST_GROUP_ID + "&onlyStashed=true"))
.andExpect(status().isOk()).andReturn();
var stashedModificationListResult = mapper.readValue(mvcResultStashed.getResponse().getContentAsString(), new TypeReference<List<ModificationInfos>>() {});
var stashedModificationListResult = mapper.readValue(mvcResultStashed.getResponse().getContentAsString(), new TypeReference<List<ModificationInfos>>() { });
assertEquals(0, stashedModificationListResult.size());
}

{ // stash one modification and get stashed modification only
UUID modificationUuid = modificationUuidList.get(0);
mockMvc.perform(post("/v1/network-modifications/stash?groupUuid=" + TEST_GROUP_ID + "&uuids=" + modificationUuid))
mockMvc.perform(put("/v1/network-modifications?groupUuid=" + TEST_GROUP_ID + "&uuids=" + modificationUuid + "&stashed=true"))
.andExpect(status().isOk());
MvcResult mvcResultStashed = mockMvc.perform(get("/v1/network-modifications?groupUuid=" + TEST_GROUP_ID+ "&onlyStashed=true"))
MvcResult mvcResultStashed = mockMvc.perform(get("/v1/network-modifications?groupUuid=" + TEST_GROUP_ID + "&onlyStashed=true"))
.andExpect(status().isOk()).andReturn();
var stashedModificationListResult = mapper.readValue(mvcResultStashed.getResponse().getContentAsString(), new TypeReference<List<ModificationInfos>>() {});
var stashedModificationListResult = mapper.readValue(mvcResultStashed.getResponse().getContentAsString(), new TypeReference<List<ModificationInfos>>() { });
assertEquals(1, stashedModificationListResult.size());
assertEquals(modificationUuid, stashedModificationListResult.get(0).getUuid());
}

}


@Test
public void testDuplicateModification() throws Exception {
// create 3 modifications
Expand Down Expand Up @@ -825,9 +827,10 @@ public void testDuplicateModificationGroup() throws Exception {
//stash the first modification
String uuidString = modifications.get(0).getUuid().toString();

mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "/stash")
mockMvc.perform(put(URI_NETWORK_MODIF_BASE )
.queryParam("groupUuid", TEST_GROUP_ID.toString())
.queryParam("uuids", uuidString))
.queryParam("uuids", uuidString)
.queryParam("stashed", "true"))
.andExpect(status().isOk());
List<ModificationInfos> stashedModifications = modificationRepository.getModificationsMetadata(TEST_GROUP_ID, true);
List<ModificationInfos> modificationAfterStash = modificationRepository.getModificationsMetadata(TEST_GROUP_ID, false);
Expand Down Expand Up @@ -1375,9 +1378,10 @@ public void testDeleteStashedNetworkModifications() throws Exception {
List<ModificationInfos> modifications = modificationRepository.getModifications(TEST_GROUP_ID, false, true);
assertEquals(1, modifications.size());
String uuidString = modifications.get(0).getUuid().toString();
mockMvc.perform(post(URI_NETWORK_MODIF_BASE + "/stash")
mockMvc.perform(put(URI_NETWORK_MODIF_BASE)
.queryParam("groupUuid", TEST_GROUP_ID.toString())
.queryParam("uuids", uuidString))
.queryParam("uuids", uuidString)
.queryParam("stashed", "true"))
.andExpect(status().isOk());
assertEquals(1, modificationRepository.getModifications(TEST_GROUP_ID, false, true, true).size());
mockMvc.perform(delete("/v1/groups/" + TEST_GROUP_ID + "/stashed-modifications").queryParam("errorOnGroupNotFound", "false")).andExpect(status().isOk());
Expand Down

0 comments on commit 15d1982

Please sign in to comment.