Browse Source

DocumentImageFormController tests

apg 2 weeks ago
parent
commit
a6efd12bbd

+ 16 - 0
src/main/java/scot/carricksoftware/grants/controllers/images/appendixImages/AppendixImageFormController.java

@@ -5,14 +5,30 @@
 
 package scot.carricksoftware.grants.controllers.images.appendixImages;
 
+import jakarta.validation.Valid;
 import org.springframework.ui.Model;
 import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
 import scot.carricksoftware.grants.commands.images.AppendixImageCommand;
+import scot.carricksoftware.grants.constants.ImageMappingConstants;
 
 @SuppressWarnings("unused")
 
 public interface AppendixImageFormController {
 
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(ImageMappingConstants.APPENDIX_IMAGE_NEW)
+    String getNewAppendixImage(Model model);
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(ImageMappingConstants.APPENDIX_IMAGE_EDIT)
+    String appendixImageEdit(@Valid @PathVariable String id, Model model);
+
     String saveOrUpdate(@ModelAttribute AppendixImageCommand appendixImageCommand, BindingResult bindingResult, Model model);
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(ImageMappingConstants.APPENDIX_IMAGE_SHOW)
+    String showById(@PathVariable String id, Model model);
 }

+ 3 - 0
src/main/java/scot/carricksoftware/grants/controllers/images/appendixImages/AppendixImageFormControllerImpl.java

@@ -60,6 +60,7 @@ public class AppendixImageFormControllerImpl implements AppendixImageFormControl
 
     @SuppressWarnings("SameReturnValue")
     @GetMapping(ImageMappingConstants.APPENDIX_IMAGE_NEW)
