Skip to content
Open
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

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,39 @@ import com.depromeet.threedays.data.enums.MemberStatus
import com.depromeet.threedays.front.IntegrationTestSpecification
import com.depromeet.threedays.front.data.member.MemberInitializer
import com.depromeet.threedays.front.persistence.repository.member.MemberRepository
import com.depromeet.threedays.front.web.request.member.MemberResourceUpdateRequest
import com.depromeet.threedays.front.web.request.member.MemberUpdateRequest
import org.json.simple.JSONObject
import org.springframework.beans.factory.annotation.Autowired

class SaveMemberResourceUseCaseSpec extends IntegrationTestSpecification {

class UpdateMemberUseCaseSpec extends IntegrationTestSpecification {

@Autowired
MemberInitializer initializer
MemberRepository mockRepo
SaveResourceUseCase useCase
UpdateMemberUseCase useCase

def setup() {
initializer.initialize()
mockRepo = Mock(MemberRepository.class)
useCase = new SaveResourceUseCase(mockRepo)
useCase = new UpdateMemberUseCase(mockRepo)
}

def "사용자는 resource 값을 추가할 수 있다."() {
def "사용자는 name 데이터를 업데이트 할 수 있다"() {
setup:
def id = initializer.data[2]

def json = new JSONObject()
json.put("test", "test")
def expected = MemberResourceUpdateRequest.builder().resource(json).build()
def expected = MemberUpdateRequest.builder().resource(json).name("admin").notificationConsent(false).build()

when:
def actual = useCase.execute(expected)

then:
mockRepo.findByIdAndStatus(_ as Long, _ as MemberStatus) >> Optional.of(id)
actual.resource.get("test") == json.get("test")
actual.name == expected.name
!actual.notificationConsent
}
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,38 @@
import com.depromeet.threedays.front.exception.ResourceNotFoundException;
import com.depromeet.threedays.front.persistence.repository.member.MemberRepository;
import com.depromeet.threedays.front.support.converter.MemberInfoJsonConverter;
import com.depromeet.threedays.front.web.request.member.MemberResourceUpdateRequest;
import com.depromeet.threedays.front.web.request.member.MemberUpdateRequest;
import com.google.gson.JsonElement;
import java.util.Map;
import java.util.Set;
import lombok.RequiredArgsConstructor;
import org.json.simple.JSONObject;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Transactional
@RequiredArgsConstructor
@Service
public class SaveResourceUseCase {
public class UpdateMemberUseCase {

private final MemberRepository memberRepository;
private final MemberRepository repository;

public Member execute(final MemberResourceUpdateRequest request) {
Long memberId = AuditorHolder.get();
return MemberConverter.from(this.updateResource(memberId, request));
public Member execute(final MemberUpdateRequest request) {

return MemberConverter.from(this.update(AuditorHolder.get(), request));
}

private MemberEntity updateResource(
final Long memberId, final MemberResourceUpdateRequest request) {
return memberRepository
private MemberEntity update(final Long memberId, final MemberUpdateRequest request) {
return repository
.findByIdAndStatus(memberId, MemberStatus.REGULAR)
.map(it -> it.updateResource(this.updateResource(it.getResource(), request.getResource())))
.map(
it ->
it.update(
request.getName(),
request.isNotificationConsent(),
this.parseSource(it.getResource(), request.getResource())))
.orElseThrow(() -> new ResourceNotFoundException("member.not.found"));
}

private String updateResource(String resource, JSONObject newResource) {
private String parseSource(final String resource, final JSONObject newResource) {
JSONObject asis = MemberInfoJsonConverter.from(resource);

Set<Map.Entry<String, JsonElement>> element = newResource.entrySet();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@
import com.depromeet.threedays.front.support.ApiResponseGenerator;
import com.depromeet.threedays.front.support.MessageCode;
import com.depromeet.threedays.front.web.request.client.DeleteClientRequest;
import com.depromeet.threedays.front.web.request.member.MemberNameUpdateRequest;
import com.depromeet.threedays.front.web.request.member.MemberNotificationConsentUpdateRequest;
import com.depromeet.threedays.front.web.request.member.MemberResourceUpdateRequest;
import com.depromeet.threedays.front.web.request.member.SignMemberRequest;
import com.depromeet.threedays.front.web.request.member.*;
import com.depromeet.threedays.front.web.response.SaveMemberResponse;
import javax.validation.Valid;
import lombok.RequiredArgsConstructor;
Expand All @@ -29,9 +26,7 @@
public class MemberController {

private final SignMemberUseCaseFacade signUseCase;
private final SaveNameUseCase saveNameUseCase;
private final SaveConsentUseCase saveConsentUseCase;
private final SaveResourceUseCase saveResourceUseCase;
private final UpdateMemberUseCase updateMemberUsecase;
private final GetTokenUseCase getTokenUseCase;
private final DeleteMemberUseCase deleteUseCase;
private final DeleteClientUseCase deleteClientUseCase;
Expand All @@ -50,25 +45,10 @@ public ApiResponse<ApiResponse.SuccessBody<SaveMemberResponse>> add(
}
}

/** 닉네임 변경 */
@PatchMapping("/name")
public ApiResponse<ApiResponse.SuccessBody<Member>> updateName(
@RequestBody @Valid MemberNameUpdateRequest request) {
return ApiResponseGenerator.success(saveNameUseCase.execute(request), HttpStatus.OK);
}

/** 알림 수신 설정 변경 */
@PatchMapping("/consents")
public ApiResponse<ApiResponse.SuccessBody<Member>> updateConsent(
@RequestBody @Valid MemberNotificationConsentUpdateRequest request) {
return ApiResponseGenerator.success(saveConsentUseCase.execute(request), HttpStatus.OK);
}

/** 사용자 정보 업데이트 */
@PatchMapping("/resources")
public ApiResponse<ApiResponse.SuccessBody<Member>> updateResource(
@RequestBody @Valid MemberResourceUpdateRequest request) {
return ApiResponseGenerator.success(saveResourceUseCase.execute(request), HttpStatus.OK);
@PatchMapping("/me")
public ApiResponse<ApiResponse.SuccessBody<Member>> updateMember(
@RequestBody @Valid MemberUpdateRequest request) {
return ApiResponseGenerator.success(updateMemberUsecase.execute(request), HttpStatus.OK);
}

/** 토근 발급 */
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.depromeet.threedays.front.web.request.member;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import org.json.simple.JSONObject;

@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder(toBuilder = true)
public class MemberUpdateRequest {

private String name;
private boolean notificationConsent;
private JSONObject resource;
}
Loading