From aca8260bd53f1eec84eb8312c8ee8e44e9deccc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98jminkkk=E2=80=99?= <102847513+jminkkk@users.noreply.github.com> Date: Tue, 10 Sep 2024 18:04:46 +0900 Subject: [PATCH 01/10] =?UTF-8?q?test(repository):=20Category=20Id?= =?UTF-8?q?=EC=97=90=20=ED=95=B4=EB=8B=B9=ED=95=98=EB=8A=94=20=ED=85=9C?= =?UTF-8?q?=ED=94=8C=EB=A6=BF=20=EC=A1=B0=ED=9A=8C=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/TemplateJpaRepositoryTest.java | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java diff --git a/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java b/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java new file mode 100644 index 000000000..b9fb1e4af --- /dev/null +++ b/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java @@ -0,0 +1,47 @@ +package codezap.template.repository; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import codezap.category.domain.Category; +import codezap.category.repository.CategoryRepository; +import codezap.fixture.CategoryFixture; +import codezap.fixture.MemberFixture; +import codezap.global.repository.JpaRepositoryTest; +import codezap.member.domain.Member; +import codezap.member.repository.MemberRepository; +import codezap.template.domain.Template; + +@JpaRepositoryTest +class TemplateJpaRepositoryTest { + + @Autowired + private TemplateRepository templateRepository; + + @Autowired + private MemberRepository memberRepository; + + @Autowired + private CategoryRepository categoryRepository; + + @Test + @DisplayName("카테고리 식별자로 템플릿 존재 여부 확인") + void existsByCategoryId() { + Member member = memberRepository.save(MemberFixture.getFirstMember()); + Member member2 = memberRepository.save(MemberFixture.getSecondMember()); + + Category category = categoryRepository.save(CategoryFixture.getFirstCategory()); + Category otherCategory = categoryRepository.save(CategoryFixture.getSecondCategory()); + + templateRepository.save(new Template(member, "Template 1", "Description 1", category)); + + assertAll( + () -> assertThat(templateRepository.existsByCategoryId(category.getId())).isTrue(), + () -> assertThat(templateRepository.existsByCategoryId(otherCategory.getId())).isFalse() + ); + } +} From 908157be22b43012b7639bf3fc4cb89e78b077f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98jminkkk=E2=80=99?= <102847513+jminkkk@users.noreply.github.com> Date: Wed, 11 Sep 2024 21:07:24 +0900 Subject: [PATCH 02/10] =?UTF-8?q?test(/repository):=20=ED=85=9C=ED=94=8C?= =?UTF-8?q?=EB=A6=BF=20id=EB=A1=9C=20=ED=85=9C=ED=94=8C=EB=A6=BF=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/TemplateJpaRepositoryTest.java | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java b/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java index b9fb1e4af..aae7441a7 100644 --- a/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java +++ b/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java @@ -1,9 +1,11 @@ package codezap.template.repository; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.junit.jupiter.api.Assertions.assertAll; import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -11,6 +13,8 @@ import codezap.category.repository.CategoryRepository; import codezap.fixture.CategoryFixture; import codezap.fixture.MemberFixture; +import codezap.fixture.TemplateFixture; +import codezap.global.exception.CodeZapException; import codezap.global.repository.JpaRepositoryTest; import codezap.member.domain.Member; import codezap.member.repository.MemberRepository; @@ -29,14 +33,13 @@ class TemplateJpaRepositoryTest { private CategoryRepository categoryRepository; @Test - @DisplayName("카테고리 식별자로 템플릿 존재 여부 확인") + @DisplayName("카테고리 id로 템플릿 존재 여부 확인 성공") void existsByCategoryId() { + // given Member member = memberRepository.save(MemberFixture.getFirstMember()); Member member2 = memberRepository.save(MemberFixture.getSecondMember()); - Category category = categoryRepository.save(CategoryFixture.getFirstCategory()); Category otherCategory = categoryRepository.save(CategoryFixture.getSecondCategory()); - templateRepository.save(new Template(member, "Template 1", "Description 1", category)); assertAll( @@ -44,4 +47,34 @@ void existsByCategoryId() { () -> assertThat(templateRepository.existsByCategoryId(otherCategory.getId())).isFalse() ); } + + @Nested + @DisplayName("템플릿 id로 템플릿 조회") + class fetchById { + + @Test + @DisplayName("템플릿 id로 템플릿 조회 성공") + void fetchById_W() { + Member member = memberRepository.save(MemberFixture.getFirstMember()); + Category category = categoryRepository.save(CategoryFixture.getFirstCategory()); + Template savedTemplate = templateRepository.save(TemplateFixture.get(member, category)); + + assertThat(templateRepository.fetchById(savedTemplate.getId())).isEqualTo(savedTemplate); + } + + @Test + @DisplayName("템플릿 id로 템플릿 조회 실패: 존재하지 않는 id") + void fetchById_WhenNotExistId() { + Member member = memberRepository.save(MemberFixture.getFirstMember()); + Category category = categoryRepository.save(CategoryFixture.getFirstCategory()); + Template notSavedTemplate = TemplateFixture.get(member, category); + + Long notSavedId = 1L; + assertThatThrownBy(() -> templateRepository.fetchById(notSavedId)) + .isInstanceOf(CodeZapException.class) + .hasMessage("식별자 " + notSavedId + "에 해당하는 템플릿이 존재하지 않습니다."); + } + } + + } From 27eaefb36412c8685f0edea25b0817b0517b4bdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98jminkkk=E2=80=99?= <102847513+jminkkk@users.noreply.github.com> Date: Wed, 11 Sep 2024 21:08:50 +0900 Subject: [PATCH 03/10] =?UTF-8?q?refactor(/fixture):=20Test=EB=A5=BC=20?= =?UTF-8?q?=EC=9C=84=ED=95=9C=20Template=20Fixture=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/java/codezap/fixture/TemplateFixture.java | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 backend/src/test/java/codezap/fixture/TemplateFixture.java diff --git a/backend/src/test/java/codezap/fixture/TemplateFixture.java b/backend/src/test/java/codezap/fixture/TemplateFixture.java new file mode 100644 index 000000000..ca16292a3 --- /dev/null +++ b/backend/src/test/java/codezap/fixture/TemplateFixture.java @@ -0,0 +1,11 @@ +package codezap.fixture; + +import codezap.category.domain.Category; +import codezap.member.domain.Member; +import codezap.template.domain.Template; + +public class TemplateFixture { + public static Template get(Member member, Category category) { + return new Template(member, "Template 1", "Description 1", category); + } +} From 26cdd90115f11fd058723302e4e67598af687422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98jminkkk=E2=80=99?= <102847513+jminkkk@users.noreply.github.com> Date: Wed, 11 Sep 2024 21:16:08 +0900 Subject: [PATCH 04/10] =?UTF-8?q?test(TemplateJpaRepository):=20=ED=9A=8C?= =?UTF-8?q?=EC=9B=90=20id=EB=A1=9C=20=ED=85=9C=ED=94=8C=EB=A6=BF=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/TemplateJpaRepositoryTest.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java b/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java index aae7441a7..2955b0375 100644 --- a/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java +++ b/backend/src/test/java/codezap/template/repository/TemplateJpaRepositoryTest.java @@ -54,7 +54,7 @@ class fetchById { @Test @DisplayName("템플릿 id로 템플릿 조회 성공") - void fetchById_W() { + void fetchById() { Member member = memberRepository.save(MemberFixture.getFirstMember()); Category category = categoryRepository.save(CategoryFixture.getFirstCategory()); Template savedTemplate = templateRepository.save(TemplateFixture.get(member, category)); @@ -64,11 +64,7 @@ void fetchById_W() { @Test @DisplayName("템플릿 id로 템플릿 조회 실패: 존재하지 않는 id") - void fetchById_WhenNotExistId() { - Member member = memberRepository.save(MemberFixture.getFirstMember()); - Category category = categoryRepository.save(CategoryFixture.getFirstCategory()); - Template notSavedTemplate = TemplateFixture.get(member, category); - + void fetchById_WhenNotExistsId() { Long notSavedId = 1L; assertThatThrownBy(() -> templateRepository.fetchById(notSavedId)) .isInstanceOf(CodeZapException.class) @@ -76,5 +72,25 @@ void fetchById_WhenNotExistId() { } } + @Nested + @DisplayName("회원 id로 템플릿 조회") + class findByMemberId { + @Test + @DisplayName("회원 id로 템플릿 조회 성공") + void findByMemberId() { + Member member = memberRepository.save(MemberFixture.getFirstMember()); + Category category = categoryRepository.save(CategoryFixture.getFirstCategory()); + Template savedTemplate = templateRepository.save(TemplateFixture.get(member, category)); + + assertThat(templateRepository.findByMemberId(member.getId())).containsExactly(savedTemplate); + } + + @Test + @DisplayName("회원 id로 템플릿 조회 실패: 존재하지 않는 회원") + void findByMemberIdWhenNotExistsMember() { + Long notSavedId = 1L; + assertThat(templateRepository.findByMemberId(notSavedId)).isEmpty(); + } + } } From 7008d2ce900336d543066c25a249930c683cb3a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98jminkkk=E2=80=99?= <102847513+jminkkk@users.noreply.github.com> Date: Wed, 11 Sep 2024 21:59:53 +0900 Subject: [PATCH 05/10] =?UTF-8?q?refactor(/repository):=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20=EA=B8=B0=EB=8A=A5=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TemplateRepositoryFindAllTest.java | 283 ++++++++++-------- 1 file changed, 158 insertions(+), 125 deletions(-) diff --git a/backend/src/test/java/codezap/template/repository/TemplateRepositoryFindAllTest.java b/backend/src/test/java/codezap/template/repository/TemplateRepositoryFindAllTest.java index 2cb136779..364c6fb35 100644 --- a/backend/src/test/java/codezap/template/repository/TemplateRepositoryFindAllTest.java +++ b/backend/src/test/java/codezap/template/repository/TemplateRepositoryFindAllTest.java @@ -1,12 +1,14 @@ package codezap.template.repository; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertAll; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -15,6 +17,8 @@ import codezap.category.domain.Category; import codezap.category.repository.CategoryRepository; +import codezap.fixture.MemberFixture; +import codezap.fixture.TemplateFixture; import codezap.global.repository.JpaRepositoryTest; import codezap.member.domain.Member; import codezap.member.repository.MemberRepository; @@ -41,11 +45,12 @@ class TemplateRepositoryFindAllTest { private Member member1, member2; private Category category1, category2; private Tag tag1, tag2; + private Template template1, template2, template3; @BeforeEach void setUp() { - member1 = memberRepository.save(new Member("user1@test.com", "pp", "salt1")); - member2 = memberRepository.save(new Member("user2@test.com", "pp", "salt2")); + member1 = memberRepository.save(MemberFixture.getFirstMember()); + member2 = memberRepository.save(MemberFixture.getSecondMember()); category1 = categoryRepository.save(new Category("Category 1", member1)); category2 = categoryRepository.save(new Category("Category 2", member1)); @@ -53,140 +58,168 @@ void setUp() { tag1 = tagRepository.save(new Tag("Tag 1")); tag2 = tagRepository.save(new Tag("Tag 2")); - Template template1 = new Template(member1, "Template 1", "Description 1", category1); - TemplateTag templateTag11 = new TemplateTag(template1, tag1); - TemplateTag templateTag12 = new TemplateTag(template1, tag2); - templateRepository.save(template1); - templateTagRepository.save(templateTag11); - templateTagRepository.save(templateTag12); - - Template template2 = new Template(member1, "Template 2", "Description 2", category2); - TemplateTag templateTag21 = new TemplateTag(template2, tag1); - TemplateTag templateTag22 = new TemplateTag(template2, tag2); - templateRepository.save(template2); - templateTagRepository.save(templateTag21); - templateTagRepository.save(templateTag22); - - Template template3 = new Template(member2, "Another Template", "Another Description", category1); - TemplateTag templateTag31 = new TemplateTag(template3, tag2); - templateRepository.save(template3); - templateTagRepository.save(templateTag31); - } - - @Test - @DisplayName("회원 ID로 템플릿 조회") - void testFindByMemberId() { - Specification