Skip to content

Commit

Permalink
@disabled 된 테스트 검토 및 사용하지 않는 메서드 제거 (#991)
Browse files Browse the repository at this point in the history
  • Loading branch information
kyum-q authored Dec 27, 2024
1 parent 137efc6 commit e70bbf0
Show file tree
Hide file tree
Showing 18 changed files with 102 additions and 290 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,6 @@ public List<Category> findAllByMemberIdOrderById(Long memberId) {
return categoryJpaRepository.findAllByMemberIdOrderById(memberId);
}

public List<Category> findAll() {
return categoryJpaRepository.findAll();
}

public boolean existsByNameAndMember(String categoryName, Member member) {
return categoryJpaRepository.existsByNameAndMember(categoryName, member);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,6 @@ public FindAllCategoriesResponse findAllByMemberId(Long memberId) {
return FindAllCategoriesResponse.from(categoryRepository.findAllByMemberIdOrderById(memberId));
}

public FindAllCategoriesResponse findAll() {
return FindAllCategoriesResponse.from(categoryRepository.findAll());
}

public Category fetchById(Long id) {
return categoryRepository.fetchById(id);
}
Expand Down
6 changes: 0 additions & 6 deletions backend/src/main/java/codezap/tag/service/TagService.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,6 @@ public List<Tag> findAllByTemplate(Template template) {
return templateTagRepository.findAllTagsByTemplate(template);
}

public List<Tag> findAllByTemplateId(Long templateId) {
return templateTagRepository.findAllByTemplateId(templateId).stream()
.map(TemplateTag::getTag)
.toList();
}

public List<TemplateTag> getAllTemplateTagsByTemplates(List<Template> templates) {
List<Long> templateIds = templates.stream().map(Template::getId).toList();
return templateTagRepository.findAllByTemplateIdsIn(templateIds);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import codezap.global.validation.ValidationGroups.NotNullGroup;
import codezap.global.validation.ValidationGroups.SizeCheckGroup;
import codezap.template.domain.Visibility;
import codezap.template.dto.request.validation.ValidatedSourceCodesCountRequest;
import codezap.template.dto.request.validation.ValidatedSourceCodesOrdinalRequest;
import io.swagger.v3.oas.annotations.media.Schema;

Expand Down Expand Up @@ -47,12 +48,18 @@ public record CreateTemplateRequest(
@Schema(description = "템플릿 공개 여부", example = "PUBLIC")
@NotNull(message = "템플릿 공개 여부가 null 입니다.", groups = NotNullGroup.class)
Visibility visibility
) implements ValidatedSourceCodesOrdinalRequest {
) implements ValidatedSourceCodesOrdinalRequest, ValidatedSourceCodesCountRequest {

@Override
public List<Integer> extractSourceCodesOrdinal() {
return sourceCodes.stream()
.map(CreateSourceCodeRequest::ordinal)
.sorted()
.toList();
}

@Override
public Integer countSourceCodes() {
return sourceCodes.size();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,14 @@ public record UpdateTemplateRequest(
@NotNull(message = "템플릿 공개 여부가 null 입니다.", groups = NotNullGroup.class)
Visibility visibility
) implements ValidatedSourceCodesOrdinalRequest, ValidatedSourceCodesCountRequest {

@Override
public List<Integer> extractSourceCodesOrdinal() {
return Stream.concat(
updateSourceCodes.stream().map(UpdateSourceCodeRequest::ordinal),
createSourceCodes.stream().map(CreateSourceCodeRequest::ordinal)
).toList();
updateSourceCodes.stream().map(UpdateSourceCodeRequest::ordinal),
createSourceCodes.stream().map(CreateSourceCodeRequest::ordinal)
).sorted()
.toList();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,6 @@ public Template fetchById(Long id) {
() -> new CodeZapException(ErrorCode.RESOURCE_NOT_FOUND, "식별자 " + id + "에 해당하는 템플릿이 존재하지 않습니다."));
}

public List<Template> findByMemberId(Long id) {
return templateJpaRepository.findByMemberId(id);
}

public FixedPage<Template> findAll(
Long memberId, String keyword, Long categoryId, List<Long> tagIds, Visibility visibility, Pageable pageable
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.List;
import java.util.Objects;
import java.util.stream.IntStream;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand All @@ -12,8 +13,11 @@
import codezap.template.domain.Template;
import codezap.template.domain.Thumbnail;
import codezap.template.dto.request.CreateSourceCodeRequest;
import codezap.template.dto.request.CreateTemplateRequest;
import codezap.template.dto.request.UpdateSourceCodeRequest;
import codezap.template.dto.request.UpdateTemplateRequest;
import codezap.template.dto.request.validation.ValidatedSourceCodesCountRequest;
import codezap.template.dto.request.validation.ValidatedSourceCodesOrdinalRequest;
import codezap.template.repository.SourceCodeRepository;
import lombok.RequiredArgsConstructor;

Expand All @@ -22,12 +26,17 @@
@Transactional(readOnly = true)
public class SourceCodeService {

private static final int MINIMUM_SOURCE_CODE_COUNT = 1;

private final SourceCodeRepository sourceCodeRepository;

@Transactional
public void createSourceCodes(Template template, List<CreateSourceCodeRequest> sourceCodes) {
public void createSourceCodes(Template template, CreateTemplateRequest request) {
validateSourceCodeCount(request);
validateSourceCodesOrdinal(request);

sourceCodeRepository.saveAll(
sourceCodes.stream()
request.sourceCodes().stream()
.map(createSourceCodeRequest -> createSourceCode(template, createSourceCodeRequest))
.toList()
);
Expand All @@ -43,6 +52,9 @@ public List<SourceCode> findAllByTemplate(Template template) {

@Transactional
public void updateSourceCodes(UpdateTemplateRequest updateTemplateRequest, Template template, Thumbnail thumbnail) {
validateSourceCodeCount(updateTemplateRequest);
validateSourceCodesOrdinal(updateTemplateRequest);

updateTemplateRequest.updateSourceCodes().forEach(this::updateSourceCode);
sourceCodeRepository.saveAll(
updateTemplateRequest.createSourceCodes().stream()
Expand All @@ -52,7 +64,23 @@ public void updateSourceCodes(UpdateTemplateRequest updateTemplateRequest, Templ

updateThumbnail(updateTemplateRequest, template, thumbnail);
updateTemplateRequest.deleteSourceCodeIds().forEach(sourceCodeRepository::deleteById);
validateSourceCodesCount(template, updateTemplateRequest);

validateSourceCodeCountMatch(template, updateTemplateRequest);
}

private void validateSourceCodeCount(ValidatedSourceCodesCountRequest request) {
if(request.countSourceCodes() < MINIMUM_SOURCE_CODE_COUNT) {
throw new CodeZapException(ErrorCode.INVALID_REQUEST, "소스 코드는 최소 1개 입력해야 합니다.");
}
}

private void validateSourceCodesOrdinal(ValidatedSourceCodesOrdinalRequest request) {
List<Integer> indexes = request.extractSourceCodesOrdinal();
boolean isOrderValid = IntStream.range(0, indexes.size())
.allMatch(index -> indexes.get(index) == index + 1);
if(!isOrderValid) {
throw new CodeZapException(ErrorCode.INVALID_REQUEST, "소스 코드 순서가 잘못되었습니다.");
}
}

private void updateSourceCode(UpdateSourceCodeRequest updateSourceCodeRequest) {
Expand Down Expand Up @@ -92,9 +120,8 @@ private void refreshThumbnail(Template template, Thumbnail thumbnail) {
.ifPresent(thumbnail::updateThumbnail);
}

private void validateSourceCodesCount(Template template, UpdateTemplateRequest updateTemplateRequest) {
if (updateTemplateRequest.updateSourceCodes().size() + updateTemplateRequest.createSourceCodes().size()
!= sourceCodeRepository.countByTemplate(template)) {
private void validateSourceCodeCountMatch(Template template, UpdateTemplateRequest updateTemplateRequest) {
if (updateTemplateRequest.countSourceCodes() != sourceCodeRepository.countByTemplate(template)) {
throw new CodeZapException(ErrorCode.INVALID_REQUEST, "소스 코드의 정보가 정확하지 않습니다.");
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,6 @@ public Template getById(Long id) {
return templateRepository.fetchById(id);
}

public List<Template> getByMemberId(Long memberId) {
return templateRepository.findByMemberId(memberId);
}

public FixedPage<Template> findAllBy(
Long memberId,
String keyword,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@ public List<Thumbnail> getAllByTemplates(List<Template> templates) {
return thumbnailRepository.findAllByTemplateIn(templateIds);
}

public ExploreTemplatesResponse findAll() {
return ExploreTemplatesResponse.from(thumbnailRepository.findAll());
}

@Transactional
public void deleteAllByTemplateIds(List<Long> templateIds) {
thumbnailRepository.deleteAllByTemplateIds(templateIds);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ public Long create(Member member, CreateTemplateRequest createTemplateRequest) {
category.validateAuthorization(member);
Template template = templateService.create(member, createTemplateRequest, category);
tagService.createTags(template, createTemplateRequest.tags());
sourceCodeService.createSourceCodes(template, createTemplateRequest.sourceCodes());
sourceCodeService.createSourceCodes(template, createTemplateRequest);
SourceCode thumbnail = sourceCodeService.getByTemplateAndOrdinal(
template,
createTemplateRequest.thumbnailOrdinal());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.junit.jupiter.api.Assertions.assertAll;

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -114,32 +113,6 @@ void failWithNotExistMember() {
}
}

@Nested
@DisplayName("카테고리 전체 조회 테스트")
class FindAllCategoryTest {

@Test
@DisplayName("성공")
void findAllCategoriesSuccess() {
Member member = memberRepository.save(MemberFixture.memberFixture());

categoryRepository.save(new Category("category1", member));
categoryRepository.save(new Category("category2", member));

FindAllCategoriesResponse findAllCategoriesResponse = sut.findAll();

assertThat(findAllCategoriesResponse.categories()).hasSize(2);
}

@Test
@DisplayName("성공 : 카테고리가 존재하지 않으면 빈 리스트를 반환한다.")
void findAllCategoriesEmptyList() {
FindAllCategoriesResponse findAllCategoriesResponse = sut.findAll();

assertThat(findAllCategoriesResponse.categories()).isEmpty();
}
}

@Nested
@DisplayName("카테고리 단건 조회 테스트")
class FetchByIdTest {
Expand Down Expand Up @@ -172,7 +145,6 @@ class UpdateCategoryTest {

@Test
@DisplayName("카테고리 수정 성공")
@Disabled
void updateCategorySuccess() {
String updateCategoryName = "updateName";
Member member = memberRepository.save(MemberFixture.memberFixture());
Expand Down
69 changes: 0 additions & 69 deletions backend/src/test/java/codezap/tag/service/TagServiceTest.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
package codezap.tag.service;

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.Arrays;
import java.util.Collections;
import java.util.List;

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
Expand All @@ -19,7 +17,6 @@
import codezap.fixture.MemberFixture;
import codezap.fixture.TemplateFixture;
import codezap.global.ServiceTest;
import codezap.global.exception.CodeZapException;
import codezap.member.domain.Member;
import codezap.tag.domain.Tag;
import codezap.tag.dto.response.FindAllTagsResponse;
Expand Down Expand Up @@ -143,72 +140,6 @@ void findAllByTemplate_WhenNotExistTemplateTag() {
// when & then
assertThat(sut.findAllByTemplate(template)).isEmpty();
}

@Test
@Disabled("현재 InvalidDataAccessApiUsageException 발생하므로 조회 직전에 검증 처리가 필요")
@DisplayName("실패: 존재하지 않는 템플릿으로 태그 조회")
void findAllByTemplate_WhenNotExistTemplate() {
// given
Member member = memberRepository.save(MemberFixture.getFirstMember());
Category category = categoryRepository.save(CategoryFixture.getFirstCategory());
Template unSavedTemplate = TemplateFixture.get(member, category);
tagRepository.save(new Tag("tag1"));
tagRepository.save(new Tag("tag2"));

// when & then
assertThatThrownBy(() -> sut.findAllByTemplate(unSavedTemplate))
.isInstanceOf(CodeZapException.class)
.hasMessage("템플릿이 존재하지 않아 태그를 조회할 수 없습니다.");
}
}

@Nested
@DisplayName("템플릿 Id로 태그 조회")
class FindAllByTemplateId {

@Test
@DisplayName("성공: 템플릿 Id에 해당하는 태그 목록 반환")
void findAllByTemplate() {
// given
Template template = createSavedTemplate();
Tag tag1 = tagRepository.save(new Tag("tag1"));
Tag tag2 = tagRepository.save(new Tag("tag2"));
TemplateTag templateTag1 = templateTagRepository.save(new TemplateTag(template, tag1));
TemplateTag templateTag2 = templateTagRepository.save(new TemplateTag(template, tag2));

// when & then
assertThat(sut.findAllByTemplateId(template.getId()))
.containsExactly(templateTag1.getTag(), templateTag2.getTag());
}

@Test
@DisplayName("성공: 템플릿에 해당하는 태그가 없는 경우 빈 목록 반환")
void findAllByTemplate_WhenNotExistTemplateTag() {
// given
Template template = createSavedTemplate();
tagRepository.save(new Tag("tag1"));
tagRepository.save(new Tag("tag2"));

// when & then
assertThat(sut.findAllByTemplateId(template.getId())).isEmpty();
}

@Test
@Disabled("현재 InvalidDataAccessApiUsageException 발생하므로 조회 직전에 검증 처리가 필요")
@DisplayName("실패: 존재하지 않는 템플릿으로 태그 조회")
void findAllByTemplate_WhenNotExistTemplate() {
// given
Member member = memberRepository.save(MemberFixture.getFirstMember());
Category category = categoryRepository.save(CategoryFixture.getFirstCategory());
Template unSavedTemplate = TemplateFixture.get(member, category);
tagRepository.save(new Tag("tag1"));
tagRepository.save(new Tag("tag2"));

// when & then
assertThatThrownBy(() -> sut.findAllByTemplateId(unSavedTemplate.getId()))
.isInstanceOf(CodeZapException.class)
.hasMessage("템플릿이 존재하지 않아 태그를 조회할 수 없습니다.");
}
}

@Nested
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ private static CreateTemplateRequest createRequestWithNullVisibility() {

@ParameterizedTest
@DisplayName("템플릿 생성 실패: 잘못된 소스 코드 순서 입력 시 400 반환")
@CsvSource({"0, 1", "1, 3", "2, 1"})
@CsvSource({"0, 1", "1, 3"})
void createTemplateFailWithWrongSourceCodeOrdinal(int firstIndex, int secondIndex) throws Exception {
CreateTemplateRequest templateRequest = new CreateTemplateRequest("title", "description",
List.of(new CreateSourceCodeRequest("title", "content", firstIndex),
Expand Down Expand Up @@ -545,7 +545,7 @@ private static UpdateTemplateRequest createUpdateRequestWithNullTags() {

@ParameterizedTest
@DisplayName("템플릿 수정 실패: 잘못된 소스 코드 순서 입력")
@CsvSource({"1, 2, 1", "3, 2, 1", "0, 2, 1"})
@CsvSource({"1, 2, 1", "1, 3, 4", "0, 2, 1"})
void updateTemplateFailWithWrongSourceCodeOrdinal(int createOrdinal1, int createOrdinal2, int updateOrdinal)
throws Exception {
// given
Expand Down
Loading

0 comments on commit e70bbf0

Please sign in to comment.