+    @Override
     public final String getNewAppendixImage(final Model model) {
         logger.debug("AppendixImageFormControllerImpl::getNewAppendixImage");
         model.addAttribute(ImageAttributeConstants.APPENDIX_IMAGE_COMMAND, new AppendixImageCommandImpl());
@@ -69,6 +70,7 @@ public class AppendixImageFormControllerImpl implements AppendixImageFormControl
 
     @SuppressWarnings("SameReturnValue")
     @GetMapping(ImageMappingConstants.APPENDIX_IMAGE_EDIT)
+    @Override
     public final String appendixImageEdit(@Valid @PathVariable final String id, Model model) {
         logger.debug("AppendixImageFormControllerImpl::appendixImageEdit");
         model.addAttribute(ImageAttributeConstants.APPENDIX_IMAGE_COMMAND, appendixImageService.findById(Long.valueOf(id)));
@@ -98,6 +100,7 @@ public class AppendixImageFormControllerImpl implements AppendixImageFormControl
 
     @SuppressWarnings("SameReturnValue")
     @GetMapping(ImageMappingConstants.APPENDIX_IMAGE_SHOW)
+    @Override
     public String showById(@PathVariable String id, Model model) {
         logger.debug("AppendixImageFormControllerImpl::showById");
         AppendixImageCommand savedCommand = appendixImageConverter.convert(appendixImageService.findById(Long.valueOf(id)));

+ 16 - 0
src/main/java/scot/carricksoftware/grants/controllers/images/documentImages/DocumentImageFormController.java

@@ -5,14 +5,30 @@
 
 package scot.carricksoftware.grants.controllers.images.documentImages;
 
+import jakarta.validation.Valid;
 import org.springframework.ui.Model;
 import org.springframework.validation.BindingResult;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.PathVariable;
 import scot.carricksoftware.grants.commands.images.DocumentImageCommand;
+import scot.carricksoftware.grants.constants.ImageMappingConstants;
 
 @SuppressWarnings("unused")
 
 public interface DocumentImageFormController {
 
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(ImageMappingConstants.DOCUMENT_IMAGE_NEW)
+    String getNewDocumentImage(Model model);
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(ImageMappingConstants.DOCUMENT_IMAGE_EDIT)
+    String documentImageEdit(@Valid @PathVariable String id, Model model);
+
     String saveOrUpdate(@ModelAttribute DocumentImageCommand documentImageCommand, BindingResult bindingResult, Model model);
+
+    @SuppressWarnings("SameReturnValue")
+    @GetMapping(ImageMappingConstants.DOCUMENT_IMAGE_SHOW)
+    String showById(@PathVariable String id, Model model);
 }

+ 3 - 0
src/main/java/scot/carricksoftware/grants/controllers/images/documentImages/DocumentImageFormControllerImpl.java

@@ -49,6 +49,7 @@ public class DocumentImageFormControllerImpl implements DocumentImageFormControl
 
     @SuppressWarnings("SameReturnValue")
     @GetMapping(ImageMappingConstants.DOCUMENT_IMAGE_NEW)
+    @Override
     public final String getNewDocumentImage(final Model model) {
         logger.debug("DocumentImageFormControllerImpl::getNewDocumentImage");
         model.addAttribute(ImageAttributeConstants.DOCUMENT_IMAGE_COMMAND, new DocumentImageCommandImpl());
@@ -58,6 +59,7 @@ public class DocumentImageFormControllerImpl implements DocumentImageFormControl
 
     @SuppressWarnings("SameReturnValue")
     @GetMapping(ImageMappingConstants.DOCUMENT_IMAGE_EDIT)
+    @Override
     public final String documentImageEdit(@Valid @PathVariable final String id, Model model) {
         logger.debug("DocumentImageFormControllerImpl::documentImageEdit");
         model.addAttribute(ImageAttributeConstants.DOCUMENT_IMAGE_COMMAND, documentImageService.findById(Long.valueOf(id)));
@@ -88,6 +90,7 @@ public class DocumentImageFormControllerImpl implements DocumentImageFormControl
 
     @SuppressWarnings("SameReturnValue")
     @GetMapping(ImageMappingConstants.DOCUMENT_IMAGE_SHOW)
+    @Override
     public String showById(@PathVariable String id, Model model) {
         logger.debug("DocumentImageFormControllerImpl::showById");
         DocumentImageCommand savedCommand = documentImageConverter.convert(documentImageService.findById(Long.valueOf(id)));

+ 1 - 1
src/test/java/scot/carricksoftware/grants/controllers/images/appendiximages/AppendixImageBaseTextListControllerTest.java → src/test/java/scot/carricksoftware/grants/controllers/images/appendiximages/AppendixImageTextListControllerTest.java

@@ -28,7 +28,7 @@ import static scot.carricksoftware.grants.GenerateRandomNumberValues.GetRandomLo
 
 
 @ExtendWith(MockitoExtension.class)
-public class AppendixImageBaseTextListControllerTest {
+public class AppendixImageTextListControllerTest {
 
     private AppendixImageListControllerImpl controller;
 

+ 85 - 0
src/test/java/scot/carricksoftware/grants/controllers/images/documentimages/DocumentImageFormControllerSaveOrUpdateTest.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.images.documentimages;
+
+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.capitalisation.images.documentimage.CapitaliseDocumentImageCommand;
+import scot.carricksoftware.grants.commands.images.DocumentImageCommand;
+import scot.carricksoftware.grants.commands.images.DocumentImageCommandImpl;
+import scot.carricksoftware.grants.controllers.images.documentImages.DocumentImageFormController;
+import scot.carricksoftware.grants.controllers.images.documentImages.DocumentImageFormControllerImpl;
+import scot.carricksoftware.grants.converters.images.documentimage.DocumentImageConverter;
+import scot.carricksoftware.grants.services.images.documentimage.DocumentImageService;
+import scot.carricksoftware.grants.services.images.image.ImageService;
+import scot.carricksoftware.grants.validators.images.DocumentImageCommandValidator;
+
+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 DocumentImageFormControllerSaveOrUpdateTest {
+    
+    private DocumentImageFormController documentImageFormController;
+
+    @Mock
+    private DocumentImageService documentImageServiceMock;
+
+    @Mock
+    private DocumentImageConverter documentImageConverterMock;
+
+    @Mock
+    private ImageService imageServiceMock;
+
+    @Mock
+    private CapitaliseDocumentImageCommand capitaliseDocumentImageCommandMock;
+
+    @Mock
+    Model modelMock;
+
+    @Mock
+    BindingResult bindingResultMock;
+
+    @Mock
+    private DocumentImageCommandValidator documentImageCommandValidatorMock;
+
+    private DocumentImageCommand documentImageCommand;
+
+    @BeforeEach
+    public void setUp() {
+        documentImageFormController= new DocumentImageFormControllerImpl(
+                documentImageServiceMock,
+                documentImageConverterMock,
+                documentImageCommandValidatorMock,
+                imageServiceMock,
+                capitaliseDocumentImageCommandMock);
+        documentImageCommand = new DocumentImageCommandImpl();
+    }
+
+    @Test
+    public void saveOrUpdateNoErrorsTest() {
+        Long id = 4L;
+        documentImageCommand.setId(id);
+        when(documentImageServiceMock.saveDocumentImageCommand(any(DocumentImageCommand.class))).thenReturn(documentImageCommand);
+        assertEquals("redirect:/documentImage/4/show", documentImageFormController.saveOrUpdate(documentImageCommand, bindingResultMock, modelMock));
+    }
+
+    @Test
+    public void saveOrUpdateErrorsTest() {
+        Long id = 4L;
+        documentImageCommand.setId(id);
+        when(bindingResultMock.hasErrors()).thenReturn(true);
+        assertEquals("images/documentImage/form", documentImageFormController.saveOrUpdate(documentImageCommand, bindingResultMock, modelMock));
+    }
+
+}

+ 110 - 0
src/test/java/scot/carricksoftware/grants/controllers/images/documentimages/DocumentImageFormControllerTest.java

@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.images.documentimages;
+
+
+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.capitalisation.images.documentimage.CapitaliseDocumentImageCommand;
+import scot.carricksoftware.grants.commands.images.DocumentImageCommand;
+import scot.carricksoftware.grants.commands.images.DocumentImageCommandImpl;
+import scot.carricksoftware.grants.constants.ImageAttributeConstants;
+import scot.carricksoftware.grants.controllers.images.documentImages.DocumentImageFormController;
+import scot.carricksoftware.grants.controllers.images.documentImages.DocumentImageFormControllerImpl;
+import scot.carricksoftware.grants.converters.images.documentimage.DocumentImageConverter;
+import scot.carricksoftware.grants.domains.images.DocumentImage;
+import scot.carricksoftware.grants.services.images.documentimage.DocumentImageService;
+import scot.carricksoftware.grants.services.images.image.ImageService;
+import scot.carricksoftware.grants.validators.images.DocumentImageCommandValidator;
+
+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;
+
+
+@ExtendWith(MockitoExtension.class)
+public class DocumentImageFormControllerTest {
+    
+    private DocumentImageFormController documentImageFormController;
+
+    @Mock
+    private DocumentImageService documentImageServiceMock;
+
+
+    @Mock
+    private DocumentImageConverter documentImageConverterMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    private DocumentImageCommandValidator documentImageCommandValidatorMock;
+
+    @Mock
+    private ImageService imageServiceMock;
+
+    @Mock
+    private CapitaliseDocumentImageCommand capitaliseDocumentImageCommandMock;
+
+
+    @BeforeEach
+    public void setUp() {
+        documentImageFormController= new DocumentImageFormControllerImpl(
+                documentImageServiceMock,
+                documentImageConverterMock,
+                documentImageCommandValidatorMock,
+                imageServiceMock,
+                capitaliseDocumentImageCommandMock);
+    }
+
+    @Test
+    public void getNewDocumentImageTest() {
+        ArgumentCaptor<Object> objectCaptor = ArgumentCaptor.forClass(Object.class);
+        ArgumentCaptor<String> stringCaptor = ArgumentCaptor.forClass(String.class);
+        assertEquals("images/documentImage/form", documentImageFormController.getNewDocumentImage(modelMock));
+        verify(modelMock, atLeast(2)).addAttribute(stringCaptor.capture(), objectCaptor.capture());
+
+        boolean foundDocumentImageCommand = false;
+
+        for (int i = 0; i < stringCaptor.getAllValues().size(); i++) {
+            if (stringCaptor.getAllValues().get(i).equals("documentImageCommand")) {
+                if (objectCaptor.getAllValues().get(i).getClass().getSimpleName().equals("DocumentImageCommandImpl")) {
+                    foundDocumentImageCommand = true;
+                }
+            }
+        }
+        assertTrue(foundDocumentImageCommand);
+    }
+
+    @Test
+    public void documentImageEditTestEditTest() {
+        Long id = GetRandomLong();
+        DocumentImage documentImage = new DocumentImage();
+        when(documentImageServiceMock.findById(id)).thenReturn(documentImage);
+
+        assertEquals("images/documentImage/form", documentImageFormController.documentImageEdit(id + "", modelMock));
+        verify(modelMock).addAttribute(ImageAttributeConstants.DOCUMENT_IMAGE_COMMAND, documentImage);
+    }
+
+    @Test
+    public void showByIdTest() {
+        Long id = GetRandomLong();
+        DocumentImage documentImage = new DocumentImage();
+        DocumentImageCommand documentImageCommand = new DocumentImageCommandImpl();
+
+        when(documentImageServiceMock.findById(id)).thenReturn(documentImage);
+        when(documentImageConverterMock.convert(documentImage)).thenReturn(documentImageCommand);
+        assertEquals("images/documentImage/form", documentImageFormController.showById(id + "", modelMock));
+        verify(modelMock).addAttribute(ImageAttributeConstants.DOCUMENT_IMAGE_COMMAND, documentImageCommand);
+    }
+
+}

+ 86 - 0
src/test/java/scot/carricksoftware/grants/controllers/images/documentimages/DocumentImageFormControllerValidationTest.java

@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) Andrew Grant of Carrick Software 29/03/2025, 13:55. All rights reserved.
+ *
+ */
+
+package scot.carricksoftware.grants.controllers.images.documentimages;
+
+
+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.capitalisation.images.documentimage.CapitaliseDocumentImageCommand;
+import scot.carricksoftware.grants.commands.images.DocumentImageCommand;
+import scot.carricksoftware.grants.controllers.images.documentImages.DocumentImageFormControllerImpl;
+import scot.carricksoftware.grants.converters.images.documentimage.DocumentImageConverterImpl;
+import scot.carricksoftware.grants.services.images.documentimage.DocumentImageService;
+import scot.carricksoftware.grants.services.images.image.ImageService;
+import scot.carricksoftware.grants.validators.images.DocumentImageCommandValidatorImpl;
+
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+
+@ExtendWith(MockitoExtension.class)
+public class DocumentImageFormControllerValidationTest {
+    
+    private DocumentImageFormControllerImpl documentImageController;
+
+    @Mock
+    private DocumentImageService documentImageServiceMock;
+
+
+    @Mock
+    private DocumentImageConverterImpl documentImageConverterMock;
+
+    @Mock
+    private DocumentImageCommand documentImageCommandMock;
+
+    @Mock
+    private BindingResult bindingResultMock;
+
+    @Mock
+    private ImageService imageServiceMocK;
+
+    @Mock
+    private DocumentImageCommandValidatorImpl documentImageCommandValidatorMock;
+
+    @Mock
+    private CapitaliseDocumentImageCommand capitaliseDocumentImageCommandMock;
+
+    @Mock
+    Model modelMock;
+
+    @BeforeEach
+    public void setUp() {
+        documentImageController = new DocumentImageFormControllerImpl(
+                documentImageServiceMock,
+                documentImageConverterMock,
+                documentImageCommandValidatorMock,
+                imageServiceMocK,
+                capitaliseDocumentImageCommandMock);
+    }
+
+
+    @Test
+    public void saveOrUpdateValidationTest() {
+        when(documentImageServiceMock.saveDocumentImageCommand(any())).thenReturn(documentImageCommandMock);
+        documentImageController.saveOrUpdate(documentImageCommandMock, bindingResultMock, modelMock);
+        verify(documentImageCommandValidatorMock).validate(documentImageCommandMock, bindingResultMock);
+    }
+
+    @Test
+    public void saveOrUpdateCapitalisationTest() {
+        when(documentImageServiceMock.saveDocumentImageCommand(any())).thenReturn(documentImageCommandMock);
+        documentImageController.saveOrUpdate(documentImageCommandMock, bindingResultMock, modelMock);
+        verify(capitaliseDocumentImageCommandMock).capitalise(documentImageCommandMock);
+    }
+
+}

+ 124 - 0
src/test/java/scot/carricksoftware/grants/controllers/images/documentimages/DocumentImageTextListControllerTest.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.images.documentimages;
+
+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.images.documentImages.DocumentImageListControllerImpl;
+import scot.carricksoftware.grants.domains.images.DocumentImage;
+import scot.carricksoftware.grants.services.images.documentimage.DocumentImageService;
+
+
+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;
+
+
+@ExtendWith(MockitoExtension.class)
+public class DocumentImageTextListControllerTest {
+
+    private DocumentImageListControllerImpl controller;
+
+    @Mock
+    private ControllerHelper controllerHelperMock;
+
+    @Mock
+    private DocumentImageService documentImageServiceMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    List<DocumentImage> documentImageListMock;
+
+    @BeforeEach
+    public void setUp() {
+        controller = new DocumentImageListControllerImpl(controllerHelperMock, documentImageServiceMock);
+    }
+
+    @Test
+    public void getListPageTest() {
+        when(documentImageServiceMock.getPagedDocumentImages(0)).thenReturn(documentImageListMock);
+        assertEquals("images/documentImage/list", controller.getListPage(modelMock));
+        verify(modelMock).addAttribute("documentImages", documentImageListMock);
+        verify(controllerHelperMock).addAttributes(modelMock);
+    }
+
+    @Test
+    public void getLastPageTest() {
+        int page = 25;
+        int count = page * ApplicationConstants.DEFAULT_PAGE_SIZE;
+        when(documentImageServiceMock.count()).thenReturn((long) count);
+        controller.getLastPage(modelMock);
+        controller.getPreviousPage(modelMock);
+        assertEquals("images/documentImage/list", controller.getLastPage(modelMock));
+        verify(documentImageServiceMock, times(2)).getPagedDocumentImages(page);
+    }
+
+    @Test
+    public void placeDeleteTest() {
+        Long id = GetRandomLong();
+        assertEquals("redirect:/documentImages", controller.documentImageDelete(Long.toString(id)));
+        verify(documentImageServiceMock).deleteById(id);
+    }
+
+    @Test
+    public void getFirstPlaceTest() {
+        List<DocumentImage> documentImageList = new ArrayList<>();
+        documentImageList.add(new DocumentImage());
+        when(documentImageServiceMock.getPagedDocumentImages(0)).thenReturn(documentImageList);
+
+        assertEquals("images/documentImage/list", controller.getFirstPage(modelMock));
+        assertEquals(0, controller.getPageNumber());
+        verify(modelMock).addAttribute("documentImages", documentImageList);
+    }
+
+    @Test
+    public void getNextPlaceTest() {
+        List<DocumentImage> documentImageList = new ArrayList<>();
+        documentImageList.add(new DocumentImage());
+        when(documentImageServiceMock.getPagedDocumentImages(0)).thenReturn(documentImageList);
+
+        controller.getFirstPage(modelMock);
+        assertEquals("images/documentImage/list", controller.getNextPage(modelMock));
+        assertEquals(1, controller.getPageNumber());
+        verify(modelMock).addAttribute("documentImages", documentImageList);
+
+    }
+
+    @Test
+    public void getPreviousFromFirstTest() {
+        List<DocumentImage> documentImageList = new ArrayList<>();
+        documentImageList.add(new DocumentImage());
+        when(documentImageServiceMock.getPagedDocumentImages(0)).thenReturn(documentImageList);
+
+        controller.getFirstPage(modelMock);
+        assertEquals("images/documentImage/list", controller.getPreviousPage(modelMock));
+        assertEquals(0, controller.getPageNumber());
+        verify(modelMock, times(2)).addAttribute("documentImages", documentImageList);
+    }
+
+    @Test
+    public void getPreviousFromLastTest() {
+        int page = 25;
+        int count = page * ApplicationConstants.DEFAULT_PAGE_SIZE;
+        when(documentImageServiceMock.count()).thenReturn((long) count);
+        controller.getLastPage(modelMock);
+        assertEquals("images/documentImage/list", controller.getPreviousPage(modelMock));
+        assertEquals(24, controller.getPageNumber());
+    }
+
+
+}