Explorar el Código

Place Text Controller Tests

Andrew Grant hace 6 meses
padre
commit
8d6680f7cb

+ 84 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/placetext/PlaceTextControllerSaveOrUpdateTest.java

@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.placetext;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import scot.carricksoftware.grants.commands.text.PlaceTextCommand;
+import scot.carricksoftware.grants.commands.text.PlaceTextCommandImpl;
+import scot.carricksoftware.grants.converters.text.placeText.PlaceTextCommandConverterImpl;
+import scot.carricksoftware.grants.converters.text.placeText.PlaceTextConverterImpl;
+import scot.carricksoftware.grants.services.places.places.PlaceService;
+import scot.carricksoftware.grants.services.text.placetext.PlaceTextService;
+import scot.carricksoftware.grants.validators.text.PlaceTextCommandValidator;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+
+@ExtendWith(MockitoExtension.class)
+public class PlaceTextControllerSaveOrUpdateTest {
+
+    @SuppressWarnings("unused")
+    private PlaceTextFormControllerImpl placeTextController;
+
+    @Mock
+    private PlaceTextService placeTextServiceMock;
+
+    @Mock
+    private PlaceTextCommandConverterImpl placeTextCommandConverterMock;
+
+    @Mock
+    private PlaceTextConverterImpl placeTextConverterMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    @Mock
+    private PlaceTextCommandValidator placeTextCommandValidatorMock;
+
+    @Mock
+    private PlaceService placeServiceMock;
+
+    private PlaceTextCommand placeTextCommand;
+
+
+    @BeforeEach
+    public void setUp() {
+        placeTextController = new PlaceTextFormControllerImpl(placeTextServiceMock,
+                placeTextCommandConverterMock,
+                placeTextConverterMock,
+                placeTextCommandValidatorMock,
+                placeServiceMock);
+        placeTextCommand = new PlaceTextCommandImpl();
+    }
+
+    @Test
+    public void saveOrUpdateNoErrorsTest() {
+        Long id = 4L;
+        placeTextCommand.setId(id);
+        when(placeTextServiceMock.savePlaceTextCommand(any(PlaceTextCommand.class))).thenReturn(placeTextCommand);
+        assertEquals("redirect:/placeText/4/show", placeTextController.saveOrUpdate(placeTextCommand, bindingResultMock, modelMock));
+    }
+
+    @Test
+    public void saveOrUpdateErrorsTest() {
+        Long id = 4L;
+        placeTextCommand.setId(id);
+        when(bindingResultMock.hasErrors()).thenReturn(true);
+        assertEquals("text/placeText/form", placeTextController.saveOrUpdate(placeTextCommand, bindingResultMock, modelMock));
+    }
+
+}

+ 115 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/placetext/PlaceTextFormControllerTest.java

