From 0c72aaf1b2b5eafbda4d0ddc3fffa16fd6545d78 Mon Sep 17 00:00:00 2001 From: Roni Dover Date: Thu, 25 Jan 2024 11:16:30 -0800 Subject: [PATCH] updated --- docker-compose.yml | 11 ++++- pom.xml | 45 +++++++++---------- .../domain/PetVaccinationStatusService.java | 1 + .../petclinic/owner/OwnerController.java | 15 ++++++- .../petclinic/owner/PetController.java | 2 +- .../integration/OwnerControllerTests.java | 28 +++++++++--- 6 files changed, 68 insertions(+), 34 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 841c53201..dd6eb3247 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,10 +26,19 @@ services: volumes: - "./conf.d:/etc/mysql/conf.d:ro" postgres: - image: postgres:15.3 + image: postgres:16.1 ports: - "5432:5432" environment: - POSTGRES_PASSWORD=petclinic - POSTGRES_USER=petclinic - POSTGRES_DB=petclinic + + pgadmin: + image: dpage/pgadmin4 + ports: + - "8083:80" + environment: + - PGADMIN_DEFAULT_EMAIL=admin@admin.com + - PGADMIN_DEFAULT_PASSWORD=SuperSecret + diff --git a/pom.xml b/pom.xml index ff0b5e884..c680fa9a0 100644 --- a/pom.xml +++ b/pom.xml @@ -38,7 +38,26 @@ - + + org.springframework.boot + spring-boot-testcontainers + test + + + org.testcontainers + junit-jupiter + test + + + org.testcontainers + postgresql + test + + + io.rest-assured + rest-assured + test + org.springframework.boot @@ -65,28 +84,6 @@ spring-boot-starter-test test - - - org.springframework.boot - spring-boot-testcontainers - test - - - org.testcontainers - junit-jupiter - test - - - org.testcontainers - postgresql - test - - - io.rest-assured - rest-assured - test - - com.h2database @@ -348,7 +345,7 @@ http://localhost:5050 otlp none - ${pom.artifactId} + ${project.artifactId} ${env.TMPDIR}/temp-digma-otel-jars/digma-otel-agent-extension.jar diff --git a/src/main/java/org/springframework/samples/petclinic/domain/PetVaccinationStatusService.java b/src/main/java/org/springframework/samples/petclinic/domain/PetVaccinationStatusService.java index e0d91e322..583a3483d 100644 --- a/src/main/java/org/springframework/samples/petclinic/domain/PetVaccinationStatusService.java +++ b/src/main/java/org/springframework/samples/petclinic/domain/PetVaccinationStatusService.java @@ -55,6 +55,7 @@ public class PetVaccinationStatusService { catch (JSONException | IOException e) { // Fail silently Span.current().recordException(e); + } } diff --git a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java index f7f2f78e5..d522b35d4 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/OwnerController.java @@ -111,12 +111,19 @@ class OwnerController { public String processFindForm(@RequestParam(defaultValue = "1") int page, Owner owner, BindingResult result, Model model) { validator.ValidateUserAccess("admin", "pwd", "fullaccess"); - + // if (owner.getLastName()!=null){ + // throw new RuntimeException(); + // + // } // allow parameterless GET request for /owners to return all records if (owner.getLastName() == null) { owner.setLastName(""); // empty string signifies broadest possible search } + for (int i = 0; i < 100; i++) { + Page ownersResults = findPaginatedForOwnersLastName(page, owner.getLastName()); + } + // find owners by last name Page ownersResults = findPaginatedForOwnersLastName(page, owner.getLastName()); if (ownersResults.isEmpty()) { @@ -152,6 +159,12 @@ class OwnerController { return owners.findByLastName(lastname, pageable); } + private Page findPaginatedForOwnersLastNameTwo(int page, String lastname) { + int pageSize = 25; + Pageable pageable = PageRequest.of(page - 1, pageSize); + return owners.findByLastName(lastname, pageable); + } + @GetMapping("/owners/{ownerId}/edit") public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) { Owner owner = this.owners.findById(ownerId); diff --git a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java index b683d2aac..8437be036 100644 --- a/src/main/java/org/springframework/samples/petclinic/owner/PetController.java +++ b/src/main/java/org/springframework/samples/petclinic/owner/PetController.java @@ -97,7 +97,7 @@ class PetController implements InitializingBean { @PostMapping("/pets/new") public String processCreationForm(Owner owner, @Valid Pet pet, BindingResult result, ModelMap model) - throws ExecutionException, InterruptedException { + throws ExecutionException, InterruptedException, RuntimeException { if (StringUtils.hasLength(pet.getName()) && pet.isNew() && owner.getPet(pet.getName(), true) != null) { result.rejectValue("name", "duplicate", "already exists"); } diff --git a/src/test/java/org/springframework/samples/petclinic/integration/OwnerControllerTests.java b/src/test/java/org/springframework/samples/petclinic/integration/OwnerControllerTests.java index 9e60f34ca..d0af89ae7 100644 --- a/src/test/java/org/springframework/samples/petclinic/integration/OwnerControllerTests.java +++ b/src/test/java/org/springframework/samples/petclinic/integration/OwnerControllerTests.java @@ -8,8 +8,6 @@ import io.restassured.http.ContentType; import jakarta.persistence.EntityManagerFactory; import org.hamcrest.Matchers; import org.jetbrains.annotations.NotNull; -import org.junit.jupiter.api.AfterAll; -import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -24,16 +22,14 @@ import org.testcontainers.junit.jupiter.Testcontainers; import java.time.ZoneId; import java.util.concurrent.TimeUnit; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThat; import static io.restassured.RestAssured.given; -import static org.hamcrest.Matchers.hasSize; +import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @Testcontainers @ActiveProfiles(value = "postgres") -public class OwnerControllerTests { +class OwnerControllerTests { @LocalServerPort private Integer port; @@ -56,7 +52,6 @@ public class OwnerControllerTests { OwnerRepository ownerRepository; @Test - @WithSpan(kind = SpanKind.SERVER) void shouldSaveNewOwnerPet() { Owner owner = CreateOwner(); @@ -94,6 +89,25 @@ public class OwnerControllerTests { } + @Test + void shouldProvideOwnerVaccinationDate() { + + Owner owner = CreateOwner(); + + var ownerLinkMatcher = String.format("**.findAll { node -> node.@href=='/owners/%s'}", owner.getId()); + + given().contentType(ContentType.JSON) + .when() + .get("/owners") + .then() + .contentType(ContentType.HTML) + .statusCode(200) + .body(ownerLinkMatcher, Matchers.notNullValue()); + + assertThat(false).isTrue(); + + } + @NotNull private Owner CreateOwner() { var owner = new Owner();