Skip to content

Commit

Permalink
refactor: distinct() 연산을 HashSet을 사용하는 것으로 변경
Browse files Browse the repository at this point in the history
  • Loading branch information
amaran-th committed Aug 8, 2023
1 parent a284a46 commit 14a321f
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.emmsale.member.domain.MemberRepository;
import com.emmsale.member.exception.MemberException;
import com.emmsale.member.exception.MemberExceptionType;
import java.util.HashSet;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
Expand Down Expand Up @@ -66,8 +67,10 @@ public List<MemberActivityResponses> addActivity(
) {
final List<Long> activityIds = memberActivityAddRequest.getActivityIds();
final List<MemberActivity> memberActivities = memberActivityRepository.findAllByMember(member);
if (isAlreadyExistActivity(memberActivities, activityIds) || hasDuplicateId(memberActivities,
activityIds)) {
if (hasDuplicateId(memberActivities, activityIds)) {
throw new MemberException(MemberExceptionType.DUPLICATE_ACTIVITY);
}
if (isAlreadyExistActivity(memberActivities, activityIds)) {
throw new MemberException(MemberExceptionType.ALREADY_EXIST_ACTIVITY);
}
saveMemberActivities(member, activityIds);
Expand All @@ -86,7 +89,7 @@ private boolean isAlreadyExistActivity(final List<MemberActivity> memberActiviti

private boolean hasDuplicateId(final List<MemberActivity> memberActivities,
final List<Long> activityIds) {
return activityIds.stream().distinct().count() != memberActivities.size();
return new HashSet<>(activityIds).size() != memberActivities.size();
}

public List<MemberActivityResponses> deleteActivity(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ public enum MemberExceptionType implements BaseExceptionType {
"이미 등록된 활동입니다."
),

DUPLICATE_ACTIVITY(
HttpStatus.BAD_REQUEST,
"요청에 중복된 활동 ID가 포함되어 있습니다."
),

NULL_DESCRIPTION(
HttpStatus.BAD_REQUEST,
"한 줄 자기소개는 null이 될 수 없습니다."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class MemberActivityServiceTest extends ServiceIntegrationTestHelper {
@DisplayName("Activity의 id를 통해서, 사용자의 Activity를 등록하고 사용자의 이름을 수정할 수 있다.")
void registerActivities() throws Exception {
//given
final List<Long> activityIds = List.of(1L, 2L, 3L, 4L);
final List<Long> activityIds = List.of(1L, 2L, 3L);
final long savedMemberId = 1L;

final Member member = memberRepository.findById(savedMemberId).get();
Expand Down Expand Up @@ -154,7 +154,7 @@ void test_addActivity_ALREADY_EXIST_ACTIVITY_Exception_duplicate_input() throws
// when, then
assertThatThrownBy(() -> memberActivityService.addActivity(savedMember, request))
.isInstanceOf(MemberException.class)
.hasMessage(MemberExceptionType.ALREADY_EXIST_ACTIVITY.errorMessage());
.hasMessage(MemberExceptionType.DUPLICATE_ACTIVITY.errorMessage());
}

@Test
Expand Down

0 comments on commit 14a321f

Please sign in to comment.