소스 검색

Organisation Controller Tests

Andrew Grant 6 달 전
부모
커밋
ec12d6ca4d

+ 92 - 0
src/test/java/scot/carricksoftware/grants/controllers/places/organisations/OrganisationFormControllerCleansingTest.java

@@ -0,0 +1,92 @@
+/*
+ * Copyright (c)  19 Feb 2025, Andrew Grant of Carrick Software .
+ * All rights reserved.
+ */
+
+package scot.carricksoftware.grants.controllers.places.organisations;
+
+
+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.places.organisations.OrganisationCommand;
+import scot.carricksoftware.grants.converters.CapitalisationImpl;
+import scot.carricksoftware.grants.converters.places.organisations.OrganisationCommandConverterImpl;
+import scot.carricksoftware.grants.converters.places.organisations.OrganisationConverterImpl;
+import scot.carricksoftware.grants.services.places.organisations.OrganisationService;
+import scot.carricksoftware.grants.validators.places.OrganisationCommandValidator;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+
+@ExtendWith(MockitoExtension.class)
+public class OrganisationFormControllerCleansingTest {
+
+    @SuppressWarnings("unused")
+    private OrganisationFormControllerImpl organisationController;
+
+    @Mock
+    private OrganisationService organisationServiceMock;
+
+    @Mock
+    private OrganisationCommandConverterImpl organisationCommandConverterMock;
+
+    @Mock
+    private OrganisationConverterImpl organisationConverterMock;
+
+    @Mock
+    private CapitalisationImpl capitalisationMock;
+
+    @Mock
+    OrganisationCommand organisationCommandMock;
+
+    @Mock
+    BindingResult bindingResultMock;
+
+    @Mock
+    OrganisationCommandValidator organisationCommandValidatorMock;
+
+    @Mock
+    Model modelMock;
+
+
+    @BeforeEach
+    public void setUp() {
+        organisationController = new OrganisationFormControllerImpl(organisationServiceMock,
+                organisationCommandConverterMock,
+                organisationConverterMock,
+                capitalisationMock,
+                organisationCommandValidatorMock);
+    }
+
+
+    @Test
+    public void saveOrUpdateCleansingTest() {
+        String name = "goat";
+        String uName = "Goat";
+        when(organisationServiceMock.saveOrganisationCommand(any())).thenReturn(organisationCommandMock);
+        when(organisationCommandMock.getName()).thenReturn(name);
+        when(capitalisationMock.getCapitalisation(name)).thenReturn(uName);
+        organisationController.saveOrUpdate(organisationCommandMock, bindingResultMock, modelMock);
+        verify(organisationCommandMock).setName(uName);
+    }
+
+    @Test
+    public void saveOrUpdateValidationTest() {
+        String name = "goat";
+        String uName = "Goat";
+        when(organisationServiceMock.saveOrganisationCommand(any())).thenReturn(organisationCommandMock);
+        when(organisationCommandMock.getName()).thenReturn(name);
+        when(capitalisationMock.getCapitalisation(name)).thenReturn(uName);
+        organisationController.saveOrUpdate(organisationCommandMock, bindingResultMock, modelMock);
+        verify(organisationCommandValidatorMock).validate(organisationCommandMock, bindingResultMock);
+    }
+
+
+}

+ 97 - 0
src/test/java/scot/carricksoftware/grants/controllers/places/organisations/OrganisationFormControllerSaveOrUpdateTest.java

