From c5664e8aef9edf20f9936de12eaf65487bf2df92 Mon Sep 17 00:00:00 2001 From: pricelees Date: Mon, 4 Aug 2025 21:05:02 +0900 Subject: [PATCH] =?UTF-8?q?test:=20\@DataJpaTest=20=EA=B8=B0=EB=B0=98=20Me?= =?UTF-8?q?mberRepositoryTest=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/MemberRepositoryTest.kt | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/test/kotlin/roomescape/member/infrastructure/persistence/MemberRepositoryTest.kt diff --git a/src/test/kotlin/roomescape/member/infrastructure/persistence/MemberRepositoryTest.kt b/src/test/kotlin/roomescape/member/infrastructure/persistence/MemberRepositoryTest.kt new file mode 100644 index 00000000..d5af4d07 --- /dev/null +++ b/src/test/kotlin/roomescape/member/infrastructure/persistence/MemberRepositoryTest.kt @@ -0,0 +1,63 @@ +package roomescape.member.infrastructure.persistence + +import io.kotest.core.spec.style.FunSpec +import io.kotest.matchers.nulls.shouldNotBeNull +import io.kotest.matchers.shouldBe +import jakarta.persistence.EntityManager +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest +import roomescape.util.MemberFixture + +@DataJpaTest(showSql = true) +class MemberRepositoryTest( + val entityManager: EntityManager, + val memberRepository: MemberRepository +) : FunSpec({ + context("existsByEmail") { + val account = "email" + val email = "$account@email.com" + + beforeTest { + entityManager.persist(MemberFixture.create(account = account)) + entityManager.flush() + entityManager.clear() + } + + test("동일한 이메일이 있으면 true 반환") { + val result = memberRepository.existsByEmail(email) + result shouldBe true + } + + test("동일한 이메일이 없으면 false 반환") { + memberRepository.existsByEmail(email.substring(email.length - 1)) shouldBe false + } + } + + context("findByEmailAndPassword") { + val account = "email" + val email = "$account@email.com" + val password = "password123" + + beforeTest { + entityManager.persist(MemberFixture.create(account = account, password = password)) + entityManager.flush() + entityManager.clear() + } + + test("둘다 일치하면 정상 반환") { + memberRepository.findByEmailAndPassword(email, password) shouldNotBeNull { + this.email shouldBe email + this.password shouldBe password + } + } + + test("이메일이 틀리면 null 반환") { + val invalidMail = email.substring(email.length - 1) + memberRepository.findByEmailAndPassword(invalidMail, password) shouldBe null + } + + test("비밀번호가 틀리면 null 반환") { + val invalidPassword = password.substring(password.length - 1) + memberRepository.findByEmailAndPassword(email, invalidPassword) shouldBe null + } + } +})