Skip to content

Commit

Permalink
feat: 프로필 수정에 소갯말 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
korECM committed Feb 5, 2023
1 parent 1efa696 commit e1876dd
Show file tree
Hide file tree
Showing 6 changed files with 22 additions and 14 deletions.
4 changes: 2 additions & 2 deletions src/main/kotlin/zip/cafe/api/MemberController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ class MemberController(
@LoginUserId userId: Long,
@RequestBody request: InitProfileRequest,
): ApiResponse<InitProfileResponse> {
memberService.initMemberProfile(userId, request.nickname, request.imageId)
memberService.initMemberProfile(userId, request.nickname, request.description, request.imageId)
return success(InitProfileResponse())
}

Expand All @@ -54,7 +54,7 @@ class MemberController(
@LoginUserId userId: Long,
@RequestBody request: EditProfileRequest,
): ApiResponse<EditProfileResponse> {
memberService.editMemberProfile(userId, request.nickname, request.imageId)
memberService.editMemberProfile(userId, request.nickname, request.description, request.imageId)
return success(EditProfileResponse())
}
}
2 changes: 2 additions & 0 deletions src/main/kotlin/zip/cafe/api/profile/dto/Profile.kt
Original file line number Diff line number Diff line change
Expand Up @@ -131,13 +131,15 @@ data class UploadedProfileImageResponse(

data class InitProfileRequest(
val nickname: String,
val description: String,
val imageId: Long?,
)

class InitProfileResponse

data class EditProfileRequest(
val nickname: String,
val description: String,
val imageId: Long?,
)

Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/zip/cafe/entity/cafe/Cafe.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class Cafe(
@Column(name = "location", nullable = false)
@Embedded
val location: Point,
@Column(name = "opening_hours", nullable = false, length = 500)
@Column(name = "opening_hours", nullable = false, length = 1000)
val openingHours: String,

_totalScore: Double = 0.0,
Expand Down
4 changes: 2 additions & 2 deletions src/main/kotlin/zip/cafe/entity/member/Member.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ class Member(
var profileImage: String,

@Column(nullable = false)
val description : String = "",
var description: String = "",

@Column(nullable = false)
var isProfileInit : Boolean = false,
var isProfileInit: Boolean = false,

_followerCount: Long = 0L,
_followeeCount: Long = 0L,
Expand Down
11 changes: 6 additions & 5 deletions src/main/kotlin/zip/cafe/service/MemberService.kt
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,20 @@ class MemberService(
fun findMemberById(memberId: Long) = memberRepository.findOneById(memberId)

@Transactional
fun initMemberProfile(memberId: Long, nickname: String, profileImageId: Long?) {
fun initMemberProfile(memberId: Long, nickname: String, description: String, profileImageId: Long?) {
val member = memberRepository.findByIdOrNull(memberId) ?: throw IllegalArgumentException("존재하지 않는 회원입니다")
require(!member.isProfileInit) { "이미 프로필을 초기 설정한 회원입니다" }
applyProfile(member, nickname, profileImageId)
applyProfile(member, nickname, description, profileImageId)
member.isProfileInit = true
}

@Transactional
fun editMemberProfile(memberId: Long, nickname: String, profileImageId: Long?) {
fun editMemberProfile(memberId: Long, nickname: String, description: String, profileImageId: Long?) {
val member = memberRepository.findByIdOrNull(memberId) ?: throw IllegalArgumentException("존재하지 않는 회원입니다")
applyProfile(member, nickname, profileImageId)
applyProfile(member, nickname, description, profileImageId)
}

private fun applyProfile(member: Member, nickname: String, profileImageId: Long?) {
private fun applyProfile(member: Member, nickname: String, description: String, profileImageId: Long?) {
require(!checkNicknameDuplication(nickname)) { "중복되는 닉네임입니다" }

val profileImageURL = if (profileImageId != null) {
Expand All @@ -54,6 +54,7 @@ class MemberService(

member.profileImage = profileImageURL
member.nickname = nickname
member.description = description
}

@Transactional(propagation = Propagation.NEVER)
Expand Down
13 changes: 9 additions & 4 deletions src/test/kotlin/zip/cafe/api/MemberControllerTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import org.springframework.mock.web.MockMultipartFile
import org.springframework.restdocs.request.RequestDocumentation
import org.springframework.test.web.servlet.multipart
import org.springframework.test.web.servlet.post
import zip.cafe.api.profile.dto.EditProfileRequest
import zip.cafe.api.profile.dto.InitProfileRequest
import zip.cafe.api.utils.mockmvc.documentWithHandle
import zip.cafe.api.utils.restdocs.*
Expand Down Expand Up @@ -84,10 +85,11 @@ class MemberControllerTest : WebMvcTestAdapter() {
"프로필 초기 설정" {
val userId = MOCK_MVC_USER_ID
val nickname = "닉네임"
val description = "적당한 계정 소개"
val imageId = 5L
val request = InitProfileRequest(nickname = nickname, imageId = imageId)
val request = InitProfileRequest(nickname = nickname, description = description, imageId = imageId)

every { memberService.initMemberProfile(userId, nickname, imageId) } just Runs
every { memberService.initMemberProfile(userId, nickname, description, imageId) } just Runs

val response = mockMvc.post("/members/profile/init") {
contentType = MediaType.APPLICATION_JSON
Expand All @@ -101,6 +103,7 @@ class MemberControllerTest : WebMvcTestAdapter() {
"init-profile",
requestFields(
"nickname" type STRING means "닉네임" example nickname,
"description" type STRING means "한 줄 소개" example description,
"imageId" type NUMBER means "프로필 이미지 Id" example imageId and optional
),
responseBody(
Expand All @@ -113,10 +116,11 @@ class MemberControllerTest : WebMvcTestAdapter() {
"프로필 수정" {
val userId = MOCK_MVC_USER_ID
val nickname = "닉네임"
val description = "적당한 계정 소개"
val imageId = 5L
val request = InitProfileRequest(nickname = nickname, imageId = imageId)
val request = EditProfileRequest(nickname = nickname, description = description, imageId = imageId)

every { memberService.editMemberProfile(userId, nickname, imageId) } just Runs
every { memberService.editMemberProfile(userId, nickname, description, imageId) } just Runs

val response = mockMvc.post("/members/profile/edit") {
contentType = MediaType.APPLICATION_JSON
Expand All @@ -130,6 +134,7 @@ class MemberControllerTest : WebMvcTestAdapter() {
"edit-profile",
requestFields(
"nickname" type STRING means "닉네임" example nickname,
"description" type STRING means "한 줄 소개" example description,
"imageId" type NUMBER means "프로필 이미지 Id" example imageId and optional
),
responseBody(
Expand Down

0 comments on commit e1876dd

Please sign in to comment.