@@ -0,0 +1,97 @@
+/*
+ * Copyright (c)  19 Feb 2025, Andrew Grant of Carrick Software .
+ * All rights reserved.
+ */
+
+package scot.carricksoftware.grants.controllers.places.organisations;
+
+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.places.organisations.OrganisationCommand;
+import scot.carricksoftware.grants.commands.places.organisations.OrganisationCommandImpl;
+import scot.carricksoftware.grants.converters.Capitalisation;
+import scot.carricksoftware.grants.converters.places.organisations.OrganisationCommandConverterImpl;
+import scot.carricksoftware.grants.converters.places.organisations.OrganisationConverterImpl;
+import scot.carricksoftware.grants.services.places.organisations.OrganisationService;
+import scot.carricksoftware.grants.validators.places.OrganisationCommandValidator;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+
+@ExtendWith(MockitoExtension.class)
+public class OrganisationFormControllerSaveOrUpdateTest {
+
+    @SuppressWarnings("unused")
+    private OrganisationFormControllerImpl organisationController;
+
+    @Mock
+    private OrganisationService organisationServiceMock;
+
+    @Mock
+    private OrganisationCommandConverterImpl organisationCommandConverterMock;
+
+    @Mock
+    private OrganisationConverterImpl organisationConverterMock;
+
+    @Mock
+    private Capitalisation capitalisationMock;
+
+    @Mock
+    Model modelMock;
+
+    @Mock
+    BindingResult bindingResultMock;
+
+    @Mock
+    OrganisationCommandValidator organisationCommandValidatorMock;
+
+    private OrganisationCommand organisationCommand;
+
+
+    @BeforeEach
+    public void setUp() {
+        organisationController = new OrganisationFormControllerImpl(organisationServiceMock,
+                organisationCommandConverterMock,
+                organisationConverterMock,
+                capitalisationMock,
+                organisationCommandValidatorMock);
+        organisationCommand = new OrganisationCommandImpl();
+    }
+
+    @Test
+    public void saveOrUpdateNoErrorsTest() {
+        Long id = 4L;
+        organisationCommand.setId(id);
+        when(organisationServiceMock.saveOrganisationCommand(any(OrganisationCommand.class))).thenReturn(organisationCommand);
+        assertEquals("redirect:/organisation/4/show", organisationController.saveOrUpdate(organisationCommand, bindingResultMock, modelMock));
+    }
+
+    @Test
+    public void saveOrUpdateErrorsTest() {
+        Long id = 4L;
+        organisationCommand.setId(id);
+        when(bindingResultMock.hasErrors()).thenReturn(true);
+        assertEquals("organisation/form", organisationController.saveOrUpdate(organisationCommand, bindingResultMock, modelMock));
+    }
+
+    @Test
+    public void CleaningTakesPlaceTest() {
+        OrganisationCommand organisationCommand = new OrganisationCommandImpl();
+        organisationCommand.setId(4L);
+        organisationCommand.setName("england");
+        when(bindingResultMock.hasErrors()).thenReturn(false);
+        when(organisationServiceMock.saveOrganisationCommand(any(OrganisationCommand.class))).thenReturn(organisationCommand);
+        organisationController.saveOrUpdate(organisationCommand, bindingResultMock, modelMock);
+        verify(capitalisationMock).getCapitalisation("england");
+    }
+
+
+}

+ 99 - 0
src/test/java/scot/carricksoftware/grants/controllers/places/organisations/OrganisationFormControllerTest.java

@@ -0,0 +1,99 @@
+/*
+ * Copyright (c)  19 Feb 2025, Andrew Grant of Carrick Software .
+ * All rights reserved.
+ */
+
+package scot.carricksoftware.grants.controllers.places.organisations;
+
+
+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.places.organisations.OrganisationCommand;
+import scot.carricksoftware.grants.constants.AttributeConstants;
+import scot.carricksoftware.grants.converters.Capitalisation;
+import scot.carricksoftware.grants.converters.places.organisations.OrganisationCommandConverterImpl;
+import scot.carricksoftware.grants.converters.places.organisations.OrganisationConverterImpl;
+import scot.carricksoftware.grants.domains.places.Organisation;
+import scot.carricksoftware.grants.services.places.organisations.OrganisationService;
+import scot.carricksoftware.grants.validators.places.OrganisationCommandValidator;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static scot.carricksoftware.grants.GenerateRandomNumberValues.GetRandomLong;
+import static scot.carricksoftware.grants.GenerateRandomPlaceValues.GetRandomOrganisation;
+import static scot.carricksoftware.grants.GenerateRandomPlaceValues.GetRandomOrganisationCommand;
+
+
+@ExtendWith(MockitoExtension.class)
+public class OrganisationFormControllerTest {
+
+    @SuppressWarnings("unused")
+    private OrganisationFormControllerImpl organisationController;
+
+    @Mock
+    private OrganisationService organisationServiceMock;
+
+    @Mock
+    private OrganisationCommandConverterImpl organisationCommandConverterMock;
+
+    @Mock
+    private OrganisationConverterImpl organisationConverterMock;
+
+    @Mock
+    private Capitalisation capitalisationMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    OrganisationCommandValidator organisationCommandValidatorMock;
+
+
+    @BeforeEach
+    public void setUp() {
+        organisationController = new OrganisationFormControllerImpl(organisationServiceMock,
+                organisationCommandConverterMock,
+                organisationConverterMock,
+                capitalisationMock,
+                organisationCommandValidatorMock);
+    }
+
+    @Test
+    public void getNewOrganisationTest() {
+        ArgumentCaptor<Object> objectCaptor = ArgumentCaptor.forClass(Object.class);
+        ArgumentCaptor<String> stringCaptor = ArgumentCaptor.forClass(String.class);
+        assertEquals("organisation/form", organisationController.getNewOrganisation(modelMock));
+        verify(modelMock).addAttribute(stringCaptor.capture(), objectCaptor.capture());
+        assertEquals("organisationCommand", stringCaptor.getValue());
+        assertEquals("OrganisationCommandImpl", objectCaptor.getValue().getClass().getSimpleName());
+    }
+
+    @Test
+    public void organisationEditTestEditTest() {
+        Long id = GetRandomLong();
+        Organisation organisation = GetRandomOrganisation();
+        when(organisationServiceMock.findById(id)).thenReturn(organisation);
+
+        assertEquals("organisation/form", organisationController.organisationEdit(id + "", modelMock));
+        verify(modelMock).addAttribute(AttributeConstants.ORGANISATION_COMMAND, organisation);
+    }
+
+    @Test
+    public void showByIdTest() {
+        Long id = GetRandomLong();
+        Organisation organisation = GetRandomOrganisation();
+        OrganisationCommand organisationCommand = GetRandomOrganisationCommand();
+
+        when(organisationServiceMock.findById(id)).thenReturn(organisation);
+        when(organisationConverterMock.convert(organisation)).thenReturn(organisationCommand);
+        assertEquals("organisation/form", organisationController.showById(id + "", modelMock));
+        verify(modelMock).addAttribute(AttributeConstants.ORGANISATION_COMMAND, organisationCommand);
+    }
+
+}

