浏览代码

AppendixText controllers test

Andrew Grant 2 月之前
父节点
当前提交
01505663bf

+ 81 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/appendixtest/AppendixTextControllerSaveOrUpdateTest.java

@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.appendixtest;
+
+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.AppendixTextCommand;
+import scot.carricksoftware.grants.commands.text.AppendixTextCommandImpl;
+import scot.carricksoftware.grants.controllers.text.appendixtext.AppendixTextFormControllerImpl;
+import scot.carricksoftware.grants.converters.text.appendixtext.AppendixTextCommandConverterImpl;
+import scot.carricksoftware.grants.converters.text.appendixtext.AppendixTextConverterImpl;
+import scot.carricksoftware.grants.services.text.appendixtext.AppendixTextService;
+import scot.carricksoftware.grants.validators.text.AppendixTextCommandValidator;
+
+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 AppendixTextControllerSaveOrUpdateTest {
+
+    @SuppressWarnings("unused")
+    private AppendixTextFormControllerImpl appendixTextController;
+
+    @Mock
+    private AppendixTextService appendixTextServiceMock;
+
+    @Mock
+    private AppendixTextCommandConverterImpl appendixTextCommandConverterMock;
+
+    @Mock
+    private AppendixTextConverterImpl appendixTextConverterMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    @Mock
+    private AppendixTextCommandValidator appendixTextCommandValidatorMock;
+
+
+    private AppendixTextCommand appendixTextCommand;
+
+
+    @BeforeEach
+    public void setUp() {
+        appendixTextController = new AppendixTextFormControllerImpl(appendixTextServiceMock,
+                appendixTextCommandConverterMock,
+                appendixTextConverterMock,
+                appendixTextCommandValidatorMock);
+        appendixTextCommand = new AppendixTextCommandImpl();
+    }
+
+    @Test
+    public void saveOrUpdateNoErrorsTest() {
+        Long id = 4L;
+        appendixTextCommand.setId(id);
+        when(appendixTextServiceMock.saveAppendixTextCommand(any(AppendixTextCommand.class))).thenReturn(appendixTextCommand);
+        assertEquals("redirect:/appendixText/4/show", appendixTextController.saveOrUpdate(appendixTextCommand, bindingResultMock, modelMock));
+    }
+
+    @Test
+    public void saveOrUpdateErrorsTest() {
+        Long id = 4L;
+        appendixTextCommand.setId(id);
+        when(bindingResultMock.hasErrors()).thenReturn(true);
+        assertEquals("text/appendixText/form", appendixTextController.saveOrUpdate(appendixTextCommand, bindingResultMock, modelMock));
+    }
+
+}

+ 107 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/appendixtest/AppendixTextFormControllerTest.java

