diff --git a/src/main/java/in/koreatech/koin/domain/land/domain/Land.java b/src/main/java/in/koreatech/koin/domain/land/domain/Land.java index fba04c9aa..dd8ca34ee 100644 --- a/src/main/java/in/koreatech/koin/domain/land/domain/Land.java +++ b/src/main/java/in/koreatech/koin/domain/land/domain/Land.java @@ -9,11 +9,15 @@ import jakarta.persistence.Table; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Size; +import lombok.AccessLevel; +import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; @Getter @Entity @Table(name = "lands") +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class Land { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -148,4 +152,25 @@ public class Land { @NotNull @Column(name = "is_deleted", nullable = false) private Boolean isDeleted = false; + + @Builder + private Land(String internalName, String name, String size, String roomType, String latitude, String longitude, + String phone, String imageUrls, String address, String description, Long floor, String deposit, + String monthlyFee, String charterFee, String managementFee) { + this.internalName = internalName; + this.name = name; + this.size = size; + this.roomType = roomType; + this.latitude = latitude; + this.longitude = longitude; + this.phone = phone; + this.imageUrls = imageUrls; + this.address = address; + this.description = description; + this.floor = floor; + this.deposit = deposit; + this.monthlyFee = monthlyFee; + this.charterFee = charterFee; + this.managementFee = managementFee; + } } diff --git a/src/main/java/in/koreatech/koin/domain/land/repository/LandRepository.java b/src/main/java/in/koreatech/koin/domain/land/repository/LandRepository.java index 1eb171677..0b05164a1 100644 --- a/src/main/java/in/koreatech/koin/domain/land/repository/LandRepository.java +++ b/src/main/java/in/koreatech/koin/domain/land/repository/LandRepository.java @@ -9,4 +9,6 @@ public interface LandRepository extends Repository { List findAll(); + + Land save(Land request); } diff --git a/src/test/java/in/koreatech/koin/acceptance/LandApiTest.java b/src/test/java/in/koreatech/koin/acceptance/LandApiTest.java index f502b5530..8a709b08f 100644 --- a/src/test/java/in/koreatech/koin/acceptance/LandApiTest.java +++ b/src/test/java/in/koreatech/koin/acceptance/LandApiTest.java @@ -1,2 +1,67 @@ -package in.koreatech.koin.acceptance;public class LandApiTest { +package in.koreatech.koin.acceptance; + +import org.assertj.core.api.SoftAssertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; + +import in.koreatech.koin.AcceptanceTest; +import in.koreatech.koin.domain.land.domain.Land; +import in.koreatech.koin.domain.land.repository.LandRepository; +import io.restassured.RestAssured; +import io.restassured.response.ExtractableResponse; +import io.restassured.response.Response; + +class LandApiTest extends AcceptanceTest { + + @Autowired + private LandRepository landRepository; + + @Test + @DisplayName("복덕방 리스트를 조회한다.") + void getLands() { + Land request = Land.builder() + .internalName("복덕방") + .name("복덕방") + .roomType("원룸") + .latitude("37.555") + .longitude("126.555") + .monthlyFee("100") + .charterFee("1000") + .build(); + + Land land = landRepository.save(request); + + ExtractableResponse response = RestAssured + .given() + .log().all() + .when() + .log().all() + .get("/lands") + .then() + .log().all() + .statusCode(HttpStatus.OK.value()) + .extract(); + + SoftAssertions.assertSoftly( + softly -> { + softly.assertThat(response.body().jsonPath().getList(".").size()).isEqualTo(1); + softly.assertThat(response.body().jsonPath().getLong("[0].id")).isEqualTo(land.getId()); + softly.assertThat(response.body().jsonPath().getString("[0].internal_name")) + .isEqualTo(land.getInternalName()); + softly.assertThat(response.body().jsonPath().getString("[0].name")).isEqualTo(land.getName()); + softly.assertThat(response.body().jsonPath().getString("[0].room_type")) + .isEqualTo(land.getRoomType()); + softly.assertThat(response.body().jsonPath().getString("[0].latitude")) + .isEqualTo(land.getLatitude()); + softly.assertThat(response.body().jsonPath().getString("[0].longitude")) + .isEqualTo(land.getLongitude()); + softly.assertThat(response.body().jsonPath().getString("[0].monthly_fee")) + .isEqualTo(land.getMonthlyFee()); + softly.assertThat(response.body().jsonPath().getString("[0].charter_fee")) + .isEqualTo(land.getCharterFee()); + } + ); + } }