Bladeren bron

Person Text Controller Tests

Andrew Grant 6 maanden geleden
bovenliggende
commit
8208cfa3a4

+ 85 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/persondocument/PersonTextControllerSaveOrUpdateTest.java

@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.persondocument;
+
+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.PersonTextCommand;
+import scot.carricksoftware.grants.commands.text.PersonTextCommandImpl;
+import scot.carricksoftware.grants.controllers.text.persontext.PersonTextFormControllerImpl;
+import scot.carricksoftware.grants.converters.text.persontext.PersonTextCommandConverterImpl;
+import scot.carricksoftware.grants.converters.text.persontext.PersonTextConverterImpl;
+import scot.carricksoftware.grants.services.people.PersonService;
+import scot.carricksoftware.grants.services.text.persontext.PersonTextService;
+import scot.carricksoftware.grants.validators.text.PersonTextCommandValidator;
+
+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 PersonTextControllerSaveOrUpdateTest {
+
+    @SuppressWarnings("unused")
+    private PersonTextFormControllerImpl personTextController;
+
+    @Mock
+    private PersonTextService personTextServiceMock;
+
+    @Mock
+    private PersonTextCommandConverterImpl personTextCommandConverterMock;
+
+    @Mock
+    private PersonTextConverterImpl personTextConverterMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    @Mock
+    private PersonTextCommandValidator personTextCommandValidatorMock;
+
+    @Mock
+    private PersonService personServiceMock;
+
+    private PersonTextCommand personTextCommand;
+
+
+    @BeforeEach
+    public void setUp() {
+        personTextController = new PersonTextFormControllerImpl(personTextServiceMock,
+                personTextCommandConverterMock,
+                personTextConverterMock,
+                personTextCommandValidatorMock,
+                personServiceMock);
+        personTextCommand = new PersonTextCommandImpl();
+    }
+
+    @Test
+    public void saveOrUpdateNoErrorsTest() {
+        Long id = 4L;
+        personTextCommand.setId(id);
+        when(personTextServiceMock.savePersonTextCommand(any(PersonTextCommand.class))).thenReturn(personTextCommand);
+        assertEquals("redirect:/personText/4/show", personTextController.saveOrUpdate(personTextCommand, bindingResultMock, modelMock));
+    }
+
+    @Test
+    public void saveOrUpdateErrorsTest() {
+        Long id = 4L;
+        personTextCommand.setId(id);
+        when(bindingResultMock.hasErrors()).thenReturn(true);
+        assertEquals("text/personText/form", personTextController.saveOrUpdate(personTextCommand, bindingResultMock, modelMock));
+    }
+
+}

+ 116 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/persondocument/PersonTextFormControllerTest.java