@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.appendixtest;
+
+
+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.AppendixTextCommand;
+import scot.carricksoftware.grants.constants.TextAttributeConstants;
+import scot.carricksoftware.grants.controllers.text.appendixtext.AppendixTextFormControllerImpl;
+import scot.carricksoftware.grants.converters.text.appendixtext.AppendixTextCommandConverterImpl;
+import scot.carricksoftware.grants.converters.text.appendixtext.AppendixTextConverterImpl;
+import scot.carricksoftware.grants.domains.text.AppendixText;
+import scot.carricksoftware.grants.services.text.appendixtext.AppendixTextService;
+import scot.carricksoftware.grants.validators.text.AppendixTextCommandValidator;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static scot.carricksoftware.grants.GenerateRandomNumberValues.GetRandomLong;
+import static scot.carricksoftware.grants.GenerateRandomTextValues.GetRandomAppendixText;
+import static scot.carricksoftware.grants.GenerateRandomTextValues.GetRandomAppendixTextCommand;
+
+
+@ExtendWith(MockitoExtension.class)
+public class AppendixTextFormControllerTest {
+
+    @SuppressWarnings("unused")
+    private AppendixTextFormControllerImpl appendixTextController;
+
+    @Mock
+    private AppendixTextService appendixTextServiceMock;
+
+    @Mock
+    private AppendixTextCommandConverterImpl appendixTextCommandConverterMock;
+
+    @Mock
+    private AppendixTextConverterImpl appendixTextConverterMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    private AppendixTextCommandValidator appendixTextCommandValidatorMock;
+
+    @BeforeEach
+    public void setUp() {
+        appendixTextController = new AppendixTextFormControllerImpl(appendixTextServiceMock,
+                appendixTextCommandConverterMock,
+                appendixTextConverterMock,
+                appendixTextCommandValidatorMock);
+    }
+
+    @Test
+    public void getNewAppendixTextTest() {
+        ArgumentCaptor<Object> objectCaptor = ArgumentCaptor.forClass(Object.class);
+        ArgumentCaptor<String> stringCaptor = ArgumentCaptor.forClass(String.class);
+        assertEquals("text/appendixText/form", appendixTextController.getNewAppendixText(modelMock));
+        verify(modelMock, atLeast(1)).addAttribute(stringCaptor.capture(), objectCaptor.capture());
+
+        boolean foundAppendixTextCommand = false;
+
+
+        for (int i = 0; i < stringCaptor.getAllValues().size(); i++) {
+            if (stringCaptor.getAllValues().get(i).equals("appendixTextCommand")) {
+                if (objectCaptor.getAllValues().get(i).getClass().getSimpleName().equals("AppendixTextCommandImpl")) {
+                    foundAppendixTextCommand = true;
+                }
+            }
+        }
+        assertTrue(foundAppendixTextCommand);
+
+    }
+
+    @Test
+    public void appendixTextEditTestEditTest() {
+        Long id = GetRandomLong();
+        AppendixText appendixText = GetRandomAppendixText();
+        when(appendixTextServiceMock.findById(id)).thenReturn(appendixText);
+
+        assertEquals("text/appendixText/form", appendixTextController.appendixTextEdit(id + "", modelMock));
+        verify(modelMock).addAttribute(TextAttributeConstants.APPENDIX_TEXT_COMMAND, appendixText);
+    }
+
+    @Test
+    public void showByIdTest() {
+        Long id = GetRandomLong();
+        AppendixText appendixText = GetRandomAppendixText();
+        AppendixTextCommand appendixTextCommand = GetRandomAppendixTextCommand();
+
+        when(appendixTextServiceMock.findById(id)).thenReturn(appendixText);
+        when(appendixTextConverterMock.convert(appendixText)).thenReturn(appendixTextCommand);
+        assertEquals("text/appendixText/form", appendixTextController.showById(id + "", modelMock));
+        verify(modelMock).addAttribute(TextAttributeConstants.APPENDIX_TEXT_COMMAND, appendixTextCommand);
+    }
+
+}

+ 75 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/appendixtest/AppendixTextFormControllerValidationTest.java

@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.appendixtest;
+
+
+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.AppendixTextCommand;
+import scot.carricksoftware.grants.controllers.text.appendixtext.AppendixTextFormControllerImpl;
+import scot.carricksoftware.grants.converters.text.appendixtext.AppendixTextCommandConverterImpl;
+import scot.carricksoftware.grants.converters.text.appendixtext.AppendixTextConverterImpl;
+import scot.carricksoftware.grants.services.text.appendixtext.AppendixTextService;
+import scot.carricksoftware.grants.validators.text.AppendixTextCommandValidator;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+
+@ExtendWith(MockitoExtension.class)
+public class AppendixTextFormControllerValidationTest {
+
+    @SuppressWarnings("unused")
+    private AppendixTextFormControllerImpl appendixTextController;
+
+    @Mock
+    private AppendixTextService appendixTextServiceMock;
+
+    @Mock
+    private AppendixTextCommandConverterImpl appendixTextCommandConverterMock;
+
+    @Mock
+    private AppendixTextConverterImpl appendixTextConverterMock;
+
+
+    @Mock
+    private AppendixTextCommand appendixTextCommandMock;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    @Mock
+    private AppendixTextCommandValidator appendixTextCommandValidatorMock;
+
+    @Mock
+    private Model modelMock;
+
+
+
+    @BeforeEach
+    public void setUp() {
+        appendixTextController = new AppendixTextFormControllerImpl(appendixTextServiceMock,
+                appendixTextCommandConverterMock,
+                appendixTextConverterMock,
+                appendixTextCommandValidatorMock);
+    }
+
+
+    @Test
+    public void saveOrUpdateValidationTest() {
+        when(appendixTextServiceMock.saveAppendixTextCommand(any())).thenReturn(appendixTextCommandMock);
+        appendixTextController.saveOrUpdate(appendixTextCommandMock, bindingResultMock, modelMock);
+        verify(appendixTextCommandValidatorMock).validate(appendixTextCommandMock, bindingResultMock);
+    }
+
+
+}

