Skip to content

Commit

Permalink
test: 폴더 이름 변경 테스트 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
shinyubin989 committed Jan 24, 2024
1 parent fe6b7c8 commit d9b3d3a
Show file tree
Hide file tree
Showing 4 changed files with 209 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields;

import com.baro.auth.domain.Token;
import com.baro.memofolder.presentation.dto.RenameMemoFolderRequest;
import com.baro.memofolder.presentation.dto.SaveMemoFolderRequest;
import io.restassured.response.ExtractableResponse;
import io.restassured.response.Response;
Expand Down Expand Up @@ -99,4 +100,45 @@ public class MemoFolderAcceptanceSteps {
.then().log().all()
.extract();
}

public static ExtractableResponse<Response> 메모_폴더_수정_요청_성공(Token 토큰, RenameMemoFolderRequest 바디) {
var url = "/memo-folders";

return given(requestSpec).log().all()
.filter(document(DEFAULT_REST_DOCS_PATH,
requestHeaders(
headerWithName(HttpHeaders.AUTHORIZATION).description("인증 토큰")
),
requestFields(
fieldWithPath("memoFolderId").description("폴더 id"),
fieldWithPath("folderName").description("수정할 폴더 이름")
)
))
.contentType(MediaType.APPLICATION_JSON_VALUE)
.header(HttpHeaders.AUTHORIZATION, "Bearer " + 토큰.accessToken()).body(바디)
.when().patch(url)
.then().log().all()
.extract();
}

public static ExtractableResponse<Response> 메모_폴더_수정_요청_실패(Token 토큰, RenameMemoFolderRequest 바디) {
var url = "/memo-folders";

return given(requestSpec).log().all()
.filter(document(DEFAULT_REST_DOCS_PATH,
requestHeaders(
headerWithName(HttpHeaders.AUTHORIZATION).description("인증 토큰")
),
requestFields(
fieldWithPath("memoFolderId").description("폴더 id"),
fieldWithPath("folderName").description("수정할 폴더 이름")
),
responseFields(예외_응답())
))
.contentType(MediaType.APPLICATION_JSON_VALUE)
.header(HttpHeaders.AUTHORIZATION, "Bearer " + 토큰.accessToken()).body(바디)
.when().patch(url)
.then().log().all()
.extract();
}
}
12 changes: 12 additions & 0 deletions src/test/java/com/baro/memofolder/domain/MemoFolderNameTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,16 @@ class MemoFolderNameTest {
.extracting("exceptionType")
.isEqualTo(MemoFolderExceptionType.OVER_MAX_SIZE_NAME);
}

@Test
void 메모_폴더_이름_길이_검증_빈_문자열() {
// given
String emptyName = "";

// when & then
assertThatThrownBy(() -> MemoFolderName.from(emptyName))
.isInstanceOf(MemoFolderException.class)
.extracting("exceptionType")
.isEqualTo(MemoFolderExceptionType.EMPTY_NAME);
}
}
77 changes: 77 additions & 0 deletions src/test/java/com/baro/memofolder/domain/MemoFolderTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.baro.memofolder.domain;

import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

import com.baro.member.domain.Member;
import com.baro.memofolder.exception.MemoFolderException;
import com.baro.memofolder.exception.MemoFolderExceptionType;
import org.junit.jupiter.api.DisplayNameGeneration;
import org.junit.jupiter.api.DisplayNameGenerator.ReplaceUnderscores;
import org.junit.jupiter.api.Test;