@@ -0,0 +1,115 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.placetext;
+
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.ui.Model;
+import scot.carricksoftware.grants.commands.text.PlaceTextCommand;
+import scot.carricksoftware.grants.constants.TextAttributeConstants;
+import scot.carricksoftware.grants.converters.text.placeText.PlaceTextCommandConverterImpl;
+import scot.carricksoftware.grants.converters.text.placeText.PlaceTextConverterImpl;
+import scot.carricksoftware.grants.domains.text.PlaceText;
+import scot.carricksoftware.grants.services.places.places.PlaceService;
+import scot.carricksoftware.grants.services.text.placetext.PlaceTextService;
+import scot.carricksoftware.grants.validators.text.PlaceTextCommandValidator;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.*;
+import static scot.carricksoftware.grants.GenerateRandomNumberValues.GetRandomLong;
+import static scot.carricksoftware.grants.GenerateRandomTextValues.*;
+
+
+@ExtendWith(MockitoExtension.class)
+public class PlaceTextFormControllerTest {
+
+    @SuppressWarnings("unused")
+    private PlaceTextFormControllerImpl placeTextController;
+
+    @Mock
+    private PlaceTextService placeTextServiceMock;
+
+    @Mock
+    private PlaceTextCommandConverterImpl placeTextCommandConverterMock;
+
+    @Mock
+    private PlaceTextConverterImpl placeTextConverterMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    private PlaceTextCommandValidator placeTextCommandValidatorMock;
+
+    @Mock
+    private PlaceService placeServiceMock;
+
+
+    @BeforeEach
+    public void setUp() {
+        placeTextController = new PlaceTextFormControllerImpl(placeTextServiceMock,
+                placeTextCommandConverterMock,
+                placeTextConverterMock,
+                placeTextCommandValidatorMock,
+                placeServiceMock);
+    }
+
+    @Test
+    public void getNewPlaceTextTest() {
+        ArgumentCaptor<Object> objectCaptor = ArgumentCaptor.forClass(Object.class);
+        ArgumentCaptor<String> stringCaptor = ArgumentCaptor.forClass(String.class);
+        assertEquals("text/placeText/form", placeTextController.getNewPlaceText(modelMock));
+        verify(modelMock, atLeast(2)).addAttribute(stringCaptor.capture(), objectCaptor.capture());
+
+        boolean foundPlaceTextCommand = false;
+        boolean foundPeople = false;
+
+
+        for (int i = 0; i < stringCaptor.getAllValues().size(); i++) {
+            if (stringCaptor.getAllValues().get(i).equals("placeTextCommand")) {
+                if (objectCaptor.getAllValues().get(i).getClass().getSimpleName().equals("PlaceTextCommandImpl")) {
+                    foundPlaceTextCommand = true;
+                }
+            }
+            if (stringCaptor.getAllValues().get(i).equals("places")) {
+                if (objectCaptor.getAllValues().get(i).getClass().getSimpleName().equals("LinkedList")) {
+                    foundPeople = true;
+                }
+            }
+        }
+        assertTrue(foundPlaceTextCommand && foundPeople);
+
+    }
+
+    @Test
+    public void placeTextEditTestEditTest() {
+        Long id = GetRandomLong();
+        PlaceText placeText = GetRandomPlaceText();
+        when(placeTextServiceMock.findById(id)).thenReturn(placeText);
+
+        assertEquals("text/placeText/form", placeTextController.placeTextEdit(id + "", modelMock));
+        verify(modelMock).addAttribute(TextAttributeConstants.PLACE_TEXT_COMMAND, placeText);
+    }
+
+    @Test
+    public void showByIdTest() {
+        Long id = GetRandomLong();
+        PlaceText placeText = GetRandomPlaceText();
+        PlaceTextCommand placeTextCommand = GetRandomPlaceTextCommand();
+
+        when(placeTextServiceMock.findById(id)).thenReturn(placeText);
+        when(placeTextConverterMock.convert(placeText)).thenReturn(placeTextCommand);
+        assertEquals("text/placeText/form", placeTextController.showById(id + "", modelMock));
+        verify(modelMock).addAttribute(TextAttributeConstants.PLACE_TEXT_COMMAND, placeTextCommand);
+    }
+
+}

+ 78 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/placetext/PlaceTextFormControllerValidationTest.java

@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.placetext;
+
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
+import scot.carricksoftware.grants.commands.text.PlaceTextCommand;
+import scot.carricksoftware.grants.converters.text.placeText.PlaceTextCommandConverterImpl;
+import scot.carricksoftware.grants.converters.text.placeText.PlaceTextConverterImpl;
+import scot.carricksoftware.grants.services.places.places.PlaceService;
+import scot.carricksoftware.grants.services.text.placetext.PlaceTextService;
+import scot.carricksoftware.grants.validators.text.PlaceTextCommandValidator;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+
+@ExtendWith(MockitoExtension.class)
+public class PlaceTextFormControllerValidationTest {
+
+    @SuppressWarnings("unused")
+    private PlaceTextFormControllerImpl placeTextController;
+
+    @Mock
+    private PlaceTextService placeTextServiceMock;
+
+    @Mock
+    private PlaceTextCommandConverterImpl placeTextCommandConverterMock;
+
+    @Mock
+    private PlaceTextConverterImpl placeTextConverterMock;
+
+
+    @Mock
+    private PlaceTextCommand placeTextCommandMock;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    @Mock
+    private PlaceTextCommandValidator placeTextCommandValidatorMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    private PlaceService placeServiceMock;
+
+
+    @BeforeEach
+    public void setUp() {
+        placeTextController = new PlaceTextFormControllerImpl(placeTextServiceMock,
+                placeTextCommandConverterMock,
+                placeTextConverterMock,
+                placeTextCommandValidatorMock,
+                placeServiceMock);
+    }
+
+
+    @Test
+    public void saveOrUpdateValidationTest() {
+        when(placeTextServiceMock.savePlaceTextCommand(any())).thenReturn(placeTextCommandMock);
+        placeTextController.saveOrUpdate(placeTextCommandMock, bindingResultMock, modelMock);
+        verify(placeTextCommandValidatorMock).validate(placeTextCommandMock, bindingResultMock);
+    }
+
+
+}

