diff --git a/module-infrastructure/persistence-db/src/test/kotlin/site/yourevents/invitationinformation/repository/InvitationInformationRepositoryTest.kt b/module-infrastructure/persistence-db/src/test/kotlin/site/yourevents/invitationinformation/repository/InvitationInformationRepositoryTest.kt index d656b8f..3f4112b 100644 --- a/module-infrastructure/persistence-db/src/test/kotlin/site/yourevents/invitationinformation/repository/InvitationInformationRepositoryTest.kt +++ b/module-infrastructure/persistence-db/src/test/kotlin/site/yourevents/invitationinformation/repository/InvitationInformationRepositoryTest.kt @@ -1,6 +1,7 @@ package site.yourevents.invitationinformation.repository import io.kotest.core.spec.style.DescribeSpec +import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.shouldBe import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.jdbc.EmbeddedDatabaseConnection @@ -21,7 +22,7 @@ import java.time.LocalDateTime class InvitationInformationRepositoryTest( @Autowired private val invitationInformationJPARepository: InvitationInformationJPARepository, @Autowired private val invitationJPARepository: InvitationJPARepository, - @Autowired private val memberJPARepository: MemberJPARepository + @Autowired private val memberJPARepository: MemberJPARepository, ) : DescribeSpec({ val invitationInformationRepository = InvitationInformationRepository(invitationInformationJPARepository) @@ -51,7 +52,7 @@ class InvitationInformationRepositoryTest( invitationInformationVO = InvitationInformationVO( invitation = invitationEntity.toDomain(), title = "title", - schedule = LocalDateTime.now(), + schedule = LocalDateTime.of(2025, 3, 14, 12, 0, 0), location = "location", remark = "remark" ) @@ -64,20 +65,50 @@ class InvitationInformationRepositoryTest( } describe("InvitationInformationRepository") { - it("save() 메서드를 통해 InvitationInformation을 저장하고 반환해야 한다") { - val savedInfo = invitationInformationRepository.save(invitationInformationVO) + context("findByInvitation() 메서드에서") { + it("저장된 InvitationInformation을 조회해야 한다") { + val savedInfo = invitationInformationRepository.save(invitationInformationVO) + val foundInfo = invitationInformationRepository.findByInvitation(savedInfo.invitation) - savedInfo.title shouldBe invitationInformationVO.title - savedInfo.schedule shouldBe invitationInformationVO.schedule - savedInfo.location shouldBe invitationInformationVO.location - savedInfo.remark shouldBe invitationInformationVO.remark - savedInfo.invitation.id shouldBe invitationEntity.id - savedInfo.invitation.qrUrl shouldBe invitationEntity.qrUrl - savedInfo.invitation.templateKey shouldBe invitationEntity.templateKey - savedInfo.invitation.deleted shouldBe invitationEntity.deleted - savedInfo.invitation.member.socialId shouldBe memberEntity.toDomain().socialId - savedInfo.invitation.member.nickname shouldBe memberEntity.toDomain().nickname - savedInfo.invitation.member.email shouldBe memberEntity.toDomain().email + foundInfo.shouldNotBeNull() + + foundInfo.title shouldBe invitationInformationVO.title + foundInfo.schedule shouldBe invitationInformationVO.schedule + foundInfo.location shouldBe invitationInformationVO.location + foundInfo.remark shouldBe invitationInformationVO.remark + foundInfo.invitation.id shouldBe invitationEntity.id + } + + it("InvitationInformation이 없는 경우 null을 반환해야 한다") { + val newInvitationEntity = InvitationEntity( + member = memberEntity, + qrUrl = "http://example.org", + templateKey = "newTemplate", + deleted = false + ) + invitationJPARepository.save(newInvitationEntity) + + val foundInfo = invitationInformationRepository.findByInvitation(newInvitationEntity.toDomain()) + foundInfo shouldBe null + } + } + + context("save() 메서드에서") { + it("InvitationInformation을 저장하고 반환해야 한다") { + val savedInfo = invitationInformationRepository.save(invitationInformationVO) + + savedInfo.title shouldBe invitationInformationVO.title + savedInfo.schedule shouldBe invitationInformationVO.schedule + savedInfo.location shouldBe invitationInformationVO.location + savedInfo.remark shouldBe invitationInformationVO.remark + savedInfo.invitation.id shouldBe invitationEntity.id + savedInfo.invitation.qrUrl shouldBe invitationEntity.qrUrl + savedInfo.invitation.templateKey shouldBe invitationEntity.templateKey + savedInfo.invitation.deleted shouldBe invitationEntity.deleted + savedInfo.invitation.member.socialId shouldBe memberEntity.toDomain().socialId + savedInfo.invitation.member.nickname shouldBe memberEntity.toDomain().nickname + savedInfo.invitation.member.email shouldBe memberEntity.toDomain().email + } } } }) diff --git a/module-infrastructure/persistence-db/src/test/kotlin/site/yourevents/invitationthumbnail/repository/InvitationThumbnailRepositoryTest.kt b/module-infrastructure/persistence-db/src/test/kotlin/site/yourevents/invitationthumbnail/repository/InvitationThumbnailRepositoryTest.kt index 1000f9b..03472d7 100644 --- a/module-infrastructure/persistence-db/src/test/kotlin/site/yourevents/invitationthumbnail/repository/InvitationThumbnailRepositoryTest.kt +++ b/module-infrastructure/persistence-db/src/test/kotlin/site/yourevents/invitationthumbnail/repository/InvitationThumbnailRepositoryTest.kt @@ -1,6 +1,7 @@ package site.yourevents.invitationthumbnail.repository import io.kotest.core.spec.style.DescribeSpec +import io.kotest.matchers.nulls.shouldNotBeNull import io.kotest.matchers.shouldBe import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.jdbc.EmbeddedDatabaseConnection @@ -22,7 +23,7 @@ import site.yourevents.member.repository.MemberJPARepository class InvitationThumbnailRepositoryTest( @Autowired private val invitationThumbnailJPARepository: InvitationThumbnailJPARepository, @Autowired private val invitationJPARepository: InvitationJPARepository, - @Autowired private val memberJPARepository: MemberJPARepository + @Autowired private val memberJPARepository: MemberJPARepository, ) : DescribeSpec({ val invitationThumbnailRepository = InvitationThumbnailRepository(invitationThumbnailJPARepository) @@ -62,15 +63,41 @@ class InvitationThumbnailRepositoryTest( } describe("InvitationThumbnailRepository") { - it("save() 메서드를 통해 InvitationThumbnail을 저장하고 반환해야 한다") { - val savedThumbnail = invitationThumbnailRepository.save(invitationThumbnailVO) + context("findByInvitation() 메서드에서") { + it("저장된 InvitationThumbnail을 조회해야 한다") { + val savedThumbnail = invitationThumbnailRepository.save(invitationThumbnailVO) + val foundThumbnail = invitationThumbnailRepository.findByInvitation(savedThumbnail.invitation) + foundThumbnail.shouldNotBeNull() - savedThumbnail.url shouldBe invitationThumbnailVO.url - savedThumbnail.invitation.id shouldBe invitationThumbnailVO.invitation.id - savedThumbnail.invitation.member.socialId shouldBe memberEntity.toDomain().socialId - savedThumbnail.invitation.member.email shouldBe memberEntity.toDomain().email - savedThumbnail.invitation.member.nickname shouldBe memberEntity.toDomain().nickname + foundThumbnail.url shouldBe invitationThumbnailVO.url + foundThumbnail.invitation.id shouldBe invitationThumbnailVO.invitation.id + } + it("InvitationThumbnail이 없는 경우 null을 반환해야 한다") { + val newInvitationEntity = InvitationEntity( + member = memberEntity, + qrUrl = "http://example.org", + templateKey = "newTemplate", + deleted = false + ) + invitationJPARepository.save(newInvitationEntity) + + val foundThumbnail = invitationThumbnailRepository.findByInvitation(newInvitationEntity.toDomain()) + foundThumbnail shouldBe null + } + } + + context("save() 메서드에서") { + it("InvitationThumbnail을 저장하고 반환해야 한다") { + val savedThumbnail = invitationThumbnailRepository.save(invitationThumbnailVO) + + savedThumbnail.url shouldBe invitationThumbnailVO.url + savedThumbnail.invitation.id shouldBe invitationThumbnailVO.invitation.id + savedThumbnail.invitation.member.socialId shouldBe memberEntity.toDomain().socialId + savedThumbnail.invitation.member.email shouldBe memberEntity.toDomain().email + savedThumbnail.invitation.member.nickname shouldBe memberEntity.toDomain().nickname + + } } } })