From 9020b0fdbba314c21cfcfc88a2e23f1911c5ae19 Mon Sep 17 00:00:00 2001 From: atusa17 Date: Sun, 24 Feb 2019 19:48:18 -0700 Subject: [PATCH] PAN-48 Wrote unit tests for the updateDefinition method --- .../controller/DefinitionController.java | 2 +- .../controller/DefinitionControllerTest.java | 66 +++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) diff --git a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/DefinitionController.java b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/DefinitionController.java index 758e68c..3b788a5 100644 --- a/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/DefinitionController.java +++ b/pandamonium-theorem-prover/persistence/src/main/java/edu/msudenver/tsp/persistence/controller/DefinitionController.java @@ -104,7 +104,7 @@ public class DefinitionController { } @PatchMapping("/{id}") - public @ResponseBody ResponseEntity updateAccount( + public @ResponseBody ResponseEntity updateDefinition( @PathVariable("id") final Integer id, @RequestBody final DefinitionDto definitionDto, final BindingResult bindingResult) { diff --git a/pandamonium-theorem-prover/persistence/src/test/java/edu/msudenver/tsp/persistence/controller/DefinitionControllerTest.java b/pandamonium-theorem-prover/persistence/src/test/java/edu/msudenver/tsp/persistence/controller/DefinitionControllerTest.java index df20891..b24d508 100644 --- a/pandamonium-theorem-prover/persistence/src/test/java/edu/msudenver/tsp/persistence/controller/DefinitionControllerTest.java +++ b/pandamonium-theorem-prover/persistence/src/test/java/edu/msudenver/tsp/persistence/controller/DefinitionControllerTest.java @@ -124,6 +124,72 @@ public class DefinitionControllerTest { verifyZeroInteractions(definitionRepository); } + @Test + public void testUpdateDefinition() { + final DefinitionDto existingDefinition = createDefinition(); + existingDefinition.setId(1); + existingDefinition.setVersion(1); + final DefinitionDto definitionUpdate = new DefinitionDto(); + definitionUpdate.setName("Test Update"); + final DefinitionDto updatedDefinition = existingDefinition; + updatedDefinition.setName("Test Update"); + when(definitionRepository.findById(anyInt())).thenReturn(Optional.of(existingDefinition)); + when(definitionRepository.save(any(DefinitionDto.class))).thenReturn(updatedDefinition); + + final ResponseEntity responseEntity = definitionController.updateDefinition(1, definitionUpdate, bindingResult); + + assertNotNull(responseEntity); + assertTrue(responseEntity.hasBody()); + assertEquals(HttpStatus.OK, responseEntity.getStatusCode()); + assertEquals(updatedDefinition, responseEntity.getBody()); + verify(definitionRepository).findById(anyInt()); + verify(definitionRepository).save(any(DefinitionDto.class)); + } + + @Test + public void testUpdateDefinition_bindingResultErrors() { + when(bindingResult.hasErrors()).thenReturn(true); + + final ResponseEntity responseEntity = definitionController.updateDefinition(1, createDefinition(), bindingResult); + + assertNotNull(responseEntity); + assertFalse(responseEntity.hasBody()); + assertEquals(HttpStatus.UNPROCESSABLE_ENTITY, responseEntity.getStatusCode()); + verifyZeroInteractions(definitionRepository); + } + + @Test + public void testUpdateDefinition_definitionDtoIsNull() { + final ResponseEntity responseEntity = definitionController.updateDefinition(1, null, bindingResult); + + assertNotNull(responseEntity); + assertFalse(responseEntity.hasBody()); + assertEquals(HttpStatus.BAD_REQUEST, responseEntity.getStatusCode()); + verifyZeroInteractions(definitionRepository); + } + + @Test + public void testUpdateDefinition_idIsNull() { + final ResponseEntity responseEntity = definitionController.updateDefinition(null, createDefinition(), bindingResult); + + assertNotNull(responseEntity); + assertFalse(responseEntity.hasBody()); + assertEquals(HttpStatus.BAD_REQUEST, responseEntity.getStatusCode()); + verifyZeroInteractions(definitionRepository); + } + + @Test + public void testUpdateDefinition_definitionDoesntExist() { + when(definitionRepository.findById(anyInt())).thenReturn(Optional.empty()); + + final ResponseEntity responseEntity = definitionController.updateDefinition(1, createDefinition(), bindingResult); + + assertNotNull(responseEntity); + assertFalse(responseEntity.hasBody()); + assertEquals(HttpStatus.BAD_REQUEST, responseEntity.getStatusCode()); + verify(definitionRepository, times(0)).save(any(DefinitionDto.class)); + } + @Test public void testDeleteDefinitionById() { doNothing().when(definitionRepository).deleteById(anyInt());