@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.persondocument;
+
+
+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.PersonTextCommand;
+import scot.carricksoftware.grants.constants.TextAttributeConstants;
+import scot.carricksoftware.grants.controllers.text.persontext.PersonTextFormControllerImpl;
+import scot.carricksoftware.grants.converters.text.persontext.PersonTextCommandConverterImpl;
+import scot.carricksoftware.grants.converters.text.persontext.PersonTextConverterImpl;
+import scot.carricksoftware.grants.domains.text.PersonText;
+import scot.carricksoftware.grants.services.people.PersonService;
+import scot.carricksoftware.grants.services.text.persontext.PersonTextService;
+import scot.carricksoftware.grants.validators.text.PersonTextCommandValidator;
+
+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 PersonTextFormControllerTest {
+
+    @SuppressWarnings("unused")
+    private PersonTextFormControllerImpl personTextController;
+
+    @Mock
+    private PersonTextService personTextServiceMock;
+
+    @Mock
+    private PersonTextCommandConverterImpl personTextCommandConverterMock;
+
+    @Mock
+    private PersonTextConverterImpl personTextConverterMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    private PersonTextCommandValidator personTextCommandValidatorMock;
+
+    @Mock
+    private PersonService personServiceMock;
+
+
+    @BeforeEach
+    public void setUp() {
+        personTextController = new PersonTextFormControllerImpl(personTextServiceMock,
+                personTextCommandConverterMock,
+                personTextConverterMock,
+                personTextCommandValidatorMock,
+                personServiceMock);
+    }
+
+    @Test
+    public void getNewPersonTextTest() {
+        ArgumentCaptor<Object> objectCaptor = ArgumentCaptor.forClass(Object.class);
+        ArgumentCaptor<String> stringCaptor = ArgumentCaptor.forClass(String.class);
+        assertEquals("text/personText/form", personTextController.getNewPersonText(modelMock));
+        verify(modelMock, atLeast(2)).addAttribute(stringCaptor.capture(), objectCaptor.capture());
+
+        boolean foundPersonTextCommand = false;
+        boolean foundPeople = false;
+
+
+        for (int i = 0; i < stringCaptor.getAllValues().size(); i++) {
+            if (stringCaptor.getAllValues().get(i).equals("personTextCommand")) {
+                if (objectCaptor.getAllValues().get(i).getClass().getSimpleName().equals("PersonTextCommandImpl")) {
+                    foundPersonTextCommand = true;
+                }
+            }
+            if (stringCaptor.getAllValues().get(i).equals("people")) {
+                if (objectCaptor.getAllValues().get(i).getClass().getSimpleName().equals("LinkedList")) {
+                    foundPeople = true;
+                }
+            }
+        }
+        assertTrue(foundPersonTextCommand && foundPeople);
+
+    }
+
+    @Test
+    public void personTextEditTestEditTest() {
+        Long id = GetRandomLong();
+        PersonText personText = GetRandomPersonText();
+        when(personTextServiceMock.findById(id)).thenReturn(personText);
+
+        assertEquals("text/personText/form", personTextController.personTextEdit(id + "", modelMock));
+        verify(modelMock).addAttribute(TextAttributeConstants.PERSON_TEXT_COMMAND, personText);
+    }
+
+    @Test
+    public void showByIdTest() {
+        Long id = GetRandomLong();
+        PersonText personText = GetRandomPersonText();
+        PersonTextCommand personTextCommand = GetRandomPersonTextCommand();
+
+        when(personTextServiceMock.findById(id)).thenReturn(personText);
+        when(personTextConverterMock.convert(personText)).thenReturn(personTextCommand);
+        assertEquals("text/personText/form", personTextController.showById(id + "", modelMock));
+        verify(modelMock).addAttribute(TextAttributeConstants.PERSON_TEXT_COMMAND, personTextCommand);
+    }
+
+}

+ 79 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/persondocument/PersonTextFormControllerValidationTest.java

@@ -0,0 +1,79 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.persondocument;
+
+
+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.PersonTextCommand;
+import scot.carricksoftware.grants.controllers.text.persontext.PersonTextFormControllerImpl;
+import scot.carricksoftware.grants.converters.text.persontext.PersonTextCommandConverterImpl;
+import scot.carricksoftware.grants.converters.text.persontext.PersonTextConverterImpl;
+import scot.carricksoftware.grants.services.people.PersonService;
+import scot.carricksoftware.grants.services.text.persontext.PersonTextService;
+import scot.carricksoftware.grants.validators.text.PersonTextCommandValidator;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+
+@ExtendWith(MockitoExtension.class)
+public class PersonTextFormControllerValidationTest {
+
+    @SuppressWarnings("unused")
+    private PersonTextFormControllerImpl personTextController;
+
+    @Mock
+    private PersonTextService personTextServiceMock;
+
+    @Mock
+    private PersonTextCommandConverterImpl personTextCommandConverterMock;
+
+    @Mock
+    private PersonTextConverterImpl personTextConverterMock;
+
+
+    @Mock
+    private PersonTextCommand personTextCommandMock;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    @Mock
+    private PersonTextCommandValidator personTextCommandValidatorMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    private PersonService personServiceMock;
+
+
+    @BeforeEach
+    public void setUp() {
+        personTextController = new PersonTextFormControllerImpl(personTextServiceMock,
+                personTextCommandConverterMock,
+                personTextConverterMock,
+                personTextCommandValidatorMock,
+                personServiceMock);
+    }
+
+
+    @Test
+    public void saveOrUpdateValidationTest() {
+        when(personTextServiceMock.savePersonTextCommand(any())).thenReturn(personTextCommandMock);
+        personTextController.saveOrUpdate(personTextCommandMock, bindingResultMock, modelMock);
+        verify(personTextCommandValidatorMock).validate(personTextCommandMock, bindingResultMock);
+    }
+
+
+}

