From d3b0fca60fd014ef5b9ba0b15ff04b2f8e89f5c8 Mon Sep 17 00:00:00 2001 From: Angel Baro <angelbaro2001@gmail.com> Date: Thu, 4 Apr 2024 16:33:58 +0200 Subject: [PATCH] Added the Location features for getting an existing and non-existing location --- .../demo/steps/GetLocationStepsDefs.java | 58 +++++++++++++++++++ .../resources/features/GetLocation.feature | 31 ++++++++++ 2 files changed, 89 insertions(+) create mode 100644 src/test/java/cat/udl/eps/softarch/demo/steps/GetLocationStepsDefs.java create mode 100644 src/test/resources/features/GetLocation.feature diff --git a/src/test/java/cat/udl/eps/softarch/demo/steps/GetLocationStepsDefs.java b/src/test/java/cat/udl/eps/softarch/demo/steps/GetLocationStepsDefs.java new file mode 100644 index 0000000..5f098a0 --- /dev/null +++ b/src/test/java/cat/udl/eps/softarch/demo/steps/GetLocationStepsDefs.java @@ -0,0 +1,58 @@ +package cat.udl.eps.softarch.demo.steps; + + +import cat.udl.eps.softarch.demo.domain.Location; +import cat.udl.eps.softarch.demo.repository.LocationRepository; +import io.cucumber.java.en.And; +import io.cucumber.java.en.When; +import org.junit.Assert; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.server.ResponseStatusException; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; + +import java.net.URI; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; + + +public class GetLocationStepsDefs { + + @Autowired + private StepDefs stepDefs; + + @Autowired + private LocationRepository locationRepository; + + public static String newResourceUri; + @When("I retrieve the location with the details:$") + public void iRetrieveTheLocationWithTheDetails(Map<String, String> locationDetails) throws Throwable{ + Location existingLocation = locationRepository.findLocationByAddressAndProvinceAndCityAndPostalCode( + locationDetails.get("address"), + locationDetails.get("province"), + locationDetails.get("city"), + Integer.parseInt(locationDetails.get("postalCode")) + ); + + stepDefs.result = stepDefs.mockMvc.perform( + get("/locations/{id}", (existingLocation != null) ? existingLocation.getId() : "999") + .contentType(MediaType.APPLICATION_JSON) + .content(stepDefs.mapper.writeValueAsString(existingLocation)) + .characterEncoding(StandardCharsets.UTF_8) + .accept(MediaType.APPLICATION_JSON) + .with(AuthenticationStepDefs.authenticate())) + .andDo(print()); + } + +} diff --git a/src/test/resources/features/GetLocation.feature b/src/test/resources/features/GetLocation.feature new file mode 100644 index 0000000..6e2e3d4 --- /dev/null +++ b/src/test/resources/features/GetLocation.feature @@ -0,0 +1,31 @@ +Feature: Get Location + In order to retrieve Location information + As a user with appropriate permissions + I want to be able to get the Location details of a shelter + + Background: + Given There is a registered user with username "username" and password "password" and email "user@email.com" + + + Scenario: Get an existing Location details + Given I can login with username "username" and password "password" + And There is already a Location with the following details: + | address | Major Street 3 | + | province | Lleida | + | city | Seròs | + | postalCode | 25183 | + When I retrieve the location with the details: + | address | Major Street 3 | + | province | Lleida | + | city | Seròs | + | postalCode | 25183 | + Then The response code is 200 + + Scenario: Get a non-existent Location details + Given I can login with username "username" and password "password" + When I retrieve the location with the details: + | address | Major Street 3 | + | province | Lleida | + | city | Seròs | + | postalCode | 25183 | + Then The response code is 404