From 21a625736fc49fdb22b383bce761ac56ab560e4c Mon Sep 17 00:00:00 2001 From: Thomas Given-Wilson Date: Sun, 11 Feb 2024 00:29:21 +0000 Subject: [PATCH 1/3] Add Diffblue workflow --- .github/workflows/diffblue-cover.yml | 52 ++++++++++++++++++++++++++++ .github/workflows/maven-build.yml | 29 ---------------- 2 files changed, 52 insertions(+), 29 deletions(-) create mode 100644 .github/workflows/diffblue-cover.yml delete mode 100644 .github/workflows/maven-build.yml diff --git a/.github/workflows/diffblue-cover.yml b/.github/workflows/diffblue-cover.yml new file mode 100644 index 00000000000..c93c2df7d23 --- /dev/null +++ b/.github/workflows/diffblue-cover.yml @@ -0,0 +1,52 @@ +# This template is provided and maintained by Diffblue. +# You can copy and paste this template into a new `diffblue-cover.yml` file. +# This template is designed to be used with the Cover Pipeline for Github integration from Diffblue. +# It will download the latest version of Diffblue Cover, build the associated project, and +# automatically write Java unit tests for the project. + +name: Automated Test Creation with Diffblue Cover + +# Diffblue Cover runs on pull_request events for now. +on: pull_request + +jobs: + RunDiffblueCoverAutomatedTestCreation: + runs-on: ubuntu-latest + + # Select the Cover CLI docker image to use with your CI tool. + # Tag variations are produced for each supported JDK version. + # Go to https://hub.docker.com/r/diffblue/cover-cli for details. + # Note: To use the latest version of Diffblue Cover, use one of the latest-jdk tags. + # To use a specific release version, use one of the yyyy.mm.dd-jdk tags + container: diffblue/internal-cover-cli:202401-github-2024.01.02-snapshot-jdk17 + + steps: + - name: Checkout project + uses: actions/checkout@v4 + with: + set-safe-directory: true + fetch-depth: 0 + # Diffblue Cover requires the project to be built before creating any tests. + # Either specify the build command here (one of the following), or provide + # prebuilt artifacts via a job dependency. + - name: Build Project + run: mvn test-compile --batch-mode --no-transfer-progress + + # Diffblue Cover commands and options to run. + # dcover – the core Diffblue Cover command + # ci – enable CI/CD integration via environment variables + # activate - activate the license key + # validate - remove non-compiling and failing tests + # create - create new tests for your project + # --maven – use the maven build tool + # For detailed information on Cover CLI commands and options, see + # https://docs.diffblue.com/features/cover-cli/commands-and-arguments + - name: Run Diffblue Cover + env: + DIFFBLUE_ACCESS_TOKEN: ${{ secrets.DIFFBLUE_ACCESS_TOKEN }} + GITHUB_PR_NUMBER: ${{ github.event.number }} + GITHUB_REPO_NAME: spring-petclinic-GitHub-demo-1 + JVM_ARGS: -Xmx4g + run: | + git config --global --add safe.directory /__w/$GITHUB_REPO_NAME/$GITHUB_REPO_NAME + dcover ci activate ${{ secrets.DIFFBLUE_LICENSE }} validate create diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml deleted file mode 100644 index 4718a6ce57c..00000000000 --- a/.github/workflows/maven-build.yml +++ /dev/null @@ -1,29 +0,0 @@ -# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven - -name: Java CI with Maven - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -jobs: - build: - - runs-on: ubuntu-latest - strategy: - matrix: - java: [ '17' ] - - steps: - - uses: actions/checkout@v4 - - name: Set up JDK ${{matrix.java}} - uses: actions/setup-java@v4 - with: - java-version: ${{matrix.java}} - distribution: 'adopt' - cache: maven - - name: Build with Maven Wrapper - run: ./mvnw -B package From 21bdf53494e6301472c211782727146a0fc321bb Mon Sep 17 00:00:00 2001 From: Diffblue CI Date: Tue, 13 Feb 2024 14:55:16 +0000 Subject: [PATCH 2/3] Diffblue Cover logs are ignored by git --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index af0cb9bb07a..371ad59347f 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ build/* _site/ *.css !petclinic.css +# Diffblue Cover files +**/.diffblue/ + From 1189aa71170e187af6480f4a4c29f074df4f40c0 Mon Sep 17 00:00:00 2001 From: Diffblue CI Date: Tue, 13 Feb 2024 15:05:58 +0000 Subject: [PATCH 3/3] Diffblue Cover created unit tests for module spring-petclinic --- .../PetClinicRuntimeHintsDiffblueTest.java | 39 + .../model/BaseEntityDiffblueTest.java | 49 ++ .../model/NamedEntityDiffblueTest.java | 28 + .../petclinic/model/PersonDiffblueTest.java | 30 + .../owner/OwnerControllerDiffblueTest.java | 375 ++++++++ .../petclinic/owner/OwnerDiffblueTest.java | 86 ++ .../owner/OwnerRepositoryDiffblueTest.java | 178 ++++ .../owner/PetControllerDiffblueTest.java | 816 ++++++++++++++++++ .../petclinic/owner/PetDiffblueTest.java | 59 ++ .../petclinic/owner/PetTypeDiffblueTest.java | 21 + .../owner/PetTypeFormatterDiffblueTest.java | 127 +++ .../owner/PetValidatorDiffblueTest.java | 200 +++++ .../owner/VisitControllerDiffblueTest.java | 134 +++ .../petclinic/owner/VisitDiffblueTest.java | 50 ++ .../system/CrashControllerDiffblueTest.java | 28 + .../system/WelcomeControllerDiffblueTest.java | 54 ++ .../petclinic/vet/SpecialtyDiffblueTest.java | 21 + .../vet/VetControllerDiffblueTest.java | 87 ++ .../petclinic/vet/VetDiffblueTest.java | 167 ++++ .../vet/VetRepositoryDiffblueTest.java | 29 + .../petclinic/vet/VetsDiffblueTest.java | 24 + 21 files changed, 2602 insertions(+) create mode 100644 src/test/java/org/springframework/samples/petclinic/PetClinicRuntimeHintsDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/model/BaseEntityDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/model/NamedEntityDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/model/PersonDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/owner/OwnerDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/owner/OwnerRepositoryDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/owner/PetControllerDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/owner/PetDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/owner/PetTypeDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/owner/PetValidatorDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/owner/VisitControllerDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/owner/VisitDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/system/CrashControllerDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/system/WelcomeControllerDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/vet/SpecialtyDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/vet/VetControllerDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/vet/VetDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/vet/VetRepositoryDiffblueTest.java create mode 100644 src/test/java/org/springframework/samples/petclinic/vet/VetsDiffblueTest.java diff --git a/src/test/java/org/springframework/samples/petclinic/PetClinicRuntimeHintsDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/PetClinicRuntimeHintsDiffblueTest.java new file mode 100644 index 00000000000..677227f454d --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/PetClinicRuntimeHintsDiffblueTest.java @@ -0,0 +1,39 @@ +package org.springframework.samples.petclinic; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLStreamHandlerFactory; +import java.nio.file.Paths; +import javax.management.loading.MLet; +import org.apache.catalina.webresources.ClasspathURLStreamHandler; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.springframework.aot.hint.RuntimeHints; + +class PetClinicRuntimeHintsDiffblueTest { + /** + * Method under test: + * {@link PetClinicRuntimeHints#registerHints(RuntimeHints, ClassLoader)} + */ + @Test + void testRegisterHints() throws MalformedURLException { + // Arrange + PetClinicRuntimeHints petClinicRuntimeHints = new PetClinicRuntimeHints(); + RuntimeHints hints = new RuntimeHints(); + URLStreamHandlerFactory urlStreamHandlerFactory = mock(URLStreamHandlerFactory.class); + when(urlStreamHandlerFactory.createURLStreamHandler(Mockito.any())) + .thenReturn(new ClasspathURLStreamHandler()); + + // Act + petClinicRuntimeHints.registerHints(hints, + new URLClassLoader(new URL[]{Paths.get(System.getProperty("java.io.tmpdir"), "test.txt").toUri().toURL()}, + new MLet(), urlStreamHandlerFactory)); + + // Assert + verify(urlStreamHandlerFactory).createURLStreamHandler(Mockito.any()); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/model/BaseEntityDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/model/BaseEntityDiffblueTest.java new file mode 100644 index 00000000000..35eba628099 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/model/BaseEntityDiffblueTest.java @@ -0,0 +1,49 @@ +package org.springframework.samples.petclinic.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; + +class BaseEntityDiffblueTest { + /** + * Methods under test: + * + *
    + *
  • default or parameterless constructor of {@link BaseEntity} + *
  • {@link BaseEntity#setId(Integer)} + *
  • {@link BaseEntity#getId()} + *
+ */ + @Test + void testGettersAndSetters() { + // Arrange and Act + BaseEntity actualBaseEntity = new BaseEntity(); + actualBaseEntity.setId(1); + + // Assert that nothing has changed + assertEquals(1, actualBaseEntity.getId().intValue()); + } + + /** + * Method under test: {@link BaseEntity#isNew()} + */ + @Test + void testIsNew() { + // Arrange, Act and Assert + assertTrue((new BaseEntity()).isNew()); + } + + /** + * Method under test: {@link BaseEntity#isNew()} + */ + @Test + void testIsNew2() { + // Arrange + BaseEntity baseEntity = new BaseEntity(); + baseEntity.setId(1); + + // Act and Assert + assertFalse(baseEntity.isNew()); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/model/NamedEntityDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/model/NamedEntityDiffblueTest.java new file mode 100644 index 00000000000..5ef63508caf --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/model/NamedEntityDiffblueTest.java @@ -0,0 +1,28 @@ +package org.springframework.samples.petclinic.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +class NamedEntityDiffblueTest { + /** + * Methods under test: + * + *
    + *
  • default or parameterless constructor of {@link NamedEntity} + *
  • {@link NamedEntity#setName(String)} + *
  • {@link NamedEntity#toString()} + *
  • {@link NamedEntity#getName()} + *
+ */ + @Test + void testGettersAndSetters() { + // Arrange and Act + NamedEntity actualNamedEntity = new NamedEntity(); + actualNamedEntity.setName("Bella"); + String actualToStringResult = actualNamedEntity.toString(); + + // Assert that nothing has changed + assertEquals("Bella", actualNamedEntity.getName()); + assertEquals("Bella", actualToStringResult); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/model/PersonDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/model/PersonDiffblueTest.java new file mode 100644 index 00000000000..9b3b1efea8b --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/model/PersonDiffblueTest.java @@ -0,0 +1,30 @@ +package org.springframework.samples.petclinic.model; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +class PersonDiffblueTest { + /** + * Methods under test: + * + *
    + *
  • default or parameterless constructor of {@link Person} + *
  • {@link Person#setFirstName(String)} + *
  • {@link Person#setLastName(String)} + *
  • {@link Person#getFirstName()} + *
  • {@link Person#getLastName()} + *
+ */ + @Test + void testGettersAndSetters() { + // Arrange and Act + Person actualPerson = new Person(); + actualPerson.setFirstName("Jane"); + actualPerson.setLastName("Doe"); + String actualFirstName = actualPerson.getFirstName(); + + // Assert that nothing has changed + assertEquals("Doe", actualPerson.getLastName()); + assertEquals("Jane", actualFirstName); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerDiffblueTest.java new file mode 100644 index 00000000000..18b099c4084 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/owner/OwnerControllerDiffblueTest.java @@ -0,0 +1,375 @@ +package org.springframework.samples.petclinic.owner; + +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import java.util.ArrayList; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +@ContextConfiguration(classes = {OwnerController.class}) +@ExtendWith(SpringExtension.class) +class OwnerControllerDiffblueTest { + @Autowired + private OwnerController ownerController; + + @MockBean + private OwnerRepository ownerRepository; + /** + * Method under test: {@link OwnerController#findOwner(Integer)} + */ + @Test + void testFindOwner() { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + + // Act + Owner actualFindOwnerResult = ownerController.findOwner(1); + + // Assert + verify(ownerRepository).findById(Mockito.any()); + assertSame(owner, actualFindOwnerResult); + } + + /** + * Method under test: {@link OwnerController#findOwner(Integer)} + */ + @Test + void testFindOwner2() { + // Arrange, Act and Assert + assertTrue(ownerController.findOwner(null).getPets().isEmpty()); + } + + /** + * Method under test: {@link OwnerController#initCreationForm(Map)} + */ + @Test + void testInitCreationForm() throws Exception { + // Arrange + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/new"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(1)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner")) + .andExpect(MockMvcResultMatchers.view().name("owners/createOrUpdateOwnerForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("owners/createOrUpdateOwnerForm")); + } + + /** + * Method under test: {@link OwnerController#initCreationForm(Map)} + */ + @Test + void testInitCreationForm2() throws Exception { + // Arrange + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/new", "Uri Variables"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(1)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner")) + .andExpect(MockMvcResultMatchers.view().name("owners/createOrUpdateOwnerForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("owners/createOrUpdateOwnerForm")); + } + + /** + * Method under test: {@link OwnerController#initFindForm()} + */ + @Test + void testInitFindForm() throws Exception { + // Arrange + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/find"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(1)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner")) + .andExpect(MockMvcResultMatchers.view().name("owners/findOwners")) + .andExpect(MockMvcResultMatchers.forwardedUrl("owners/findOwners")); + } + + /** + * Method under test: {@link OwnerController#initUpdateOwnerForm(int, Model)} + */ + @Test + void testInitUpdateOwnerForm() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}/edit", 1); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(1)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner")) + .andExpect(MockMvcResultMatchers.view().name("owners/createOrUpdateOwnerForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("owners/createOrUpdateOwnerForm")); + } + + /** + * Method under test: + * {@link OwnerController#processCreationForm(Owner, BindingResult, RedirectAttributes)} + */ + @Test + void testProcessCreationForm() throws Exception { + // Arrange + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/new"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(1)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner")) + .andExpect(MockMvcResultMatchers.view().name("owners/createOrUpdateOwnerForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("owners/createOrUpdateOwnerForm")); + } + + /** + * Method under test: + * {@link OwnerController#processFindForm(int, Owner, BindingResult, Model)} + */ + @Test + void testProcessFindForm() throws Exception { + // Arrange + when(ownerRepository.findByLastName(Mockito.any(), Mockito.any())) + .thenReturn(new PageImpl<>(new ArrayList<>())); + MockHttpServletRequestBuilder getResult = MockMvcRequestBuilders.get("/owners"); + MockHttpServletRequestBuilder requestBuilder = getResult.param("page", String.valueOf(1)); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(1)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner")) + .andExpect(MockMvcResultMatchers.view().name("owners/findOwners")) + .andExpect(MockMvcResultMatchers.forwardedUrl("owners/findOwners")); + } + + /** + * Method under test: + * {@link OwnerController#processFindForm(int, Owner, BindingResult, Model)} + */ + @Test + void testProcessFindForm2() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + + ArrayList content = new ArrayList<>(); + content.add(owner); + PageImpl pageImpl = new PageImpl<>(content); + when(ownerRepository.findByLastName(Mockito.any(), Mockito.any())).thenReturn(pageImpl); + MockHttpServletRequestBuilder getResult = MockMvcRequestBuilders.get("/owners"); + MockHttpServletRequestBuilder requestBuilder = getResult.param("page", String.valueOf(1)); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isFound()) + .andExpect(MockMvcResultMatchers.model().size(0)) + .andExpect(MockMvcResultMatchers.view().name("redirect:/owners/1")) + .andExpect(MockMvcResultMatchers.redirectedUrl("/owners/1")); + } + + /** + * Method under test: + * {@link OwnerController#processFindForm(int, Owner, BindingResult, Model)} + */ + @Test + void testProcessFindForm3() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + + Owner owner2 = new Owner(); + owner2.setAddress("17 High St"); + owner2.setCity("London"); + owner2.setFirstName("John"); + owner2.setId(2); + owner2.setLastName("Smith"); + owner2.setTelephone("8605550118"); + + ArrayList content = new ArrayList<>(); + content.add(owner2); + content.add(owner); + PageImpl pageImpl = new PageImpl<>(content); + when(ownerRepository.findByLastName(Mockito.any(), Mockito.any())).thenReturn(pageImpl); + MockHttpServletRequestBuilder getResult = MockMvcRequestBuilders.get("/owners"); + MockHttpServletRequestBuilder requestBuilder = getResult.param("page", String.valueOf(1)); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(5)) + .andExpect(MockMvcResultMatchers.model() + .attributeExists("currentPage", "listOwners", "owner", "totalItems", "totalPages")) + .andExpect(MockMvcResultMatchers.view().name("owners/ownersList")) + .andExpect(MockMvcResultMatchers.forwardedUrl("owners/ownersList")); + } + + /** + * Method under test: + * {@link OwnerController#processFindForm(int, Owner, BindingResult, Model)} + */ + @Test + void testProcessFindForm4() throws Exception { + // Arrange + when(ownerRepository.findByLastName(Mockito.any(), Mockito.any())) + .thenReturn(new PageImpl<>(new ArrayList<>())); + MockHttpServletRequestBuilder getResult = MockMvcRequestBuilders.get("/owners"); + MockHttpServletRequestBuilder requestBuilder = getResult.param("page", String.valueOf(1)).param("lastName", "Doe"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(1)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner")) + .andExpect(MockMvcResultMatchers.view().name("owners/findOwners")) + .andExpect(MockMvcResultMatchers.forwardedUrl("owners/findOwners")); + } + + /** + * Method under test: + * {@link OwnerController#processUpdateOwnerForm(Owner, BindingResult, int, RedirectAttributes)} + */ + @Test + void testProcessUpdateOwnerForm() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + doNothing().when(ownerRepository).save(Mockito.any()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/edit", 1); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isFound()) + .andExpect(MockMvcResultMatchers.model().size(0)) + .andExpect(MockMvcResultMatchers.view().name("redirect:/owners/{ownerId}")) + .andExpect(MockMvcResultMatchers.redirectedUrl("/owners/1")); + } + + /** + * Method under test: + * {@link OwnerController#processUpdateOwnerForm(Owner, BindingResult, int, RedirectAttributes)} + */ + @Test + void testProcessUpdateOwnerForm2() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress(""); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + doNothing().when(ownerRepository).save(Mockito.any()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/edit", 1); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(1)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner")) + .andExpect(MockMvcResultMatchers.view().name("owners/createOrUpdateOwnerForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("owners/createOrUpdateOwnerForm")); + } + + /** + * Method under test: {@link OwnerController#showOwner(int)} + */ + @Test + void testShowOwner() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}", 1); + + // Act and Assert + MockMvcBuilders.standaloneSetup(ownerController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(1)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner")) + .andExpect(MockMvcResultMatchers.view().name("owners/ownerDetails")) + .andExpect(MockMvcResultMatchers.forwardedUrl("owners/ownerDetails")); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/owner/OwnerDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/owner/OwnerDiffblueTest.java new file mode 100644 index 00000000000..e8d3bb1ed99 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/owner/OwnerDiffblueTest.java @@ -0,0 +1,86 @@ +package org.springframework.samples.petclinic.owner; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; +import java.time.LocalDate; +import org.junit.jupiter.api.Test; + +class OwnerDiffblueTest { + /** + * Method under test: {@link Owner#addPet(Pet)} + */ + @Test + void testAddPet() { + // Arrange + Owner owner = new Owner(); + + PetType type = new PetType(); + type.setId(1); + type.setName("Dog"); + + Pet pet = new Pet(); + pet.setBirthDate(LocalDate.of(1970, 1, 1)); + pet.setId(1); + pet.setName("Bella"); + pet.setType(type); + + // Act + owner.addPet(pet); + + // Assert that nothing has changed + assertEquals("1970-01-01", pet.getBirthDate().toString()); + assertEquals("Bella", pet.getName()); + assertFalse(pet.isNew()); + assertTrue(pet.getVisits().isEmpty()); + assertTrue(owner.getPets().isEmpty()); + assertTrue(owner.isNew()); + assertSame(type, pet.getType()); + } + + /** + * Method under test: {@link Owner#getPet(Integer)} + */ + @Test + void testGetPet() { + // Arrange, Act and Assert + assertNull((new Owner()).getPet(1)); + assertNull((new Owner()).getPet("Bella")); + assertNull((new Owner()).getPet("Bella", true)); + } + + /** + * Methods under test: + * + *
    + *
  • default or parameterless constructor of {@link Owner} + *
  • {@link Owner#setAddress(String)} + *
  • {@link Owner#setCity(String)} + *
  • {@link Owner#setTelephone(String)} + *
  • {@link Owner#toString()} + *
  • {@link Owner#getAddress()} + *
  • {@link Owner#getCity()} + *
  • {@link Owner#getPets()} + *
  • {@link Owner#getTelephone()} + *
+ */ + @Test + void testGettersAndSetters() { + // Arrange and Act + Owner actualOwner = new Owner(); + actualOwner.setAddress("42 Main St"); + actualOwner.setCity("Oxford"); + actualOwner.setTelephone("6625550144"); + actualOwner.toString(); + String actualAddress = actualOwner.getAddress(); + String actualCity = actualOwner.getCity(); + actualOwner.getPets(); + + // Assert that nothing has changed + assertEquals("42 Main St", actualAddress); + assertEquals("6625550144", actualOwner.getTelephone()); + assertEquals("Oxford", actualCity); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/owner/OwnerRepositoryDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/owner/OwnerRepositoryDiffblueTest.java new file mode 100644 index 00000000000..ce0c8347db7 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/owner/OwnerRepositoryDiffblueTest.java @@ -0,0 +1,178 @@ +package org.springframework.samples.petclinic.owner; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertSame; +import java.util.List; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.data.domain.Pageable; +import org.springframework.test.context.ContextConfiguration; + +@ContextConfiguration(classes = {OwnerRepository.class}) +@EnableAutoConfiguration +@EntityScan(basePackages = {"org.springframework.samples.petclinic.owner"}) +@DataJpaTest +class OwnerRepositoryDiffblueTest { + @Autowired + private OwnerRepository ownerRepository; + /** + * Method under test: {@link OwnerRepository#findPetTypes()} + */ + @Test + void testFindPetTypes() { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + + Owner owner2 = new Owner(); + owner2.setAddress("17 High St"); + owner2.setCity("London"); + owner2.setFirstName("John"); + owner2.setLastName("Smith"); + owner2.setTelephone("8605550118"); + ownerRepository.save(owner); + ownerRepository.save(owner2); + + // Act and Assert + assertEquals(6, ownerRepository.findPetTypes().size()); + } + + /** + * Method under test: {@link OwnerRepository#findByLastName(String, Pageable)} + */ + @Test + void testFindByLastName() { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + + Owner owner2 = new Owner(); + owner2.setAddress("17 High St"); + owner2.setCity("London"); + owner2.setFirstName("John"); + owner2.setLastName("Smith"); + owner2.setTelephone("8605550118"); + ownerRepository.save(owner); + ownerRepository.save(owner2); + + // Act and Assert + assertEquals(1, ownerRepository.findByLastName("Doe", Pageable.unpaged()).toList().size()); + } + + /** + * Method under test: {@link OwnerRepository#findById(Integer)} + */ + @Test + void testFindById() { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + ownerRepository.save(owner); + + Owner owner2 = new Owner(); + owner2.setAddress("17 High St"); + owner2.setCity("London"); + owner2.setFirstName("John"); + owner2.setLastName("Smith"); + owner2.setTelephone("8605550118"); + ownerRepository.save(owner2); + + Owner owner3 = new Owner(); + owner3.setAddress("42 Main St"); + owner3.setCity("Oxford"); + owner3.setFirstName("Jane"); + owner3.setLastName("Doe"); + owner3.setTelephone("6625550144"); + ownerRepository.save(owner3); + + // Act and Assert + assertSame(owner3, ownerRepository.findById(owner3.getId())); + } + + /** + * Method under test: {@link OwnerRepository#save(Owner)} + */ + @Test + void testSave() { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + + // Act + ownerRepository.save(owner); + + // Assert + List findPetTypesResult = ownerRepository.findPetTypes(); + assertEquals(6, findPetTypesResult.size()); + PetType getResult = findPetTypesResult.get(0); + assertEquals("bird", getResult.getName()); + PetType getResult2 = findPetTypesResult.get(1); + assertEquals("cat", getResult2.getName()); + PetType getResult3 = findPetTypesResult.get(2); + assertEquals("dog", getResult3.getName()); + PetType getResult4 = findPetTypesResult.get(3); + assertEquals("hamster", getResult4.getName()); + PetType getResult5 = findPetTypesResult.get(4); + assertEquals("lizard", getResult5.getName()); + PetType getResult6 = findPetTypesResult.get(5); + assertEquals("snake", getResult6.getName()); + assertEquals(1, getResult2.getId().intValue()); + assertEquals(2, getResult3.getId().intValue()); + assertEquals(3, getResult5.getId().intValue()); + assertEquals(4, getResult6.getId().intValue()); + assertEquals(5, getResult.getId().intValue()); + assertEquals(6, getResult4.getId().intValue()); + assertFalse(getResult.isNew()); + assertFalse(getResult2.isNew()); + assertFalse(getResult3.isNew()); + assertFalse(getResult4.isNew()); + assertFalse(getResult5.isNew()); + assertFalse(getResult6.isNew()); + } + + /** + * Method under test: {@link OwnerRepository#findAll(Pageable)} + */ + @Test + void testFindAll() { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + + Owner owner2 = new Owner(); + owner2.setAddress("17 High St"); + owner2.setCity("London"); + owner2.setFirstName("John"); + owner2.setLastName("Smith"); + owner2.setTelephone("8605550118"); + ownerRepository.save(owner); + ownerRepository.save(owner2); + + // Act and Assert + assertEquals(12, ownerRepository.findAll(Pageable.unpaged()).toList().size()); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/owner/PetControllerDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/owner/PetControllerDiffblueTest.java new file mode 100644 index 00000000000..12a225b4974 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/owner/PetControllerDiffblueTest.java @@ -0,0 +1,816 @@ +package org.springframework.samples.petclinic.owner; + +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Collection; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.web.servlet.ResultActions; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +@ContextConfiguration(classes = {PetController.class}) +@ExtendWith(SpringExtension.class) +class PetControllerDiffblueTest { + @MockBean + private OwnerRepository ownerRepository; + + @Autowired + private PetController petController; + /** + * Method under test: {@link PetController#populatePetTypes()} + */ + @Test + void testPopulatePetTypes() { + // Arrange + ArrayList petTypeList = new ArrayList<>(); + when(ownerRepository.findPetTypes()).thenReturn(petTypeList); + + // Act + Collection actualPopulatePetTypesResult = petController.populatePetTypes(); + + // Assert + verify(ownerRepository).findPetTypes(); + assertTrue(actualPopulatePetTypesResult.isEmpty()); + assertSame(petTypeList, actualPopulatePetTypesResult); + } + + /** + * Method under test: {@link PetController#populatePetTypes()} + */ + @Test + void testPopulatePetTypes2() { + // Arrange + when(ownerRepository.findPetTypes()).thenThrow(new IllegalArgumentException("foo")); + + // Act and Assert + assertThrows(IllegalArgumentException.class, () -> petController.populatePetTypes()); + verify(ownerRepository).findPetTypes(); + } + + /** + * Method under test: {@link PetController#findOwner(int)} + */ + @Test + void testFindOwner() { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + + // Act + Owner actualFindOwnerResult = petController.findOwner(1); + + // Assert + verify(ownerRepository).findById(Mockito.any()); + assertSame(owner, actualFindOwnerResult); + } + + /** + * Method under test: {@link PetController#findOwner(int)} + */ + @Test + void testFindOwner2() { + // Arrange + when(ownerRepository.findById(Mockito.any())).thenThrow(new IllegalArgumentException("foo")); + + // Act and Assert + assertThrows(IllegalArgumentException.class, () -> petController.findOwner(1)); + verify(ownerRepository).findById(Mockito.any()); + } + + /** + * Method under test: {@link PetController#findPet(int, Integer)} + */ + @Test + void testFindPet() { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + + // Act + Pet actualFindPetResult = petController.findPet(1, 1); + + // Assert + verify(ownerRepository).findById(Mockito.any()); + assertNull(actualFindPetResult); + } + + /** + * Method under test: {@link PetController#findPet(int, Integer)} + */ + @Test + void testFindPet2() { + // Arrange + PetType type = new PetType(); + type.setId(1); + type.setName("Dog"); + + Pet pet = new Pet(); + pet.setBirthDate(LocalDate.of(1970, 1, 1)); + pet.setId(1); + pet.setName("Bella"); + pet.setType(type); + Owner owner = mock(Owner.class); + when(owner.getPet(Mockito.any())).thenReturn(pet); + doNothing().when(owner).setId(Mockito.any()); + doNothing().when(owner).setFirstName(Mockito.any()); + doNothing().when(owner).setLastName(Mockito.any()); + doNothing().when(owner).setAddress(Mockito.any()); + doNothing().when(owner).setCity(Mockito.any()); + doNothing().when(owner).setTelephone(Mockito.any()); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + + // Act + Pet actualFindPetResult = petController.findPet(1, 1); + + // Assert + verify(owner).setId(Mockito.any()); + verify(owner).setFirstName(Mockito.any()); + verify(owner).setLastName(Mockito.any()); + verify(owner).getPet(Mockito.any()); + verify(owner).setAddress(Mockito.any()); + verify(owner).setCity(Mockito.any()); + verify(owner).setTelephone(Mockito.any()); + verify(ownerRepository).findById(Mockito.any()); + assertSame(pet, actualFindPetResult); + } + + /** + * Method under test: {@link PetController#findPet(int, Integer)} + */ + @Test + void testFindPet3() { + // Arrange + Owner owner = mock(Owner.class); + doNothing().when(owner).setId(Mockito.any()); + doNothing().when(owner).setFirstName(Mockito.any()); + doNothing().when(owner).setLastName(Mockito.any()); + doNothing().when(owner).setAddress(Mockito.any()); + doNothing().when(owner).setCity(Mockito.any()); + doNothing().when(owner).setTelephone(Mockito.any()); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + + // Act + Pet actualFindPetResult = petController.findPet(1, null); + + // Assert + verify(owner).setId(Mockito.any()); + verify(owner).setFirstName(Mockito.any()); + verify(owner).setLastName(Mockito.any()); + verify(owner).setAddress(Mockito.any()); + verify(owner).setCity(Mockito.any()); + verify(owner).setTelephone(Mockito.any()); + assertTrue(actualFindPetResult.getVisits().isEmpty()); + } + + /** + * Method under test: {@link PetController#initCreationForm(Owner, ModelMap)} + */ + @Test + void testInitCreationForm() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}/pets/new", 1); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: {@link PetController#initCreationForm(Owner, ModelMap)} + */ + @Test + void testInitCreationForm2() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}/pets/new", + "Uri Variables", "Uri Variables"); + + // Act + ResultActions actualPerformResult = MockMvcBuilders.standaloneSetup(petController).build().perform(requestBuilder); + + // Assert + actualPerformResult.andExpect(MockMvcResultMatchers.status().is(400)); + } + + /** + * Method under test: {@link PetController#initCreationForm(Owner, ModelMap)} + */ + @Test + void testInitCreationForm3() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}/pets/new", 1); + requestBuilder.contentType("text/plain"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: {@link PetController#initCreationForm(Owner, ModelMap)} + */ + @Test + void testInitCreationForm4() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}/pets/new", 1) + .param("address", "42 Main St"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: {@link PetController#initCreationForm(Owner, ModelMap)} + */ + @Test + void testInitCreationForm5() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}/pets/new", 1) + .param("city", "Oxford"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: {@link PetController#initCreationForm(Owner, ModelMap)} + */ + @Test + void testInitCreationForm6() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}/pets/new", 1) + .param("telephone", "6625550144"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#initUpdateForm(Owner, int, ModelMap, RedirectAttributes)} + */ + @Test + void testInitUpdateForm() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}/pets/{petId}/edit", 1, + 1); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#initUpdateForm(Owner, int, ModelMap, RedirectAttributes)} + */ + @Test + void testInitUpdateForm2() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}/pets/{petId}/edit", + "Uri Variables", "Uri Variables", "Uri Variables"); + + // Act + ResultActions actualPerformResult = MockMvcBuilders.standaloneSetup(petController).build().perform(requestBuilder); + + // Assert + actualPerformResult.andExpect(MockMvcResultMatchers.status().is(400)); + } + + /** + * Method under test: + * {@link PetController#initUpdateForm(Owner, int, ModelMap, RedirectAttributes)} + */ + @Test + void testInitUpdateForm3() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/owners/{ownerId}/pets/{petId}/edit", 1, + 1); + requestBuilder.contentType("text/plain"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#initUpdateForm(Owner, int, ModelMap, RedirectAttributes)} + */ + @Test + void testInitUpdateForm4() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders + .get("/owners/{ownerId}/pets/{petId}/edit", 1, 1) + .param("address", "42 Main St"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#initUpdateForm(Owner, int, ModelMap, RedirectAttributes)} + */ + @Test + void testInitUpdateForm5() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders + .get("/owners/{ownerId}/pets/{petId}/edit", 1, 1) + .param("city", "Oxford"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#initUpdateForm(Owner, int, ModelMap, RedirectAttributes)} + */ + @Test + void testInitUpdateForm6() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders + .get("/owners/{ownerId}/pets/{petId}/edit", 1, 1) + .param("telephone", "6625550144"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#processCreationForm(Owner, Pet, BindingResult, ModelMap, RedirectAttributes)} + */ + @Test + void testProcessCreationForm() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/pets/new", 1); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#processCreationForm(Owner, Pet, BindingResult, ModelMap, RedirectAttributes)} + */ + @Test + void testProcessCreationForm2() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/pets/new", + "Uri Variables", "Uri Variables"); + + // Act + ResultActions actualPerformResult = MockMvcBuilders.standaloneSetup(petController).build().perform(requestBuilder); + + // Assert + actualPerformResult.andExpect(MockMvcResultMatchers.status().is(400)); + } + + /** + * Method under test: + * {@link PetController#processCreationForm(Owner, Pet, BindingResult, ModelMap, RedirectAttributes)} + */ + @Test + void testProcessCreationForm3() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/pets/new", 1); + requestBuilder.contentType("text/plain"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#processCreationForm(Owner, Pet, BindingResult, ModelMap, RedirectAttributes)} + */ + @Test + void testProcessCreationForm4() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/pets/new", 1) + .param("address", "42 Main St"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#processCreationForm(Owner, Pet, BindingResult, ModelMap, RedirectAttributes)} + */ + @Test + void testProcessCreationForm5() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/pets/new", 1) + .param("city", "Oxford"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#processCreationForm(Owner, Pet, BindingResult, ModelMap, RedirectAttributes)} + */ + @Test + void testProcessCreationForm6() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/pets/new", 1) + .param("telephone", "6625550144"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#processCreationForm(Owner, Pet, BindingResult, ModelMap, RedirectAttributes)} + */ + @Test + void testProcessCreationForm7() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/pets/new", 1) + .param("birthDate", "2020-03-01"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#processCreationForm(Owner, Pet, BindingResult, ModelMap, RedirectAttributes)} + */ + @Test + void testProcessCreationForm8() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/pets/new", 1) + .param("name", "Bella"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(petController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(3)) + .andExpect(MockMvcResultMatchers.model().attributeExists("owner", "pet", "types")) + .andExpect(MockMvcResultMatchers.view().name("pets/createOrUpdatePetForm")) + .andExpect(MockMvcResultMatchers.forwardedUrl("pets/createOrUpdatePetForm")); + } + + /** + * Method under test: + * {@link PetController#processUpdateForm(Pet, BindingResult, Owner, ModelMap, RedirectAttributes)} + */ + @Test + void testProcessUpdateForm() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/owners/{ownerId}/pets/42/edit", + "Uri Variables", "Uri Variables"); + + // Act + ResultActions actualPerformResult = MockMvcBuilders.standaloneSetup(petController).build().perform(requestBuilder); + + // Assert + actualPerformResult.andExpect(MockMvcResultMatchers.status().is(400)); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/owner/PetDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/owner/PetDiffblueTest.java new file mode 100644 index 00000000000..45d1f475baa --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/owner/PetDiffblueTest.java @@ -0,0 +1,59 @@ +package org.springframework.samples.petclinic.owner; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; +import java.time.LocalDate; +import org.junit.jupiter.api.Test; + +class PetDiffblueTest { + /** + * Method under test: {@link Pet#addVisit(Visit)} + */ + @Test + void testAddVisit() { + // Arrange + Pet pet = new Pet(); + + Visit visit = new Visit(); + visit.setDate(LocalDate.of(1970, 1, 1)); + visit.setDescription("The characteristics of someone or something"); + visit.setId(1); + + // Act + pet.addVisit(visit); + + // Assert + assertEquals(1, pet.getVisits().size()); + } + + /** + * Methods under test: + * + *
    + *
  • default or parameterless constructor of {@link Pet} + *
  • {@link Pet#setBirthDate(LocalDate)} + *
  • {@link Pet#setType(PetType)} + *
  • {@link Pet#getBirthDate()} + *
  • {@link Pet#getType()} + *
  • {@link Pet#getVisits()} + *
+ */ + @Test + void testGettersAndSetters() { + // Arrange and Act + Pet actualPet = new Pet(); + LocalDate birthDate = LocalDate.of(1970, 1, 1); + actualPet.setBirthDate(birthDate); + PetType type = new PetType(); + type.setId(1); + type.setName("Dog"); + actualPet.setType(type); + LocalDate actualBirthDate = actualPet.getBirthDate(); + PetType actualType = actualPet.getType(); + actualPet.getVisits(); + + // Assert that nothing has changed + assertSame(type, actualType); + assertSame(birthDate, actualBirthDate); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/owner/PetTypeDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/owner/PetTypeDiffblueTest.java new file mode 100644 index 00000000000..cc8a6e3cb4a --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/owner/PetTypeDiffblueTest.java @@ -0,0 +1,21 @@ +package org.springframework.samples.petclinic.owner; + +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; + +class PetTypeDiffblueTest { + /** + * Method under test: default or parameterless constructor of {@link PetType} + */ + @Test + void testNewPetType() { + // Arrange and Act + PetType actualPetType = new PetType(); + + // Assert + assertNull(actualPetType.getId()); + assertNull(actualPetType.getName()); + assertTrue(actualPetType.isNew()); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterDiffblueTest.java new file mode 100644 index 00000000000..3437b88041d --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/owner/PetTypeFormatterDiffblueTest.java @@ -0,0 +1,127 @@ +package org.springframework.samples.petclinic.owner; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import java.text.ParseException; +import java.util.ArrayList; +import java.util.Locale; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +@ContextConfiguration(classes = {PetTypeFormatter.class}) +@ExtendWith(SpringExtension.class) +class PetTypeFormatterDiffblueTest { + @MockBean + private OwnerRepository ownerRepository; + + @Autowired + private PetTypeFormatter petTypeFormatter; + /** + * Method under test: {@link PetTypeFormatter#print(PetType, Locale)} + */ + @Test + void testPrint() { + // Arrange + PetType petType = new PetType(); + petType.setId(1); + petType.setName("Dog"); + + // Act and Assert + assertEquals("Dog", petTypeFormatter.print(petType, Locale.getDefault())); + } + + /** + * Method under test: {@link PetTypeFormatter#print(PetType, Locale)} + */ + @Test + void testPrint2() { + // Arrange + PetType petType = mock(PetType.class); + when(petType.getName()).thenReturn("Bella"); + doNothing().when(petType).setId(Mockito.any()); + doNothing().when(petType).setName(Mockito.any()); + petType.setId(1); + petType.setName("Dog"); + + // Act + String actualPrintResult = petTypeFormatter.print(petType, Locale.getDefault()); + + // Assert + verify(petType).setId(Mockito.any()); + verify(petType).getName(); + verify(petType).setName(Mockito.any()); + assertEquals("Bella", actualPrintResult); + } + + /** + * Method under test: {@link PetTypeFormatter#parse(String, Locale)} + */ + @Test + void testParse() throws ParseException { + // Arrange + when(ownerRepository.findPetTypes()).thenReturn(new ArrayList<>()); + + // Act and Assert + assertThrows(ParseException.class, () -> petTypeFormatter.parse("Dog", Locale.getDefault())); + verify(ownerRepository).findPetTypes(); + } + + /** + * Method under test: {@link PetTypeFormatter#parse(String, Locale)} + */ + @Test + void testParse2() throws ParseException { + // Arrange + PetType petType = new PetType(); + petType.setId(1); + petType.setName("Dog"); + + ArrayList petTypeList = new ArrayList<>(); + petTypeList.add(petType); + when(ownerRepository.findPetTypes()).thenReturn(petTypeList); + + // Act + PetType actualParseResult = petTypeFormatter.parse("Dog", Locale.getDefault()); + + // Assert + verify(ownerRepository).findPetTypes(); + assertSame(petType, actualParseResult); + } + + /** + * Method under test: {@link PetTypeFormatter#parse(String, Locale)} + */ + @Test + void testParse3() throws ParseException { + // Arrange + PetType petType = new PetType(); + petType.setId(1); + petType.setName("Dog"); + + PetType petType2 = new PetType(); + petType2.setId(2); + petType2.setName("Bella"); + + ArrayList petTypeList = new ArrayList<>(); + petTypeList.add(petType2); + petTypeList.add(petType); + when(ownerRepository.findPetTypes()).thenReturn(petTypeList); + + // Act + PetType actualParseResult = petTypeFormatter.parse("Dog", Locale.getDefault()); + + // Assert + verify(ownerRepository).findPetTypes(); + assertSame(petType, actualParseResult); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/owner/PetValidatorDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/owner/PetValidatorDiffblueTest.java new file mode 100644 index 00000000000..05bee75091c --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/owner/PetValidatorDiffblueTest.java @@ -0,0 +1,200 @@ +package org.springframework.samples.petclinic.owner; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; +import java.time.LocalDate; +import org.junit.jupiter.api.Test; +import org.springframework.beans.BeanWrapperImpl; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.BindException; +import org.springframework.validation.BindingResult; +import org.springframework.validation.Errors; +import org.springframework.validation.FieldError; + +class PetValidatorDiffblueTest { + /** + * Method under test: {@link PetValidator#validate(Object, Errors)} + */ + @Test + void testValidate() { + // Arrange + PetValidator petValidator = new PetValidator(); + + PetType type = new PetType(); + type.setId(1); + type.setName("Dog"); + + Pet pet = new Pet(); + pet.setBirthDate(LocalDate.of(1970, 1, 1)); + pet.setId(1); + pet.setName("Bella"); + pet.setType(type); + + // Act + petValidator.validate(pet, new BindException(pet, "org.springframework.samples.petclinic.owner.Pet")); + + // Assert that nothing has changed + assertEquals("1970-01-01", pet.getBirthDate().toString()); + assertEquals("Bella", pet.getName()); + assertFalse(pet.isNew()); + assertTrue(pet.getVisits().isEmpty()); + assertSame(type, pet.getType()); + } + + /** + * Method under test: {@link PetValidator#validate(Object, Errors)} + */ + @Test + void testValidate2() { + // Arrange + PetValidator petValidator = new PetValidator(); + + PetType type = new PetType(); + type.setId(1); + type.setName("Dog"); + + Pet pet = new Pet(); + pet.setBirthDate(null); + pet.setId(1); + pet.setName("Bella"); + pet.setType(type); + BindException errors = new BindException(pet, "org.springframework.samples.petclinic.owner.Pet"); + + // Act + petValidator.validate(pet, errors); + + // Assert + FieldError fieldError = errors.getFieldError(); + assertEquals("birthDate", fieldError.getField()); + assertEquals("org.springframework.samples.petclinic.owner.Pet", fieldError.getObjectName()); + assertNull(fieldError.getRejectedValue()); + assertFalse(fieldError.isBindingFailure()); + BindingResult bindingResult = errors.getBindingResult(); + assertTrue(bindingResult.hasErrors()); + assertSame(errors.getPropertyEditorRegistry(), ((BeanPropertyBindingResult) bindingResult).getPropertyAccessor()); + } + + /** + * Method under test: {@link PetValidator#validate(Object, Errors)} + */ + @Test + void testValidate3() { + // Arrange + PetValidator petValidator = new PetValidator(); + + PetType type = new PetType(); + type.setId(1); + type.setName("Dog"); + + Pet pet = new Pet(); + pet.setBirthDate(LocalDate.of(1970, 1, 1)); + pet.setId(null); + pet.setName("Bella"); + pet.setType(type); + + // Act + petValidator.validate(pet, new BindException(pet, "org.springframework.samples.petclinic.owner.Pet")); + + // Assert that nothing has changed + assertEquals("1970-01-01", pet.getBirthDate().toString()); + assertEquals("Bella", pet.getName()); + assertTrue(pet.getVisits().isEmpty()); + assertTrue(pet.isNew()); + assertSame(type, pet.getType()); + } + + /** + * Method under test: {@link PetValidator#validate(Object, Errors)} + */ + @Test + void testValidate4() { + // Arrange + PetValidator petValidator = new PetValidator(); + + PetType type = new PetType(); + type.setId(1); + type.setName("Dog"); + + Pet pet = new Pet(); + pet.setBirthDate(LocalDate.of(1970, 1, 1)); + pet.setId(1); + pet.setName(null); + pet.setType(type); + BindException errors = new BindException(pet, "org.springframework.samples.petclinic.owner.Pet"); + + // Act + petValidator.validate(pet, errors); + + // Assert + FieldError fieldError = errors.getFieldError(); + assertEquals("name", fieldError.getField()); + assertEquals("org.springframework.samples.petclinic.owner.Pet", fieldError.getObjectName()); + assertNull(fieldError.getRejectedValue()); + assertFalse(fieldError.isBindingFailure()); + BindingResult bindingResult = errors.getBindingResult(); + assertTrue(bindingResult.hasErrors()); + assertSame(errors.getPropertyEditorRegistry(), ((BeanPropertyBindingResult) bindingResult).getPropertyAccessor()); + } + + /** + * Method under test: {@link PetValidator#validate(Object, Errors)} + */ + @Test + void testValidate5() { + // Arrange + PetValidator petValidator = new PetValidator(); + + PetType type = new PetType(); + type.setId(1); + type.setName("Dog"); + + Pet pet = new Pet(); + pet.setBirthDate(LocalDate.of(1970, 1, 1)); + pet.setId(1); + pet.setName(""); + pet.setType(type); + BindException errors = new BindException(pet, "org.springframework.samples.petclinic.owner.Pet"); + + // Act + petValidator.validate(pet, errors); + + // Assert + FieldError fieldError = errors.getFieldError(); + assertEquals("", fieldError.getRejectedValue()); + assertEquals("name", fieldError.getField()); + assertEquals("org.springframework.samples.petclinic.owner.Pet", fieldError.getObjectName()); + assertFalse(fieldError.isBindingFailure()); + BindingResult bindingResult = errors.getBindingResult(); + assertTrue(bindingResult.hasErrors()); + assertSame(errors.getPropertyEditorRegistry(), ((BeanPropertyBindingResult) bindingResult).getPropertyAccessor()); + } + + /** + * Method under test: {@link PetValidator#supports(Class)} + */ + @Test + void testSupports() { + // Arrange + PetValidator petValidator = new PetValidator(); + Class clazz = Object.class; + + // Act and Assert + assertFalse(petValidator.supports(clazz)); + } + + /** + * Method under test: {@link PetValidator#supports(Class)} + */ + @Test + void testSupports2() { + // Arrange + PetValidator petValidator = new PetValidator(); + Class clazz = Pet.class; + + // Act and Assert + assertTrue(petValidator.supports(clazz)); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerDiffblueTest.java new file mode 100644 index 00000000000..a6ad6da6d9f --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/owner/VisitControllerDiffblueTest.java @@ -0,0 +1,134 @@ +package org.springframework.samples.petclinic.owner; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; +import java.time.LocalDate; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.web.servlet.ResultActions; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.validation.BindingResult; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +@ContextConfiguration(classes = {VisitController.class}) +@ExtendWith(SpringExtension.class) +class VisitControllerDiffblueTest { + @MockBean + private OwnerRepository ownerRepository; + + @Autowired + private VisitController visitController; + /** + * Method under test: {@link VisitController#loadPetWithVisit(int, int, Map)} + */ + @Test + void testLoadPetWithVisit() { + // Arrange + PetType type = new PetType(); + type.setId(1); + type.setName("Dog"); + + Pet pet = new Pet(); + pet.setBirthDate(LocalDate.of(1970, 1, 1)); + pet.setId(1); + pet.setName("Bella"); + pet.setType(type); + Owner owner = mock(Owner.class); + when(owner.getPet(Mockito.any())).thenReturn(pet); + doNothing().when(owner).setId(Mockito.any()); + doNothing().when(owner).setFirstName(Mockito.any()); + doNothing().when(owner).setLastName(Mockito.any()); + doNothing().when(owner).setAddress(Mockito.any()); + doNothing().when(owner).setCity(Mockito.any()); + doNothing().when(owner).setTelephone(Mockito.any()); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + HashMap model = new HashMap<>(); + + // Act + visitController.loadPetWithVisit(1, 1, model); + + // Assert + verify(owner).setId(Mockito.any()); + verify(owner).setFirstName(Mockito.any()); + verify(owner).setLastName(Mockito.any()); + verify(owner).getPet(Mockito.any()); + verify(owner).setAddress(Mockito.any()); + verify(owner).setCity(Mockito.any()); + verify(owner).setTelephone(Mockito.any()); + verify(ownerRepository).findById(Mockito.any()); + assertEquals(2, model.size()); + assertEquals(1, ((Pet) model.get("pet")).getVisits().size()); + } + + /** + * Method under test: {@link VisitController#initNewVisitForm()} + */ + @Test + void testInitNewVisitForm() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders + .get("/owners/{ownerId}/pets/{petId}/visits/new", "Uri Variables", "Uri Variables", "Uri Variables"); + + // Act + ResultActions actualPerformResult = MockMvcBuilders.standaloneSetup(visitController) + .build() + .perform(requestBuilder); + + // Assert + actualPerformResult.andExpect(MockMvcResultMatchers.status().is(400)); + } + + /** + * Method under test: + * {@link VisitController#processNewVisitForm(Owner, int, Visit, BindingResult, RedirectAttributes)} + */ + @Test + void testProcessNewVisitForm() throws Exception { + // Arrange + Owner owner = new Owner(); + owner.setAddress("42 Main St"); + owner.setCity("Oxford"); + owner.setFirstName("Jane"); + owner.setId(1); + owner.setLastName("Doe"); + owner.setTelephone("6625550144"); + when(ownerRepository.findById(Mockito.any())).thenReturn(owner); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders + .post("/owners/{ownerId}/pets/{petId}/visits/new", "Uri Variables", "Uri Variables", "Uri Variables"); + + // Act + ResultActions actualPerformResult = MockMvcBuilders.standaloneSetup(visitController) + .build() + .perform(requestBuilder); + + // Assert + actualPerformResult.andExpect(MockMvcResultMatchers.status().is(400)); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/owner/VisitDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/owner/VisitDiffblueTest.java new file mode 100644 index 00000000000..79aee0f61b2 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/owner/VisitDiffblueTest.java @@ -0,0 +1,50 @@ +package org.springframework.samples.petclinic.owner; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; +import java.time.LocalDate; +import org.junit.jupiter.api.Test; + +class VisitDiffblueTest { + /** + * Methods under test: + * + *
    + *
  • {@link Visit#setDate(LocalDate)} + *
  • {@link Visit#setDescription(String)} + *
  • {@link Visit#getDate()} + *
  • {@link Visit#getDescription()} + *
+ */ + @Test + void testGettersAndSetters() { + // Arrange + Visit visit = new Visit(); + LocalDate date = LocalDate.of(1970, 1, 1); + + // Act + visit.setDate(date); + visit.setDescription("The characteristics of someone or something"); + LocalDate actualDate = visit.getDate(); + + // Assert that nothing has changed + assertEquals("The characteristics of someone or something", visit.getDescription()); + assertSame(date, actualDate); + } + + /** + * Method under test: default or parameterless constructor of {@link Visit} + */ + @Test + void testNewVisit() { + // Arrange and Act + Visit actualVisit = new Visit(); + + // Assert + assertNull(actualVisit.getId()); + assertNull(actualVisit.getDescription()); + assertTrue(actualVisit.isNew()); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/system/CrashControllerDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/system/CrashControllerDiffblueTest.java new file mode 100644 index 00000000000..9ba72814464 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/system/CrashControllerDiffblueTest.java @@ -0,0 +1,28 @@ +package org.springframework.samples.petclinic.system; + +import static org.junit.jupiter.api.Assertions.assertThrows; +import org.junit.jupiter.api.Test; + +class CrashControllerDiffblueTest { + /** + * Method under test: {@link CrashController#triggerException()} + */ + @Test + void testTriggerException() { + // Diffblue Cover was unable to write a Spring test, + // so wrote a non-Spring test instead. + // Reason: R013 No inputs found that don't throw a trivial exception. + // Diffblue Cover tried to run the arrange/act section, but the method under + // test threw + // jakarta.servlet.ServletException: Request processing failed: java.lang.RuntimeException: Expected: controller used to showcase what happens when an exception is thrown + // at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + // at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + // java.lang.RuntimeException: Expected: controller used to showcase what happens when an exception is thrown + // at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) + // at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) + // See https://diff.blue/R013 to resolve this issue. + + // Arrange, Act and Assert + assertThrows(RuntimeException.class, () -> (new CrashController()).triggerException()); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/system/WelcomeControllerDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/system/WelcomeControllerDiffblueTest.java new file mode 100644 index 00000000000..6e0e8d2945c --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/system/WelcomeControllerDiffblueTest.java @@ -0,0 +1,54 @@ +package org.springframework.samples.petclinic.system; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; + +@ContextConfiguration(classes = {WelcomeController.class}) +@ExtendWith(SpringExtension.class) +class WelcomeControllerDiffblueTest { + @Autowired + private WelcomeController welcomeController; + /** + * Method under test: {@link WelcomeController#welcome()} + */ + @Test + void testWelcome() throws Exception { + // Arrange + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(welcomeController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(0)) + .andExpect(MockMvcResultMatchers.view().name("welcome")) + .andExpect(MockMvcResultMatchers.forwardedUrl("welcome")); + } + + /** + * Method under test: {@link WelcomeController#welcome()} + */ + @Test + void testWelcome2() throws Exception { + // Arrange + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/"); + requestBuilder.contentType("https://example.org/example"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(welcomeController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(0)) + .andExpect(MockMvcResultMatchers.view().name("welcome")) + .andExpect(MockMvcResultMatchers.forwardedUrl("welcome")); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/vet/SpecialtyDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/vet/SpecialtyDiffblueTest.java new file mode 100644 index 00000000000..f16597603a0 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/vet/SpecialtyDiffblueTest.java @@ -0,0 +1,21 @@ +package org.springframework.samples.petclinic.vet; + +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; + +class SpecialtyDiffblueTest { + /** + * Method under test: default or parameterless constructor of {@link Specialty} + */ + @Test + void testNewSpecialty() { + // Arrange and Act + Specialty actualSpecialty = new Specialty(); + + // Assert + assertNull(actualSpecialty.getId()); + assertNull(actualSpecialty.getName()); + assertTrue(actualSpecialty.isNew()); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/vet/VetControllerDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/vet/VetControllerDiffblueTest.java new file mode 100644 index 00000000000..4041db7ccb7 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/vet/VetControllerDiffblueTest.java @@ -0,0 +1,87 @@ +package org.springframework.samples.petclinic.vet; + +import static org.mockito.Mockito.when; +import java.util.ArrayList; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.ui.Model; + +@ContextConfiguration(classes = {VetController.class}) +@ExtendWith(SpringExtension.class) +class VetControllerDiffblueTest { + @Autowired + private VetController vetController; + + @MockBean + private VetRepository vetRepository; + /** + * Method under test: {@link VetController#showResourcesVetList()} + */ + @Test + void testShowResourcesVetList() throws Exception { + // Arrange + when(vetRepository.findAll()).thenReturn(new ArrayList<>()); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/vets"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(vetController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.content().contentType("application/xml")) + .andExpect(MockMvcResultMatchers.content() + .string("")); + } + + /** + * Method under test: {@link VetController#showResourcesVetList()} + */ + @Test + void testShowResourcesVetList2() throws Exception { + // Arrange + when(vetRepository.findAll()).thenReturn(new ArrayList<>()); + MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/vets"); + requestBuilder.contentType("https://example.org/example"); + + // Act and Assert + MockMvcBuilders.standaloneSetup(vetController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.content().contentType("application/xml")) + .andExpect(MockMvcResultMatchers.content() + .string("")); + } + + /** + * Method under test: {@link VetController#showVetList(int, Model)} + */ + @Test + void testShowVetList() throws Exception { + // Arrange + when(vetRepository.findAll(Mockito.any())).thenReturn(new PageImpl<>(new ArrayList<>())); + MockHttpServletRequestBuilder getResult = MockMvcRequestBuilders.get("/vets.html"); + MockHttpServletRequestBuilder requestBuilder = getResult.param("page", String.valueOf(1)); + + // Act and Assert + MockMvcBuilders.standaloneSetup(vetController) + .build() + .perform(requestBuilder) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.model().size(4)) + .andExpect(MockMvcResultMatchers.model().attributeExists("currentPage", "listVets", "totalItems", "totalPages")) + .andExpect(MockMvcResultMatchers.view().name("vets/vetList")) + .andExpect(MockMvcResultMatchers.forwardedUrl("vets/vetList")); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/vet/VetDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/vet/VetDiffblueTest.java new file mode 100644 index 00000000000..a2f8e413c6f --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/vet/VetDiffblueTest.java @@ -0,0 +1,167 @@ +package org.springframework.samples.petclinic.vet; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.assertTrue; +import java.util.HashSet; +import java.util.Set; +import org.junit.jupiter.api.Test; + +class VetDiffblueTest { + /** + * Method under test: {@link Vet#getSpecialtiesInternal()} + */ + @Test + void testGetSpecialtiesInternal() { + // Arrange + Vet vet = new Vet(); + + // Act + Set actualSpecialtiesInternal = vet.getSpecialtiesInternal(); + + // Assert + assertEquals(0, vet.getNrOfSpecialties()); + assertTrue(actualSpecialtiesInternal.isEmpty()); + } + + /** + * Method under test: {@link Vet#getSpecialtiesInternal()} + */ + @Test + void testGetSpecialtiesInternal2() { + // Arrange + Vet vet = new Vet(); + vet.setFirstName("Jane"); + vet.setId(1); + vet.setLastName("Doe"); + HashSet specialties = new HashSet<>(); + vet.setSpecialtiesInternal(specialties); + + // Act + Set actualSpecialtiesInternal = vet.getSpecialtiesInternal(); + + // Assert + assertTrue(actualSpecialtiesInternal.isEmpty()); + assertSame(specialties, actualSpecialtiesInternal); + } + + /** + * Method under test: {@link Vet#getSpecialties()} + */ + @Test + void testGetSpecialties() { + // Arrange + Vet vet = new Vet(); + + // Act and Assert + assertTrue(vet.getSpecialties().isEmpty()); + assertTrue(vet.getSpecialtiesInternal().isEmpty()); + } + + /** + * Method under test: {@link Vet#getSpecialties()} + */ + @Test + void testGetSpecialties2() { + // Arrange + Vet vet = new Vet(); + vet.setFirstName("Jane"); + vet.setId(1); + vet.setLastName("Doe"); + vet.setSpecialtiesInternal(new HashSet<>()); + + // Act and Assert + assertTrue(vet.getSpecialties().isEmpty()); + } + + /** + * Method under test: {@link Vet#getNrOfSpecialties()} + */ + @Test + void testGetNrOfSpecialties() { + // Arrange + Vet vet = new Vet(); + + // Act and Assert + assertEquals(0, vet.getNrOfSpecialties()); + assertTrue(vet.getSpecialtiesInternal().isEmpty()); + } + + /** + * Method under test: {@link Vet#getNrOfSpecialties()} + */ + @Test + void testGetNrOfSpecialties2() { + // Arrange + Vet vet = new Vet(); + vet.setFirstName("Jane"); + vet.setId(1); + vet.setLastName("Doe"); + vet.setSpecialtiesInternal(new HashSet<>()); + + // Act and Assert + assertEquals(0, vet.getNrOfSpecialties()); + } + + /** + * Method under test: {@link Vet#addSpecialty(Specialty)} + */ + @Test + void testAddSpecialty() { + // Arrange + Vet vet = new Vet(); + + Specialty specialty = new Specialty(); + specialty.setId(1); + specialty.setName("Canines"); + + // Act + vet.addSpecialty(specialty); + + // Assert + assertEquals(1, vet.getSpecialties().size()); + assertEquals(1, vet.getSpecialtiesInternal().size()); + } + + /** + * Method under test: {@link Vet#addSpecialty(Specialty)} + */ + @Test + void testAddSpecialty2() { + // Arrange + Vet vet = new Vet(); + vet.setFirstName("Jane"); + vet.setId(1); + vet.setLastName("Doe"); + vet.setSpecialtiesInternal(new HashSet<>()); + + Specialty specialty = new Specialty(); + specialty.setId(1); + specialty.setName("Canines"); + + // Act + vet.addSpecialty(specialty); + + // Assert + assertEquals(1, vet.getSpecialtiesInternal().size()); + } + + /** + * Methods under test: + * + *
    + *
  • default or parameterless constructor of {@link Vet} + *
  • {@link Vet#setSpecialtiesInternal(Set)} + *
+ */ + @Test + void testGettersAndSetters() { + // Arrange and Act + Vet actualVet = new Vet(); + HashSet specialties = new HashSet<>(); + actualVet.setSpecialtiesInternal(specialties); + + // Assert + assertSame(specialties, actualVet.getSpecialtiesInternal()); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/vet/VetRepositoryDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/vet/VetRepositoryDiffblueTest.java new file mode 100644 index 00000000000..0cc60038fb5 --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/vet/VetRepositoryDiffblueTest.java @@ -0,0 +1,29 @@ +package org.springframework.samples.petclinic.vet; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.dao.DataAccessException; +import org.springframework.data.domain.Pageable; +import org.springframework.test.context.ContextConfiguration; + +@ContextConfiguration(classes = {VetRepository.class}) +@EnableAutoConfiguration +@EntityScan(basePackages = {"org.springframework.samples.petclinic.vet"}) +@DataJpaTest +class VetRepositoryDiffblueTest { + @Autowired + private VetRepository vetRepository; + /** + * Method under test: {@link VetRepository#findAll()} + */ + @Test + void testFindAll() throws DataAccessException { + // Arrange, Act and Assert + assertEquals(6, vetRepository.findAll().size()); + assertEquals(6, vetRepository.findAll(Pageable.unpaged()).toList().size()); + } +} diff --git a/src/test/java/org/springframework/samples/petclinic/vet/VetsDiffblueTest.java b/src/test/java/org/springframework/samples/petclinic/vet/VetsDiffblueTest.java new file mode 100644 index 00000000000..d5e58d2775b --- /dev/null +++ b/src/test/java/org/springframework/samples/petclinic/vet/VetsDiffblueTest.java @@ -0,0 +1,24 @@ +package org.springframework.samples.petclinic.vet; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import org.junit.jupiter.api.Test; + +class VetsDiffblueTest { + /** + * Method under test: {@link Vets#getVetList()} + */ + @Test + void testGetVetList() { + // Arrange, Act and Assert + assertTrue((new Vets()).getVetList().isEmpty()); + } + + /** + * Method under test: default or parameterless constructor of {@link Vets} + */ + @Test + void testNewVets() { + // Arrange, Act and Assert + assertTrue((new Vets()).getVetList().isEmpty()); + } +}