+ 124 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/persondocument/PersonTextListControllerTest.java

@@ -0,0 +1,124 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.persondocument;
+
+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.controllers.text.persontext.PersonTextListControllerImpl;
+import scot.carricksoftware.grants.domains.text.PersonText;
+import scot.carricksoftware.grants.services.text.persontext.PersonTextService;
+
+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.GetRandomPersonText;
+
+
+@ExtendWith(MockitoExtension.class)
+public class PersonTextListControllerTest {
+
+    private PersonTextListControllerImpl controller;
+
+    @Mock
+    private ControllerHelper controllerHelperMock;
+
+    @Mock
+    private PersonTextService personTextServiceMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    List<PersonText> personTextListMock;
+
+    @BeforeEach
+    public void setUp() {
+        controller = new PersonTextListControllerImpl(controllerHelperMock, personTextServiceMock);
+    }
+
+    @Test
+    public void getListPageTest() {
+        when(personTextServiceMock.getPagedPersonTexts(0)).thenReturn(personTextListMock);
+        assertEquals("text/personText/list", controller.getListPage(modelMock));
+        verify(modelMock).addAttribute("personTexts", personTextListMock);
+        verify(controllerHelperMock).addAttributes(modelMock);
+    }
+
+    @Test
+    public void getLastPageTest() {
+        int page = 25;
+        int count = page * ApplicationConstants.DEFAULT_PAGE_SIZE;
+        when(personTextServiceMock.count()).thenReturn((long) count);
+        controller.getLastPage(modelMock);
+        controller.getPreviousPage(modelMock);
+        assertEquals("text/personText/list", controller.getLastPage(modelMock));
+        verify(personTextServiceMock, times(2)).getPagedPersonTexts(page);
+    }
+
+    @Test
+    public void placeDeleteTest() {
+        Long id = GetRandomLong();
+        assertEquals("redirect:/personTexts", controller.PersonTextDelete(Long.toString(id)));
+        verify(personTextServiceMock).deleteById(id);
+    }
+
+    @Test
+    public void getFirstPlaceTest() {
+        List<PersonText> personTextList = new ArrayList<>();
+        personTextList.add(GetRandomPersonText());
+        when(personTextServiceMock.getPagedPersonTexts(0)).thenReturn(personTextList);
+
+        assertEquals("text/personText/list", controller.getFirstPage(modelMock));
+        assertEquals(0, controller.getPageNumber());
+        verify(modelMock).addAttribute("personTexts", personTextList);
+    }
+
+    @Test
+    public void getNextPlaceTest() {
+        List<PersonText> personTextList = new ArrayList<>();
+        personTextList.add(GetRandomPersonText());
+        when(personTextServiceMock.getPagedPersonTexts(0)).thenReturn(personTextList);
+
+        controller.getFirstPage(modelMock);
+        assertEquals("text/personText/list", controller.getNextPage(modelMock));
+        assertEquals(1, controller.getPageNumber());
+        verify(modelMock).addAttribute("personTexts", personTextList);
+
+    }
+
+    @Test
+    public void getPreviousFromFirstTest() {
+        List<PersonText> personTextList = new ArrayList<>();
+        personTextList.add(GetRandomPersonText());
+        when(personTextServiceMock.getPagedPersonTexts(0)).thenReturn(personTextList);
+
+        controller.getFirstPage(modelMock);
+        assertEquals("text/personText/list", controller.getPreviousPage(modelMock));
+        assertEquals(0, controller.getPageNumber());
+        verify(modelMock, times(2)).addAttribute("personTexts", personTextList);
+    }
+
+    @Test
+    public void getPreviousFromLastTest() {
+        int page = 25;
+        int count = page * ApplicationConstants.DEFAULT_PAGE_SIZE;
+        when(personTextServiceMock.count()).thenReturn((long) count);
+        controller.getLastPage(modelMock);
+        assertEquals("text/personText/list", controller.getPreviousPage(modelMock));
+        assertEquals(24, controller.getPageNumber());
+    }
+
+
+}