@DisplayNameGeneration(ReplaceUnderscores.class)
@SuppressWarnings("NonAsciiCharacters")
class MemoFolderTest {

@Test
void 메모_폴더의_소유자가_일치한다() {
// given
Member member = new Member(1L, "name", "email", "nickname", "oAuthId", "oAuthServiceType");
MemoFolder memoFolder = MemoFolder.of(member, "폴더이름");

// when & then
assertThatCode(() -> memoFolder.matchOwner(1L))
.doesNotThrowAnyException();
}

@Test
void 메모_폴더의_소유자가_일치하지_않는다() {
// given
Member member = new Member(1L, "name", "email", "nickname", "oAuthId", "oAuthServiceType");
MemoFolder memoFolder = MemoFolder.of(member, "폴더이름");

// when & then
assertThatThrownBy(() -> memoFolder.matchOwner(999L))
.isInstanceOf(MemoFolderException.class)
.extracting("exceptionType")
.isEqualTo(MemoFolderExceptionType.NOT_MATCH_OWNER);
}

@Test
void 메모_폴더의_이름을_변경한다() {
// given
Member member = new Member(1L, "name", "email", "nickname", "oAuthId", "oAuthServiceType");
MemoFolder memoFolder = MemoFolder.of(member, "폴더이름");

// when & then
assertThatCode(() -> memoFolder.rename("변경된폴더이름"))
.doesNotThrowAnyException();
}

@Test
void 메모_폴더_이름_변경시_최대_길이_검증() {
// given
Member member = new Member(1L, "name", "email", "nickname", "oAuthId", "oAuthServiceType");
MemoFolder memoFolder = MemoFolder.of(member, "폴더이름");

// when & then
assertThatThrownBy(() -> memoFolder.rename("1".repeat(11)))
.isInstanceOf(MemoFolderException.class)
.extracting("exceptionType")
.isEqualTo(MemoFolderExceptionType.OVER_MAX_SIZE_NAME);
}

@Test
void 메모_폴더_이름_변경시_빈_문자열_검증() {
// given
Member member = new Member(1L, "name", "email", "nickname", "oAuthId", "oAuthServiceType");
MemoFolder memoFolder = MemoFolder.of(member, "폴더이름");

// when & then
assertThatThrownBy(() -> memoFolder.rename(""))
.isInstanceOf(MemoFolderException.class)
.extracting("exceptionType")
.isEqualTo(MemoFolderExceptionType.EMPTY_NAME);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,18 @@
import static com.baro.auth.fixture.OAuthMemberInfoFixture.유빈;
import static com.baro.auth.fixture.OAuthMemberInfoFixture.은지;
import static com.baro.auth.fixture.OAuthMemberInfoFixture.태연;
import static com.baro.common.acceptance.AcceptanceSteps.권한_없음;
import static com.baro.common.acceptance.AcceptanceSteps.생성됨;
import static com.baro.common.acceptance.AcceptanceSteps.성공;
import static com.baro.common.acceptance.AcceptanceSteps.응답값_없음;
import static com.baro.common.acceptance.AcceptanceSteps.응답값을_검증한다;
import static com.baro.common.acceptance.AcceptanceSteps.응답의_Location_헤더가_존재한다;
import static com.baro.common.acceptance.AcceptanceSteps.잘못된_요청;
import static com.baro.common.acceptance.memofolder.MemoFolderAcceptanceSteps.메모_폴더_불러오기_요청;
import static com.baro.common.acceptance.memofolder.MemoFolderAcceptanceSteps.메모_폴더_생성_요청;
import static com.baro.common.acceptance.memofolder.MemoFolderAcceptanceSteps.메모_폴더_수정_요청_성공;
import static com.baro.common.acceptance.memofolder.MemoFolderAcceptanceSteps.메모_폴더_수정_요청_실패;
import static com.baro.common.acceptance.memofolder.MemoFolderAcceptanceSteps.메모_폴더를_생성_하고_ID를_반환한다;
import static com.baro.common.acceptance.memofolder.MemoFolderAcceptanceSteps.잘못된_메모_폴더_생성_요청;
import static com.baro.common.acceptance.memofolder.MemoFolderAcceptanceSteps.폴더_이름_길이_초과_바디;
import static com.baro.common.acceptance.memofolder.MemoFolderAcceptanceSteps.폴더_이름_바디;
Expand All @@ -22,6 +27,7 @@
import com.baro.member.domain.MemberRepository;
import com.baro.member.exception.MemberException;
import com.baro.member.exception.MemberExceptionType;
import com.baro.memofolder.presentation.dto.RenameMemoFolderRequest;
import org.junit.jupiter.api.DisplayNameGeneration;
import org.junit.jupiter.api.DisplayNameGenerator.ReplaceUnderscores;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -102,6 +108,78 @@ class MemoFolderApiTest extends RestApiTest {
응답값을_검증한다(응답, 성공);
}

@Test
void 폴더_이름을_변경한다() {
// given
var 토큰 = 로그인(원진());
var 메모폴더ID = 메모_폴더를_생성_하고_ID를_반환한다(토큰, 폴더_이름_바디);
var 바디 = new RenameMemoFolderRequest(메모폴더ID, "변경된 이름");

// when
var 응답 = 메모_폴더_수정_요청_성공(토큰, 바디);

// then
응답값을_검증한다(응답, 응답값_없음);
}

@Test
void 폴더이름_수정시_이름이_중복된_경우_예외_발생() {
// given
var 토큰 = 로그인(원진());
var 메모폴더ID = 메모_폴더를_생성_하고_ID를_반환한다(토큰, 폴더_이름_바디);
var 바디 = new RenameMemoFolderRequest(메모폴더ID, 폴더_이름_바디.folderName());

// when
var 응답 = 메모_폴더_수정_요청_실패(토큰, 바디);

// then
응답값을_검증한다(응답, 잘못된_요청);
}

@Test
void 폴더이름_수정시_제한길이가_초과된_경우_예외_발생() {
// given
var 토큰 = 로그인(원진());
var 메모폴더ID = 메모_폴더를_생성_하고_ID를_반환한다(토큰, 폴더_이름_바디);
var 바디 = new RenameMemoFolderRequest(메모폴더ID, 폴더_이름_길이_초과_바디.folderName());

// when
var 응답 = 메모_폴더_수정_요청_실패(토큰, 바디);

// then
응답값을_검증한다(응답, 잘못된_요청);
}

@Test
void 폴더이름_수정시_해당_폴더의_주인이_아닌_경우_예외_발생() {
// given
var 원진토큰 = 로그인(원진());
var 태연토큰 = 로그인(태연());
var 메모폴더ID = 메모_폴더를_생성_하고_ID를_반환한다(원진토큰, 폴더_이름_바디);
var 바디 = new RenameMemoFolderRequest(메모폴더ID, "변경된 이름");

// when
var 응답 = 메모_폴더_수정_요청_실패(태연토큰, 바디);

// then
응답값을_검증한다(응답, 권한_없음);
}

@Test
void 폴더이름_수정시_빈_문자열일_경우_예외_발생() {
// given
var 토큰 = 로그인(원진());
var 메모폴더ID = 메모_폴더를_생성_하고_ID를_반환한다(토큰, 폴더_이름_바디);
var 바디 = new RenameMemoFolderRequest(메모폴더ID, "");
멤버가_존재하지_않는다();

// when
var 응답 = 메모_폴더_수정_요청_실패(토큰, 바디);

// then
응답값을_검증한다(응답, 잘못된_요청);
}

void 멤버가_존재하지_않는다() {
willThrow(new MemberException(MemberExceptionType.NOT_EXIST_MEMBER)).given(memberRepository).getById(anyLong());
}
Expand Down

0 comments on commit d9b3d3a

Please sign in to comment.