+ 126 - 0
src/test/java/scot/carricksoftware/grants/controllers/text/appendixtest/PersonTextListControllerTest.java

@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.text.appendixtest;
+
+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.appendixtext.AppendixTextListControllerImpl;
+import scot.carricksoftware.grants.domains.text.AppendixText;
+import scot.carricksoftware.grants.services.text.appendixtext.AppendixTextService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static scot.carricksoftware.grants.GenerateRandomNumberValues.GetRandomLong;
+import static scot.carricksoftware.grants.GenerateRandomTextValues.GetRandomAppendixText;
+
+
+@ExtendWith(MockitoExtension.class)
+public class PersonTextListControllerTest {
+
+    private AppendixTextListControllerImpl controller;
+
+    @Mock
+    private ControllerHelper controllerHelperMock;
+
+    @Mock
+    private AppendixTextService appendixTextServiceMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    List<AppendixText> appendixTextListMock;
+
+    @BeforeEach
+    public void setUp() {
+        controller = new AppendixTextListControllerImpl(controllerHelperMock, appendixTextServiceMock);
+    }
+
+    @Test
+    public void getListPageTest() {
+        when(appendixTextServiceMock.getPagedAppendixTexts(0)).thenReturn(appendixTextListMock);
+        assertEquals("text/appendixText/list", controller.getListPage(modelMock));
+        verify(modelMock).addAttribute("appendixTexts", appendixTextListMock);
+        verify(controllerHelperMock).addAttributes(modelMock);
+    }
+
+    @Test
+    public void getLastPageTest() {
+        int page = 25;
+        int count = page * ApplicationConstants.DEFAULT_PAGE_SIZE;
+        when(appendixTextServiceMock.count()).thenReturn((long) count);
+        controller.getLastPage(modelMock);
+        controller.getPreviousPage(modelMock);
+        assertEquals("text/appendixText/list", controller.getLastPage(modelMock));
+        verify(appendixTextServiceMock, times(2)).getPagedAppendixTexts(page);
+    }
+
+    @Test
+    public void placeDeleteTest() {
+        Long id = GetRandomLong();
+        assertEquals("redirect:/appendixTexts", controller.appendixTextDelete(Long.toString(id)));
+        verify(appendixTextServiceMock).deleteById(id);
+    }
+
+    @Test
+    public void getFirstPlaceTest() {
+        List<AppendixText> appendixTextList = new ArrayList<>();
+        appendixTextList.add(GetRandomAppendixText());
+        when(appendixTextServiceMock.getPagedAppendixTexts(0)).thenReturn(appendixTextList);
+
+        assertEquals("text/appendixText/list", controller.getFirstPage(modelMock));
+        assertEquals(0, controller.getPageNumber());
+        verify(modelMock).addAttribute("appendixTexts", appendixTextList);
+    }
+
+    @Test
+    public void getNextPlaceTest() {
+        List<AppendixText> appendixTextList = new ArrayList<>();
+        appendixTextList.add(GetRandomAppendixText());
+        when(appendixTextServiceMock.getPagedAppendixTexts(0)).thenReturn(appendixTextList);
+
+        controller.getFirstPage(modelMock);
+        assertEquals("text/appendixText/list", controller.getNextPage(modelMock));
+        assertEquals(1, controller.getPageNumber());
+        verify(modelMock).addAttribute("appendixTexts", appendixTextList);
+
+    }
+
+    @Test
+    public void getPreviousFromFirstTest() {
+        List<AppendixText> appendixTextList = new ArrayList<>();
+        appendixTextList.add(GetRandomAppendixText());
+        when(appendixTextServiceMock.getPagedAppendixTexts(0)).thenReturn(appendixTextList);
+
+        controller.getFirstPage(modelMock);
+        assertEquals("text/appendixText/list", controller.getPreviousPage(modelMock));
+        assertEquals(0, controller.getPageNumber());
+        verify(modelMock, times(2)).addAttribute("appendixTexts", appendixTextList);
+    }
+
+    @Test
+    public void getPreviousFromLastTest() {
+        int page = 25;
+        int count = page * ApplicationConstants.DEFAULT_PAGE_SIZE;
+        when(appendixTextServiceMock.count()).thenReturn((long) count);
+        controller.getLastPage(modelMock);
+        assertEquals("text/appendixText/list", controller.getPreviousPage(modelMock));
+        assertEquals(24, controller.getPageNumber());
+    }
+
+
+}