Skip to content

Commit

Permalink
fix: 필터링 API 파싱 오류 수정 #604 (#605)
Browse files Browse the repository at this point in the history
* feat: 중복 없이 MemoryFilter 가져오도록 수정

* test: 대소문자 검증 테스트케이스 추가

* fix: 요청 쿼리 스트링 파싱 사 NPE 문제 해결

* chore: dev 서버 중복 워크 플로우 비활성화

* refactor: ! 연산 제거

* refactor: 조건문 변경

* test: displayName 변경

* test: displayName 변경
  • Loading branch information
linirini authored Jan 19, 2025
1 parent a49c489 commit 5776e7f
Show file tree
Hide file tree
Showing 8 changed files with 94 additions and 11 deletions.
4 changes: 1 addition & 3 deletions .github/workflows/backend-ci-cd-dev.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
name: Backend CI/CD dev

on:
push:
paths: [ 'backend/**', '.github/**' ]
branches: [ "develop-be", "develop" ]
workflow_dispatch:

jobs:
ci:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Backend CI/CD multi prod
name: Backend CI/CD multi dev

on:
push:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public record LoginRequest(
String nickname
) {
public LoginRequest {
if (!Objects.isNull(nickname)) {
if (Objects.nonNull(nickname)) {
nickname = nickname.trim();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ public static List<MemoryFilter> findAllByName(List<String> filters) {
.map(name -> MemoryFilter.findByName(name.trim()))
.filter(Optional::isPresent)
.map(Optional::get)
.distinct()
.toList();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import com.staccato.memory.service.MemoryFilter;
import com.staccato.memory.service.MemorySort;
import io.swagger.v3.oas.annotations.media.Schema;
Expand All @@ -16,12 +17,19 @@ public record MemoryReadRequest(
private static final String DELIMITER = ",";

public List<MemoryFilter> getFilters() {
List<String> filters = Arrays.stream(this.filters.split(DELIMITER))
List<String> filters = parseFilters().stream()
.map(String::trim)
.toList();
return MemoryFilter.findAllByName(filters);
}

private List<String> parseFilters() {
if (Objects.isNull(filters)) {
return List.of();
}
return Arrays.stream(filters.split(DELIMITER)).toList();
}

public MemorySort getSort() {
return MemorySort.findByName(sort);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ void findByNameWithValidFilter() {
);
}

@DisplayName("필터링명이 주어졌을 때 유효한 MemoryFilter 목록 민 반환한다.")
@DisplayName("필터링명이 주어졌을 때 유효한 MemoryFilter 목록만 반환한다.")
@Test
void findAllByNameIfOnlyValid() {
// when
Expand All @@ -49,6 +49,19 @@ void findAllByNameIfOnlyValid() {
);
}

@DisplayName("필터링명이 중복으로 주어졌을 때 중복 없이 MemoryFilter 목록을 반환한다.")
@Test
void findAllByNameDistinct() {
// when
List<MemoryFilter> result = MemoryFilter.findAllByName(List.of("TERM", "term"));

// then
assertAll(
() -> assertThat(result).hasSize(1),
() -> assertThat(result.get(0)).isEqualTo(MemoryFilter.TERM)
);
}

@DisplayName("유효하지 않거나 null인 정렬명이 주어졌을 때 빈 값을 반환한다.")
@Test
void findByNameWithInvalid() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.junit.jupiter.params.provider.NullSource;
import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -26,13 +27,21 @@ public class MemorySortTest extends ServiceSliceTest {
private MemoryRepository memoryRepository;

@DisplayName("정렬명이 주어졌을 때 대소문자 구분 없이 MemorySort을 반환한다.")
@Test
void findByNameWithValidSort() {
@ParameterizedTest
@CsvSource({
"UPDATED, UPDATED",
"NEWEST, NEWEST",
"OLDEST, OLDEST",
"updated, UPDATED",
"newest, NEWEST",
"oldest, OLDEST"
})
void findByNameWithValidSort(String name, MemorySort sort) {
// when
MemorySort result = MemorySort.findByName("newest");
MemorySort result = MemorySort.findByName(name);

// then
assertThat(result).isEqualTo(MemorySort.NEWEST);
assertThat(result).isEqualTo(sort);
}

@DisplayName("유효하지 않거나 null인 정렬명이 주어졌을 때 기본값인 UPDATED를 반환한다.")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.staccato.memory.service.dto.request;

import java.util.List;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.NullAndEmptySource;
import com.staccato.memory.service.MemoryFilter;
import com.staccato.memory.service.MemorySort;

import static org.assertj.core.api.Assertions.assertThat;

class MemoryReadRequestTest {
@DisplayName("필터가 주어졌을 때 올바른 필터 목록을 반환한다")
@Test
void getFiltersWithValidFilters() {
// given
MemoryReadRequest request = new MemoryReadRequest("TERM, term", "NEWEST");

// when
List<MemoryFilter> filters = request.getFilters();

// then
assertThat(filters).hasSize(1).containsOnly(MemoryFilter.TERM);
}

@DisplayName("필터가 주어지지 않았을 때 빈 필터 목록을 반환한다")
@ParameterizedTest
@NullAndEmptySource
void getFiltersWithNullOrEmptyFilters(String filters) {
// given
MemoryReadRequest request = new MemoryReadRequest(filters, "NEWEST");

// when
List<MemoryFilter> result = request.getFilters();

// then
assertThat(result).isEmpty();
}

@DisplayName("정렬이 주어지지 않았을 때 기본 정렬 기준을 반환한다")
@ParameterizedTest
@NullAndEmptySource
void getSortWithNullOrEmptyFilters(String sort) {
// given
MemoryReadRequest request = new MemoryReadRequest(null, sort);

// when
MemorySort result = request.getSort();

// then
assertThat(result).isEqualTo(MemorySort.UPDATED);
}
}

0 comments on commit 5776e7f

Please sign in to comment.