+ 125 - 0
src/test/java/scot/carricksoftware/grants/controllers/places/organisations/OrganisationListControllerTest.java

@@ -0,0 +1,125 @@
+/*
+ * Copyright (c)  19 Feb 2025, Andrew Grant of Carrick Software .
+ * All rights reserved.
+ */
+
+package scot.carricksoftware.grants.controllers.places.organisations;
+
+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.places.Organisation;
+import scot.carricksoftware.grants.services.places.organisations.OrganisationService;
+
+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.GenerateRandomPlaceValues.GetRandomOrganisation;
+
+
+@ExtendWith(MockitoExtension.class)
+public class OrganisationListControllerTest {
+
+    private OrganisationListControllerImpl controller;
+
+    @Mock
+    private ControllerHelper controllerHelperMock;
+
+    @Mock
+    private OrganisationService organisationServiceMock;
+
+    @Mock
+    private Model modelMock;
+
+    @Mock
+    List<Organisation> organisationListMock;
+
+    @BeforeEach
+    public void setUp() {
+        controller = new OrganisationListControllerImpl(controllerHelperMock, organisationServiceMock);
+    }
+
+    @Test
+    public void getListPageTest() {
+        when(organisationServiceMock.getPagedOrganisations(0)).thenReturn(organisationListMock);
+        assertEquals("organisation/list", controller.getListPage(modelMock));
+        verify(modelMock).addAttribute("organisations", organisationListMock);
+        verify(controllerHelperMock).addAttributes(modelMock);
+    }
+
+    @Test
+    public void getLastPageTest() {
+        int page = 25;
+        int count = page * ApplicationConstants.DEFAULT_PAGE_SIZE;
+        when(organisationServiceMock.count()).thenReturn((long) count);
+        controller.getLastPage(modelMock);
+        controller.getPreviousPage(modelMock);
+        assertEquals("organisation/list", controller.getLastPage(modelMock));
+        verify(organisationServiceMock, times(2)).getPagedOrganisations(page);
+    }
+
+    @Test
+    public void placeDeleteTest() {
+        Long id = GetRandomLong();
+        assertEquals("redirect:/organisations", controller.organisationDelete(Long.toString(id)));
+        verify(organisationServiceMock).deleteById(id);
+    }
+
+    @Test
+    public void getFirstPlaceTest() {
+        List<Organisation> organisationList = new ArrayList<>();
+        organisationList.add(GetRandomOrganisation());
+        when(organisationServiceMock.getPagedOrganisations(0)).thenReturn(organisationList);
+
+        assertEquals("organisation/list", controller.getFirstPage(modelMock));
+        assertEquals(0, controller.getPageNumber());
+        verify(modelMock).addAttribute("organisations", organisationList);
+    }
+
+    @Test
+    public void getNextPlaceTest() {
+        List<Organisation> organisationList = new ArrayList<>();
+        organisationList.add(GetRandomOrganisation());
+        when(organisationServiceMock.getPagedOrganisations(0)).thenReturn(organisationList);
+
+        controller.getFirstPage(modelMock);
+        assertEquals("organisation/list", controller.getNextPage(modelMock));
+        assertEquals(1, controller.getPageNumber());
+        verify(modelMock).addAttribute("organisations", organisationList);
+
+    }
+
+    @Test
+    public void getPreviousFromFirstTest() {
+        List<Organisation> organisationList = new ArrayList<>();
+        organisationList.add(GetRandomOrganisation());
+        when(organisationServiceMock.getPagedOrganisations(0)).thenReturn(organisationList);
+
+        controller.getFirstPage(modelMock);
+        assertEquals("organisation/list", controller.getPreviousPage(modelMock));
+        assertEquals(0, controller.getPageNumber());
+        verify(modelMock, times(2)).addAttribute("organisations", organisationList);
+    }
+
+    @Test
+    public void getPreviousFromLastTest() {
+        int page = 25;
+        int count = page * ApplicationConstants.DEFAULT_PAGE_SIZE;
+        when(organisationServiceMock.count()).thenReturn((long) count);
+        controller.getLastPage(modelMock);
+        assertEquals("organisation/list", controller.getPreviousPage(modelMock));
+        assertEquals(24, controller.getPageNumber());
+    }
+
+
+}