+ 123 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/placetext/PlaceTextListControllerTest.java

@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.placetext;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.ui.Model;
+import scot.carricksoftware.grants.constants.ApplicationConstants;
+import scot.carricksoftware.grants.controllers.ControllerHelper;
+import scot.carricksoftware.grants.domains.text.PlaceText;
+import scot.carricksoftware.grants.services.text.placetext.PlaceTextService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
+import static scot.carricksoftware.grants.GenerateRandomNumberValues.GetRandomLong;
+import static scot.carricksoftware.grants.GenerateRandomTextValues.GetRandomPlaceText;
+
+
+@ExtendWith(MockitoExtension.class)
+public class PlaceTextListControllerTest {
+
+    private PlaceTextListControllerImpl controller;
+
+    @Mock
+    private ControllerHelper controllerHelperMock;
+
+    @Mock
+    private PlaceTextService placeTextServiceMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    List<PlaceText> placeTextListMock;
+
+    @BeforeEach
+    public void setUp() {
+        controller = new PlaceTextListControllerImpl(controllerHelperMock, placeTextServiceMock);
+    }
+
+    @Test
+    public void getListPageTest() {
+        when(placeTextServiceMock.getPagedPlaceTexts(0)).thenReturn(placeTextListMock);
+        assertEquals("text/placeText/list", controller.getListPage(modelMock));
+        verify(modelMock).addAttribute("placeTexts", placeTextListMock);
+        verify(controllerHelperMock).addAttributes(modelMock);
+    }
+
+    @Test
+    public void getLastPageTest() {
+        int page = 25;
+        int count = page * ApplicationConstants.DEFAULT_PAGE_SIZE;
+        when(placeTextServiceMock.count()).thenReturn((long) count);
+        controller.getLastPage(modelMock);
+        controller.getPreviousPage(modelMock);
+        assertEquals("text/placeText/list", controller.getLastPage(modelMock));
+        verify(placeTextServiceMock, times(2)).getPagedPlaceTexts(page);
+    }
+
+    @Test
+    public void placeDeleteTest() {
+        Long id = GetRandomLong();
+        assertEquals("redirect:/placeTexts", controller.PlaceTextDelete(Long.toString(id)));
+        verify(placeTextServiceMock).deleteById(id);
+    }
+
+    @Test
+    public void getFirstPlaceTest() {
+        List<PlaceText> placeTextList = new ArrayList<>();
+        placeTextList.add(GetRandomPlaceText());
+        when(placeTextServiceMock.getPagedPlaceTexts(0)).thenReturn(placeTextList);
+
+        assertEquals("text/placeText/list", controller.getFirstPage(modelMock));
+        assertEquals(0, controller.getPageNumber());
+        verify(modelMock).addAttribute("placeTexts", placeTextList);
+    }
+
+    @Test
+    public void getNextPlaceTest() {
+        List<PlaceText> placeTextList = new ArrayList<>();
+        placeTextList.add(GetRandomPlaceText());
+        when(placeTextServiceMock.getPagedPlaceTexts(0)).thenReturn(placeTextList);
+
+        controller.getFirstPage(modelMock);
+        assertEquals("text/placeText/list", controller.getNextPage(modelMock));
+        assertEquals(1, controller.getPageNumber());
+        verify(modelMock).addAttribute("placeTexts", placeTextList);
+
+    }
+
+    @Test
+    public void getPreviousFromFirstTest() {
+        List<PlaceText> placeTextList = new ArrayList<>();
+        placeTextList.add(GetRandomPlaceText());
+        when(placeTextServiceMock.getPagedPlaceTexts(0)).thenReturn(placeTextList);
+
+        controller.getFirstPage(modelMock);
+        assertEquals("text/placeText/list", controller.getPreviousPage(modelMock));
+        assertEquals(0, controller.getPageNumber());
+        verify(modelMock, times(2)).addAttribute("placeTexts", placeTextList);
+    }
+
+    @Test
+    public void getPreviousFromLastTest() {
+        int page = 25;
+        int count = page * ApplicationConstants.DEFAULT_PAGE_SIZE;
+        when(placeTextServiceMock.count()).thenReturn((long) count);
+        controller.getLastPage(modelMock);
+        assertEquals("text/placeText/list", controller.getPreviousPage(modelMock));
+        assertEquals(24, controller.getPageNumber());
+    }
+
+
+}