From 07b5380a2782b80b1bbb922f6b5d200e939e60b7 Mon Sep 17 00:00:00 2001 From: HoeSeong123 Date: Wed, 18 Sep 2024 10:20:56 +0900 Subject: [PATCH 1/7] =?UTF-8?q?test:=20=EC=8D=B8=EB=84=A4=EC=9D=BC=20?= =?UTF-8?q?=EC=84=9C=EB=B9=84=EC=8A=A4=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ThumbnailServiceTest.java | 141 ++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100644 backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java diff --git a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java new file mode 100644 index 000000000..282d48ce4 --- /dev/null +++ b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java @@ -0,0 +1,141 @@ +package codezap.template.service; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import java.util.List; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import codezap.category.repository.CategoryRepository; +import codezap.fixture.CategoryFixture; +import codezap.fixture.MemberFixture; +import codezap.fixture.TemplateFixture; +import codezap.global.DatabaseIsolation; +import codezap.global.exception.CodeZapException; +import codezap.member.repository.MemberRepository; +import codezap.template.domain.SourceCode; +import codezap.template.domain.Thumbnail; +import codezap.template.repository.SourceCodeRepository; +import codezap.template.repository.TemplateRepository; +import codezap.template.repository.ThumbnailRepository; + +@SpringBootTest +@DatabaseIsolation +class ThumbnailServiceTest { + + @Autowired + private MemberRepository memberRepository; + + @Autowired + private CategoryRepository categoryRepository; + + @Autowired + private TemplateRepository templateRepository; + + @Autowired + private SourceCodeRepository sourceCodeRepository; + + @Autowired + private ThumbnailRepository thumbnailRepository; + + @Autowired + private ThumbnailService sut; + + @Nested + @DisplayName("썸네일 생성") + class CreateThumbnail { + + @Test + @DisplayName("썸네일 생성 성공") + void createThumbnailSuccess() { + var member = memberRepository.save(MemberFixture.getFirstMember()); + var category = categoryRepository.save(CategoryFixture.getFirstCategory()); + var template = templateRepository.save(TemplateFixture.get(member, category)); + var sourceCode = sourceCodeRepository.save(new SourceCode(template, "Filename 1", "Content 1", 1)); + + sut.createThumbnail(template, sourceCode); + var actual = thumbnailRepository.findAll(); + + assertThat(actual).hasSize(1); + } + } + + @Nested + @DisplayName("썸네일 조회") + class GetByTemplate { + + @Test + @DisplayName("썸네일 조회 성공") + void getByTemplateSuccess() { + var member = memberRepository.save(MemberFixture.getFirstMember()); + var category = categoryRepository.save(CategoryFixture.getFirstCategory()); + var template = templateRepository.save(TemplateFixture.get(member, category)); + var sourceCode = sourceCodeRepository.save(new SourceCode(template, "Filename 1", "Content 1", 1)); + thumbnailRepository.save(new Thumbnail(template, sourceCode)); + + var actual = sut.getByTemplate(template); + + assertThat(actual.getTemplate()).isEqualTo(template); + } + + @Test + @DisplayName("썸네일 조회 실패: 해당하는 썸네일이 없는 경우") + void getByTemplateFailWithWrongID() { + var member = memberRepository.save(MemberFixture.getFirstMember()); + var category = categoryRepository.save(CategoryFixture.getFirstCategory()); + var template = templateRepository.save(TemplateFixture.get(member, category)); + var nonExistentID = 100L; + + assertThatThrownBy(() -> sut.getByTemplate(template)) + .isInstanceOf(CodeZapException.class) + .hasMessage("식별자가 " + nonExistentID + "인 템플릿에 해당하는 썸네일이 없습니다."); + } + } + + @Nested + @DisplayName("썸네일 삭제") + class DeleteByTemplateIDs { + + @Test + @DisplayName("썸네일 삭제 성공") + void deleteByTemplateSuccess() { + var member = memberRepository.save(MemberFixture.getFirstMember()); + var category = categoryRepository.save(CategoryFixture.getFirstCategory()); + var template1 = templateRepository.save(TemplateFixture.get(member, category)); + var sourceCode1 = sourceCodeRepository.save(new SourceCode(template1, "Filename 1", "Content 1", 1)); + thumbnailRepository.save(new Thumbnail(template1, sourceCode1)); + var template2 = templateRepository.save(TemplateFixture.get(member, category)); + var sourceCode2 = sourceCodeRepository.save(new SourceCode(template2, "Filename 2", "Content 2", 1)); + thumbnailRepository.save(new Thumbnail(template2, sourceCode2)); + + sut.deleteByTemplateIds(List.of(template1.getId())); + var actual = thumbnailRepository.findAll(); + + assertThat(actual).hasSize(1); + assertThat(actual.get(0).getTemplate()).isEqualTo(template2); + } + + @Test + @DisplayName("썸네일 삭제 성공: 존재하지 않는 경우") + void deleteByTemplateFailWithWrongID() { + var member = memberRepository.save(MemberFixture.getFirstMember()); + var category = categoryRepository.save(CategoryFixture.getFirstCategory()); + var template = templateRepository.save(TemplateFixture.get(member, category)); + var sourceCode = sourceCodeRepository.save(new SourceCode(template, "Filename 1", "Content 1", 1)); + thumbnailRepository.save(new Thumbnail(template, sourceCode)); + var nonExistentID = 100L; + + sut.deleteByTemplateIds(List.of(nonExistentID)); + var actual = thumbnailRepository.findAll(); + + assertThat(actual).hasSize(1); + assertThat(actual.get(0).getTemplate()).isEqualTo(template); + } + } +} From d5862a624e9a90cb71a01d831a51b0460283d1a8 Mon Sep 17 00:00:00 2001 From: HoeSeong123 Date: Wed, 18 Sep 2024 10:57:34 +0900 Subject: [PATCH 2/7] =?UTF-8?q?fix:=20=EC=8B=A4=ED=8C=A8=ED=95=98=EB=8A=94?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/codezap/template/service/ThumbnailServiceTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java index 282d48ce4..a03b8eaf1 100644 --- a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java +++ b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java @@ -90,11 +90,10 @@ void getByTemplateFailWithWrongID() { var member = memberRepository.save(MemberFixture.getFirstMember()); var category = categoryRepository.save(CategoryFixture.getFirstCategory()); var template = templateRepository.save(TemplateFixture.get(member, category)); - var nonExistentID = 100L; assertThatThrownBy(() -> sut.getByTemplate(template)) .isInstanceOf(CodeZapException.class) - .hasMessage("식별자가 " + nonExistentID + "인 템플릿에 해당하는 썸네일이 없습니다."); + .hasMessage("식별자가 " + template.getId() + "인 템플릿에 해당하는 썸네일이 없습니다."); } } From dff630ffdc541d7b77cabb732d1146e54fdc05dc Mon Sep 17 00:00:00 2001 From: HoeSeong123 Date: Fri, 20 Sep 2024 13:56:37 +0900 Subject: [PATCH 3/7] =?UTF-8?q?refactor:=20=EB=B3=B5=EC=88=98=EC=9D=98=20a?= =?UTF-8?q?ssert=EB=AC=B8=EC=9D=84=20assertAll=EB=A1=9C=20=EB=AC=B6?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../template/service/ThumbnailServiceTest.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java index a03b8eaf1..5cdc1e9da 100644 --- a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java +++ b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java @@ -2,6 +2,7 @@ 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 java.util.List; @@ -116,8 +117,10 @@ void deleteByTemplateSuccess() { sut.deleteByTemplateIds(List.of(template1.getId())); var actual = thumbnailRepository.findAll(); - assertThat(actual).hasSize(1); - assertThat(actual.get(0).getTemplate()).isEqualTo(template2); + assertAll( + () -> assertThat(actual).hasSize(1), + () -> assertThat(actual.get(0).getTemplate()).isEqualTo(template2) + ); } @Test @@ -133,8 +136,10 @@ void deleteByTemplateFailWithWrongID() { sut.deleteByTemplateIds(List.of(nonExistentID)); var actual = thumbnailRepository.findAll(); - assertThat(actual).hasSize(1); - assertThat(actual.get(0).getTemplate()).isEqualTo(template); + assertAll( + () -> assertThat(actual).hasSize(1), + () -> assertThat(actual.get(0).getTemplate()).isEqualTo(template) + ); } } } From 6ece083cbf1faf009fe048b652112b32ba10adeb Mon Sep 17 00:00:00 2001 From: HoeSeong123 Date: Fri, 20 Sep 2024 14:01:26 +0900 Subject: [PATCH 4/7] =?UTF-8?q?refactor:=20=EC=B2=B4=EC=9D=B4=EB=8B=9D?= =?UTF-8?q?=EC=9D=84=20=EC=82=AC=EC=9A=A9=ED=95=9C=20=EA=B2=80=EC=A6=9D?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/ThumbnailServiceTest.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java index 5cdc1e9da..16db496ba 100644 --- a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java +++ b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java @@ -109,18 +109,17 @@ void deleteByTemplateSuccess() { var category = categoryRepository.save(CategoryFixture.getFirstCategory()); var template1 = templateRepository.save(TemplateFixture.get(member, category)); var sourceCode1 = sourceCodeRepository.save(new SourceCode(template1, "Filename 1", "Content 1", 1)); - thumbnailRepository.save(new Thumbnail(template1, sourceCode1)); + var savedThumbnail1 = thumbnailRepository.save(new Thumbnail(template1, sourceCode1)); var template2 = templateRepository.save(TemplateFixture.get(member, category)); var sourceCode2 = sourceCodeRepository.save(new SourceCode(template2, "Filename 2", "Content 2", 1)); - thumbnailRepository.save(new Thumbnail(template2, sourceCode2)); + var savedThumbnail2 = thumbnailRepository.save(new Thumbnail(template2, sourceCode2)); sut.deleteByTemplateIds(List.of(template1.getId())); var actual = thumbnailRepository.findAll(); - assertAll( - () -> assertThat(actual).hasSize(1), - () -> assertThat(actual.get(0).getTemplate()).isEqualTo(template2) - ); + assertThat(actual).hasSize(1) + .containsExactly(savedThumbnail2) + .doesNotContain(savedThumbnail1); } @Test @@ -130,16 +129,14 @@ void deleteByTemplateFailWithWrongID() { var category = categoryRepository.save(CategoryFixture.getFirstCategory()); var template = templateRepository.save(TemplateFixture.get(member, category)); var sourceCode = sourceCodeRepository.save(new SourceCode(template, "Filename 1", "Content 1", 1)); - thumbnailRepository.save(new Thumbnail(template, sourceCode)); + var savedThumbnail = thumbnailRepository.save(new Thumbnail(template, sourceCode)); var nonExistentID = 100L; sut.deleteByTemplateIds(List.of(nonExistentID)); var actual = thumbnailRepository.findAll(); - assertAll( - () -> assertThat(actual).hasSize(1), - () -> assertThat(actual.get(0).getTemplate()).isEqualTo(template) - ); + assertThat(actual).hasSize(1) + .containsExactly(savedThumbnail); } } } From 69ede5c04275c994a6c2c29587c56a9db54e7ea2 Mon Sep 17 00:00:00 2001 From: HoeSeong123 Date: Fri, 20 Sep 2024 14:03:56 +0900 Subject: [PATCH 5/7] =?UTF-8?q?test:=202=EA=B0=9C=EC=9D=98=20=EC=8D=B8?= =?UTF-8?q?=EB=84=A4=EC=9D=BC=EC=9D=84=20=EC=82=AD=EC=A0=9C=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=ED=85=8C=EC=8A=A4=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 --- .../service/ThumbnailServiceTest.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java index 16db496ba..820249f28 100644 --- a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java +++ b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java @@ -103,8 +103,8 @@ void getByTemplateFailWithWrongID() { class DeleteByTemplateIDs { @Test - @DisplayName("썸네일 삭제 성공") - void deleteByTemplateSuccess() { + @DisplayName("썸네일 삭제 성공: 1개의 썸네일 삭제") + void deleteByTemplateSuccessWithOneThumbnail() { var member = memberRepository.save(MemberFixture.getFirstMember()); var category = categoryRepository.save(CategoryFixture.getFirstCategory()); var template1 = templateRepository.save(TemplateFixture.get(member, category)); @@ -122,6 +122,24 @@ void deleteByTemplateSuccess() { .doesNotContain(savedThumbnail1); } + @Test + @DisplayName("썸네일 삭제 성공: 2개의 썸네일 삭제") + void deleteByTemplateSuccessWithTwoThumbnail() { + var member = memberRepository.save(MemberFixture.getFirstMember()); + var category = categoryRepository.save(CategoryFixture.getFirstCategory()); + var template1 = templateRepository.save(TemplateFixture.get(member, category)); + var sourceCode1 = sourceCodeRepository.save(new SourceCode(template1, "Filename 1", "Content 1", 1)); + var savedThumbnail1 = thumbnailRepository.save(new Thumbnail(template1, sourceCode1)); + var template2 = templateRepository.save(TemplateFixture.get(member, category)); + var sourceCode2 = sourceCodeRepository.save(new SourceCode(template2, "Filename 2", "Content 2", 1)); + var savedThumbnail2 = thumbnailRepository.save(new Thumbnail(template2, sourceCode2)); + + sut.deleteByTemplateIds(List.of(template1.getId(), template2.getId())); + var actual = thumbnailRepository.findAll(); + + assertThat(actual).isEmpty(); + } + @Test @DisplayName("썸네일 삭제 성공: 존재하지 않는 경우") void deleteByTemplateFailWithWrongID() { From 5bc8d1780cdef6c26b27119a249ba0e35d4c047a Mon Sep 17 00:00:00 2001 From: HoeSeong123 Date: Fri, 20 Sep 2024 14:06:09 +0900 Subject: [PATCH 6/7] =?UTF-8?q?refactor:=20id=EC=99=80=20sourcecode?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=9C=20=EA=B2=80=EC=A6=9D=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/codezap/template/service/ThumbnailServiceTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java index 820249f28..c8d99964a 100644 --- a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java +++ b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java @@ -82,7 +82,11 @@ void getByTemplateSuccess() { var actual = sut.getByTemplate(template); - assertThat(actual.getTemplate()).isEqualTo(template); + assertAll( + () -> assertThat(actual.getId()).isEqualTo(sourceCode.getId()), + () -> assertThat(actual.getTemplate()).isEqualTo(template), + () -> assertThat(actual.getSourceCode()).isEqualTo(sourceCode) + ); } @Test From ae8501ca76b94f8aa70178b49774bd29914576cf Mon Sep 17 00:00:00 2001 From: HoeSeong123 Date: Fri, 20 Sep 2024 14:07:45 +0900 Subject: [PATCH 7/7] =?UTF-8?q?refactor:=20id=EC=99=80=20sourcecode?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=9C=20=EA=B2=80=EC=A6=9D=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../codezap/template/service/ThumbnailServiceTest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java index c8d99964a..8b1ed60e2 100644 --- a/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java +++ b/backend/src/test/java/codezap/template/service/ThumbnailServiceTest.java @@ -61,9 +61,13 @@ void createThumbnailSuccess() { var sourceCode = sourceCodeRepository.save(new SourceCode(template, "Filename 1", "Content 1", 1)); sut.createThumbnail(template, sourceCode); - var actual = thumbnailRepository.findAll(); + var actual = thumbnailRepository.fetchByTemplate(template); - assertThat(actual).hasSize(1); + assertAll( + () -> assertThat(actual.getId()).isEqualTo(1L), + () -> assertThat(actual.getTemplate()).isEqualTo(template), + () -> assertThat(actual.getSourceCode()).isEqualTo(sourceCode) + ); } }