Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ public class KakaoSigninRequest {
private Gender gender;

@NotNull(message = "jobId는 필수 입력값입니다.")
@Min(value = 1, message = "jobId는 1 이상의 값이어야 합니다.")
@Min(value = 0, message = "jobId는 0 이상의 값이어야 합니다.")
@Max(value = 20, message = "jobId는 20 이하의 값이어야 합니다.")
private Long jobId;

@NotNull(message = "yearId는 필수 입력값입니다.")
@Min(value = 1, message = "yearId는 1 이상의 값이어야 합니다.")
@Min(value = 0, message = "yearId는 0 이상의 값이어야 합니다.")
@Max(value = 4, message = "yearId는 4 이하의 값이어야 합니다.")
private int yearId;

Expand All @@ -53,7 +53,7 @@ public KakaoSigninServiceRequest toServiceRequest() {

@Builder
private KakaoSigninRequest(String accessToken, String nickname, String birth, Gender gender, Long jobId,
int yearId) {
int yearId) {
this.accessToken = accessToken;
this.nickname = nickname;
this.birth = birth;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
public class UpdateJobRequest {

@NotNull(message = "jobId는 필수 입력값입니다.")
@Min(value = 1, message = "jobId는 1 이상의 값이어야 합니다.")
@Min(value = 0, message = "jobId는 0 이상의 값이어야 합니다.")
@Max(value = 20, message = "jobId는 20 이하의 값이어야 합니다.")
private Long jobId;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
public class UpdateJobYearRequest {

@NotNull(message = "yearId는 필수 입력값입니다.")
@Min(value = 1, message = "yearId는 1 이상의 값이어야 합니다.")
@Min(value = 0, message = "yearId는 0 이상의 값이어야 합니다.")
@Max(value = 4, message = "yearId는 4 이하의 값이어야 합니다.")
private int yearId;

Expand Down
16 changes: 13 additions & 3 deletions src/main/java/com/challenge/api/service/auth/AuthService.java
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,21 @@ public LoginResponse kakaoSignin(KakaoSigninServiceRequest request) {
authValidator.validateUniqueNickname(request.getNickname());

// 직무 데이터 설정
Job job = jobRepository.findById(request.getJobId())
.orElseThrow(() -> new GlobalException(ErrorCode.JOB_NOT_FOUND));
Job job;
if (request.getJobId() == 0) {
job = null;
} else {
job = jobRepository.findById(request.getJobId())
.orElseThrow(() -> new GlobalException(ErrorCode.JOB_NOT_FOUND));
}

// 연차 enum 데이터 설정
JobYear jobYear = JobYear.of(request.getYearId());
JobYear jobYear;
if (request.getYearId() == 0) {
jobYear = null;
} else {
jobYear = JobYear.of(request.getYearId());
}

// member 엔티티 생성 및 저장
Member member = Member.create(userInfo.getSocialId(), userInfo.getEmail(), request.getNickname(),
Expand Down
23 changes: 15 additions & 8 deletions src/main/java/com/challenge/api/service/member/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -127,11 +127,15 @@ public String updateGender(Member member, UpdateGenderServiceRequest request) {
*/
@Transactional
public String updateJob(Member member, UpdateJobServiceRequest request) {
// 직무 데이터 조회
Job job = jobRepository.findById(request.getJobId())
.orElseThrow(() -> new GlobalException(ErrorCode.JOB_NOT_FOUND));

member.updateJob(job);
if (request.getJobId() == 0) {
member.updateJob(null);
} else {
// 직무 데이터 조회
Job job = jobRepository.findById(request.getJobId())
.orElseThrow(() -> new GlobalException(ErrorCode.JOB_NOT_FOUND));

member.updateJob(job);
}

return "직업 수정 성공";
}
Expand All @@ -145,9 +149,12 @@ public String updateJob(Member member, UpdateJobServiceRequest request) {
*/
@Transactional
public String updateJobYear(Member member, UpdateJobYearServiceRequest request) {
JobYear jobYear = JobYear.of(request.getYearId());

member.updateJobYear(jobYear);
if (request.getYearId() == 0) {
member.updateJobYear(null);
} else {
JobYear jobYear = JobYear.of(request.getYearId());
member.updateJobYear(jobYear);
}

return "연차 수정 성공";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,13 @@ public class MemberInfoResponse {
private final String nickname;
private final String birth;
private final Gender gender;
private final long jobId;
private final Long jobId;
private final String job;
private final int jobYearId;
private final Integer jobYearId;

@Builder
private MemberInfoResponse(String nickname, String birth, Gender gender, long jobId, String job, int jobYearId) {
private MemberInfoResponse(String nickname, String birth, Gender gender, Long jobId, String job,
Integer jobYearId) {
this.nickname = nickname;
this.birth = birth;
this.gender = gender;
Expand All @@ -27,13 +28,17 @@ private MemberInfoResponse(String nickname, String birth, Gender gender, long jo
}

public static MemberInfoResponse of(Member member) {
Long jobId = member.getJob() == null ? null : member.getJob().getId();
String job = member.getJob() == null ? null : member.getJob().getDescription();
Integer jobYearId = member.getJobYear() == null ? null : member.getJobYear().getId();

return MemberInfoResponse.builder()
.nickname(member.getNickname())
.birth(DateUtils.toDayString(member.getBirth()))
.gender(member.getGender())
.jobId(member.getJob().getId())
.job(member.getJob().getDescription())
.jobYearId(member.getJobYear().getId())
.jobId(jobId)
.job(job)
.jobYearId(jobYearId)
.build();
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/challenge/domain/member/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public class Member extends BaseDateTimeEntity {
private Gender gender;

@Enumerated(EnumType.STRING)
@Column(columnDefinition = "VARCHAR(10)", nullable = false)
@Column(columnDefinition = "VARCHAR(10)")
private JobYear jobYear;

@Column(length = 1000)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -293,7 +293,7 @@ void kakaoSigninFailedWhenJobIdIsNull() throws Exception {
.andExpect(jsonPath("$.url").value("/api/v1/auth/signin/kakao"));
}

@DisplayName("카카오 회원가입 실패: jobId가 1 미만인 경우 에러 응답을 반환한다.")
@DisplayName("카카오 회원가입 실패: jobId가 0 미만인 경우 에러 응답을 반환한다.")
@Test
void kakaoSigninFailedWhenJobIdIsLessThanMin() throws Exception {
// given
Expand All @@ -302,7 +302,7 @@ void kakaoSigninFailedWhenJobIdIsLessThanMin() throws Exception {
.nickname(MOCK_NICKNAME)
.birth(MOCK_BIRTH)
.gender(MOCK_GENDER)
.jobId(0L)
.jobId(-1L)
.yearId(MOCK_JOBYEAR.getId())
.build();

Expand All @@ -311,7 +311,7 @@ void kakaoSigninFailedWhenJobIdIsLessThanMin() throws Exception {
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().is(400))
.andExpect(jsonPath("$.message").value("jobId는 1 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.message").value("jobId는 0 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.code").value("VALID_ERROR"))
.andExpect(jsonPath("$.url").value("/api/v1/auth/signin/kakao"));
}
Expand Down Expand Up @@ -339,7 +339,7 @@ void kakaoSigninFailedWhenJobIdIsMoreThanMax() throws Exception {
.andExpect(jsonPath("$.url").value("/api/v1/auth/signin/kakao"));
}

@DisplayName("카카오 회원가입 실패: yearId가 1 미만인 경우 에러 응답을 반환한다.")
@DisplayName("카카오 회원가입 실패: yearId가 0 미만인 경우 에러 응답을 반환한다.")
@Test
void kakaoSigninFailedWhenYearIdIsLessThanMin() throws Exception {
// given
Expand All @@ -349,15 +349,15 @@ void kakaoSigninFailedWhenYearIdIsLessThanMin() throws Exception {
.birth(MOCK_BIRTH)
.gender(MOCK_GENDER)
.jobId(MOCK_JOB.getId())
.yearId(0)
.yearId(-1)
.build();

// when // then
mockMvc.perform(post("/api/v1/auth/signin/kakao")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().is(400))
.andExpect(jsonPath("$.message").value("yearId는 1 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.message").value("yearId는 0 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.code").value("VALID_ERROR"))
.andExpect(jsonPath("$.url").value("/api/v1/auth/signin/kakao"));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -322,20 +322,20 @@ void updateJobFailedWhenIdIsNull() throws Exception {
.andExpect(jsonPath("$.url").value("/api/v1/member/job"));
}

@DisplayName("직무 수정 실패: jobId가 1 미만인 경우 에러 응답을 반환한다.")
@DisplayName("직무 수정 실패: jobId가 0 미만인 경우 에러 응답을 반환한다.")
@Test
void updateJobFailedWhenJobIdIsLessThanMin() throws Exception {
// given
UpdateJobRequest request = UpdateJobRequest.builder()
.jobId(0L)
.jobId(-1L)
.build();

// when // then
mockMvc.perform(put("/api/v1/member/job")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().is(400))
.andExpect(jsonPath("$.message").value("jobId는 1 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.message").value("jobId는 0 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.code").value("VALID_ERROR"))
.andExpect(jsonPath("$.url").value("/api/v1/member/job"));
}
Expand Down Expand Up @@ -390,20 +390,20 @@ void updateJobYearSucceeds() throws Exception {
.andExpect(jsonPath("$.data").value(updateJobYearResponse));
}

@DisplayName("연차 수정 실패: yearId가 1 미만인 경우 에러 응답을 반환한다.")
@DisplayName("연차 수정 실패: yearId가 0 미만인 경우 에러 응답을 반환한다.")
@Test
void updateJobYearFailedWhenIdIsLessThanMin() throws Exception {
// given
UpdateJobYearRequest request = UpdateJobYearRequest.builder()
.yearId(0)
.yearId(-1)
.build();

// when // then
mockMvc.perform(put("/api/v1/member/jobyear")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().is(400))
.andExpect(jsonPath("$.message").value("yearId는 1 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.message").value("yearId는 0 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.code").value("VALID_ERROR"))
.andExpect(jsonPath("$.url").value("/api/v1/member/jobyear"));
}
Expand Down
12 changes: 6 additions & 6 deletions src/test/java/com/challenge/docs/AuthControllerDocsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -355,7 +355,7 @@ void kakaoSigninFailJobIdNull() throws Exception {
));
}

@DisplayName("카카오 회원가입 실패: jobId가 1 미만인 경우")
@DisplayName("카카오 회원가입 실패: jobId가 0 미만인 경우")
@Test
void kakaoSigninFailJobIdLessThan() throws Exception {
// given
Expand All @@ -364,7 +364,7 @@ void kakaoSigninFailJobIdLessThan() throws Exception {
.nickname(MOCK_NICKNAME)
.birth(MOCK_BIRTH)
.gender(MOCK_GENDER)
.jobId(0L)
.jobId(-1L)
.yearId(MOCK_JOBYEAR.getId())
.build();

Expand All @@ -373,7 +373,7 @@ void kakaoSigninFailJobIdLessThan() throws Exception {
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().is(400))
.andExpect(jsonPath("$.message").value("jobId는 1 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.message").value("jobId는 0 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.code").value("VALID_ERROR"))
.andExpect(jsonPath("$.url").value("/api/v1/auth/signin/kakao"))
.andDo(restDocs.document(
Expand Down Expand Up @@ -409,7 +409,7 @@ void kakaoSigninFailJobIdGreaterThan() throws Exception {
));
}

@DisplayName("카카오 회원가입 실패: yearId가 1 미만인 경우")
@DisplayName("카카오 회원가입 실패: yearId가 0 미만인 경우")
@Test
void kakaoSigninFailYearIdLessThan() throws Exception {
// given
Expand All @@ -419,15 +419,15 @@ void kakaoSigninFailYearIdLessThan() throws Exception {
.birth(MOCK_BIRTH)
.gender(MOCK_GENDER)
.jobId(MOCK_JOB.getId())
.yearId(0)
.yearId(-1)
.build();

// when // then
mockMvc.perform(post("/api/v1/auth/signin/kakao")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().is(400))
.andExpect(jsonPath("$.message").value("yearId는 1 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.message").value("yearId는 0 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.code").value("VALID_ERROR"))
.andExpect(jsonPath("$.url").value("/api/v1/auth/signin/kakao"))
.andDo(restDocs.document(
Expand Down
12 changes: 6 additions & 6 deletions src/test/java/com/challenge/docs/MemberControllerDocsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -470,20 +470,20 @@ void updateJobFailIdNull() throws Exception {
));
}

@DisplayName("직무 수정 실패: jobId가 1 미만인 경우 에러 응답을 반환한다.")
@DisplayName("직무 수정 실패: jobId가 0 미만인 경우 에러 응답을 반환한다.")
@Test
void updateJobFailIdLessThan() throws Exception {
// given
UpdateJobRequest request = UpdateJobRequest.builder()
.jobId(0L)
.jobId(-1L)
.build();

// when // then
mockMvc.perform(put("/api/v1/member/job")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().is(400))
.andExpect(jsonPath("$.message").value("jobId는 1 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.message").value("jobId는 0 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.code").value("VALID_ERROR"))
.andExpect(jsonPath("$.url").value("/api/v1/member/job"))
.andDo(restDocs.document(
Expand Down Expand Up @@ -569,20 +569,20 @@ void updateJobYearSuccess() throws Exception {
));
}

@DisplayName("연차 수정 실패: yearId가 1 미만인 경우 에러 응답을 반환한다.")
@DisplayName("연차 수정 실패: yearId가 0 미만인 경우 에러 응답을 반환한다.")
@Test
void updateJobYearFailIdLessThan() throws Exception {
// given
UpdateJobYearRequest request = UpdateJobYearRequest.builder()
.yearId(0)
.yearId(-1)
.build();

// when // then
mockMvc.perform(put("/api/v1/member/jobyear")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().is(400))
.andExpect(jsonPath("$.message").value("yearId는 1 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.message").value("yearId는 0 이상의 값이어야 합니다."))
.andExpect(jsonPath("$.code").value("VALID_ERROR"))
.andExpect(jsonPath("$.url").value("/api/v1/member/jobyear"))
.andDo(restDocs.document(
Expand Down
Loading