From 24543ab8dff861e1e42a359774a3c55facba1d8a Mon Sep 17 00:00:00 2001 From: loustler Date: Sun, 28 Aug 2016 15:55:18 +0900 Subject: [PATCH 1/7] =?UTF-8?q?chore:=20member=20pakcage=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - member package rule에 따라 변경 Reference #18 --- src/main/java/io/codechobo/event/domain/Joining.java | 2 +- src/main/java/io/codechobo/member/.gitkeep | 0 src/main/java/io/codechobo/member/domain/.gitkeep | 0 src/main/java/io/codechobo/member/infrastructure/.gitkeep | 0 src/main/java/io/codechobo/member/interfaces/.gitkeep | 0 src/main/java/io/codechobo/member/repository/.gitkeep | 0 .../member/{domain => }/repository/MemberRepository.java | 4 ++-- .../member/{domain => }/repository/SocialRepository.java | 2 +- src/test/java/io/codechobo/member/MemberIntegrationTest.java | 3 +-- src/test/java/io/codechobo/member/SocialIntegrationTest.java | 5 ++--- 10 files changed, 7 insertions(+), 9 deletions(-) create mode 100644 src/main/java/io/codechobo/member/.gitkeep create mode 100644 src/main/java/io/codechobo/member/domain/.gitkeep create mode 100644 src/main/java/io/codechobo/member/infrastructure/.gitkeep create mode 100644 src/main/java/io/codechobo/member/interfaces/.gitkeep create mode 100644 src/main/java/io/codechobo/member/repository/.gitkeep rename src/main/java/io/codechobo/member/{domain => }/repository/MemberRepository.java (78%) rename src/main/java/io/codechobo/member/{domain => }/repository/SocialRepository.java (82%) diff --git a/src/main/java/io/codechobo/event/domain/Joining.java b/src/main/java/io/codechobo/event/domain/Joining.java index 3292991..245ef3d 100644 --- a/src/main/java/io/codechobo/event/domain/Joining.java +++ b/src/main/java/io/codechobo/event/domain/Joining.java @@ -1,6 +1,6 @@ package io.codechobo.event.domain; -import io.codechobo.member.domain.Member; +import io.codechobo.member.Member; import lombok.Getter; import javax.persistence.Column; diff --git a/src/main/java/io/codechobo/member/.gitkeep b/src/main/java/io/codechobo/member/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/io/codechobo/member/domain/.gitkeep b/src/main/java/io/codechobo/member/domain/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/io/codechobo/member/infrastructure/.gitkeep b/src/main/java/io/codechobo/member/infrastructure/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/io/codechobo/member/interfaces/.gitkeep b/src/main/java/io/codechobo/member/interfaces/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/io/codechobo/member/repository/.gitkeep b/src/main/java/io/codechobo/member/repository/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/io/codechobo/member/domain/repository/MemberRepository.java b/src/main/java/io/codechobo/member/repository/MemberRepository.java similarity index 78% rename from src/main/java/io/codechobo/member/domain/repository/MemberRepository.java rename to src/main/java/io/codechobo/member/repository/MemberRepository.java index 2caa2f3..61154c4 100644 --- a/src/main/java/io/codechobo/member/domain/repository/MemberRepository.java +++ b/src/main/java/io/codechobo/member/repository/MemberRepository.java @@ -1,6 +1,6 @@ -package io.codechobo.member.domain.repository; +package io.codechobo.member.repository; -import io.codechobo.member.domain.Member; +import io.codechobo.member.Member; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/io/codechobo/member/domain/repository/SocialRepository.java b/src/main/java/io/codechobo/member/repository/SocialRepository.java similarity index 82% rename from src/main/java/io/codechobo/member/domain/repository/SocialRepository.java rename to src/main/java/io/codechobo/member/repository/SocialRepository.java index 0eb4677..aaebe05 100644 --- a/src/main/java/io/codechobo/member/domain/repository/SocialRepository.java +++ b/src/main/java/io/codechobo/member/repository/SocialRepository.java @@ -1,4 +1,4 @@ -package io.codechobo.member.domain.repository; +package io.codechobo.member.repository; import io.codechobo.member.domain.Social; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/test/java/io/codechobo/member/MemberIntegrationTest.java b/src/test/java/io/codechobo/member/MemberIntegrationTest.java index ca71e48..65f1603 100644 --- a/src/test/java/io/codechobo/member/MemberIntegrationTest.java +++ b/src/test/java/io/codechobo/member/MemberIntegrationTest.java @@ -1,8 +1,7 @@ package io.codechobo.member; -import io.codechobo.member.domain.Member; import io.codechobo.member.domain.PointPerLevel; -import io.codechobo.member.domain.repository.MemberRepository; +import io.codechobo.member.repository.MemberRepository; import org.junit.After; import org.junit.Before; import org.junit.Test; diff --git a/src/test/java/io/codechobo/member/SocialIntegrationTest.java b/src/test/java/io/codechobo/member/SocialIntegrationTest.java index 0cf7558..c855f0f 100644 --- a/src/test/java/io/codechobo/member/SocialIntegrationTest.java +++ b/src/test/java/io/codechobo/member/SocialIntegrationTest.java @@ -1,9 +1,8 @@ package io.codechobo.member; -import io.codechobo.member.domain.Member; import io.codechobo.member.domain.Social; -import io.codechobo.member.domain.repository.MemberRepository; -import io.codechobo.member.domain.repository.SocialRepository; +import io.codechobo.member.repository.MemberRepository; +import io.codechobo.member.repository.SocialRepository; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; From 363f00c68733a395071d27e3afb1c5b3f0f059f2 Mon Sep 17 00:00:00 2001 From: loustler Date: Sun, 28 Aug 2016 22:29:20 +0900 Subject: [PATCH 2/7] =?UTF-8?q?chore:=20member=20package=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=202st?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - JpaRepository domain package안으로 - application 누락 추가 --- .../io/codechobo/member/{repository => application}/.gitkeep | 0 src/main/java/io/codechobo/member/domain/repository/.gitkeep | 0 .../member/{ => domain}/repository/MemberRepository.java | 2 +- .../member/{ => domain}/repository/SocialRepository.java | 2 +- src/test/java/io/codechobo/member/MemberIntegrationTest.java | 2 +- src/test/java/io/codechobo/member/SocialIntegrationTest.java | 4 ++-- 6 files changed, 5 insertions(+), 5 deletions(-) rename src/main/java/io/codechobo/member/{repository => application}/.gitkeep (100%) create mode 100644 src/main/java/io/codechobo/member/domain/repository/.gitkeep rename src/main/java/io/codechobo/member/{ => domain}/repository/MemberRepository.java (88%) rename src/main/java/io/codechobo/member/{ => domain}/repository/SocialRepository.java (82%) diff --git a/src/main/java/io/codechobo/member/repository/.gitkeep b/src/main/java/io/codechobo/member/application/.gitkeep similarity index 100% rename from src/main/java/io/codechobo/member/repository/.gitkeep rename to src/main/java/io/codechobo/member/application/.gitkeep diff --git a/src/main/java/io/codechobo/member/domain/repository/.gitkeep b/src/main/java/io/codechobo/member/domain/repository/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/io/codechobo/member/repository/MemberRepository.java b/src/main/java/io/codechobo/member/domain/repository/MemberRepository.java similarity index 88% rename from src/main/java/io/codechobo/member/repository/MemberRepository.java rename to src/main/java/io/codechobo/member/domain/repository/MemberRepository.java index 61154c4..68304d6 100644 --- a/src/main/java/io/codechobo/member/repository/MemberRepository.java +++ b/src/main/java/io/codechobo/member/domain/repository/MemberRepository.java @@ -1,4 +1,4 @@ -package io.codechobo.member.repository; +package io.codechobo.member.domain.repository; import io.codechobo.member.Member; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/main/java/io/codechobo/member/repository/SocialRepository.java b/src/main/java/io/codechobo/member/domain/repository/SocialRepository.java similarity index 82% rename from src/main/java/io/codechobo/member/repository/SocialRepository.java rename to src/main/java/io/codechobo/member/domain/repository/SocialRepository.java index aaebe05..0eb4677 100644 --- a/src/main/java/io/codechobo/member/repository/SocialRepository.java +++ b/src/main/java/io/codechobo/member/domain/repository/SocialRepository.java @@ -1,4 +1,4 @@ -package io.codechobo.member.repository; +package io.codechobo.member.domain.repository; import io.codechobo.member.domain.Social; import org.springframework.data.jpa.repository.JpaRepository; diff --git a/src/test/java/io/codechobo/member/MemberIntegrationTest.java b/src/test/java/io/codechobo/member/MemberIntegrationTest.java index 65f1603..471233f 100644 --- a/src/test/java/io/codechobo/member/MemberIntegrationTest.java +++ b/src/test/java/io/codechobo/member/MemberIntegrationTest.java @@ -1,7 +1,7 @@ package io.codechobo.member; import io.codechobo.member.domain.PointPerLevel; -import io.codechobo.member.repository.MemberRepository; +import io.codechobo.member.domain.repository.MemberRepository; import org.junit.After; import org.junit.Before; import org.junit.Test; diff --git a/src/test/java/io/codechobo/member/SocialIntegrationTest.java b/src/test/java/io/codechobo/member/SocialIntegrationTest.java index c855f0f..e04a22e 100644 --- a/src/test/java/io/codechobo/member/SocialIntegrationTest.java +++ b/src/test/java/io/codechobo/member/SocialIntegrationTest.java @@ -1,8 +1,8 @@ package io.codechobo.member; import io.codechobo.member.domain.Social; -import io.codechobo.member.repository.MemberRepository; -import io.codechobo.member.repository.SocialRepository; +import io.codechobo.member.domain.repository.MemberRepository; +import io.codechobo.member.domain.repository.SocialRepository; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; From 1fb698177eb22df5b6ac67ea88b32abea9535475 Mon Sep 17 00:00:00 2001 From: loustler Date: Mon, 29 Aug 2016 09:40:44 +0900 Subject: [PATCH 3/7] fix: member integration test error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - member Integraton test error fix - member package 변경 후 test에 반영 안된 것 반영 --- .../io/codechobo/member/domain/repository/MemberRepository.java | 2 +- src/test/java/io/codechobo/member/MemberIntegrationTest.java | 1 + src/test/java/io/codechobo/member/SocialIntegrationTest.java | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/codechobo/member/domain/repository/MemberRepository.java b/src/main/java/io/codechobo/member/domain/repository/MemberRepository.java index 68304d6..2caa2f3 100644 --- a/src/main/java/io/codechobo/member/domain/repository/MemberRepository.java +++ b/src/main/java/io/codechobo/member/domain/repository/MemberRepository.java @@ -1,6 +1,6 @@ package io.codechobo.member.domain.repository; -import io.codechobo.member.Member; +import io.codechobo.member.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/test/java/io/codechobo/member/MemberIntegrationTest.java b/src/test/java/io/codechobo/member/MemberIntegrationTest.java index 471233f..ca71e48 100644 --- a/src/test/java/io/codechobo/member/MemberIntegrationTest.java +++ b/src/test/java/io/codechobo/member/MemberIntegrationTest.java @@ -1,5 +1,6 @@ package io.codechobo.member; +import io.codechobo.member.domain.Member; import io.codechobo.member.domain.PointPerLevel; import io.codechobo.member.domain.repository.MemberRepository; import org.junit.After; diff --git a/src/test/java/io/codechobo/member/SocialIntegrationTest.java b/src/test/java/io/codechobo/member/SocialIntegrationTest.java index e04a22e..0cf7558 100644 --- a/src/test/java/io/codechobo/member/SocialIntegrationTest.java +++ b/src/test/java/io/codechobo/member/SocialIntegrationTest.java @@ -1,5 +1,6 @@ package io.codechobo.member; +import io.codechobo.member.domain.Member; import io.codechobo.member.domain.Social; import io.codechobo.member.domain.repository.MemberRepository; import io.codechobo.member.domain.repository.SocialRepository; From 806dde2bfca59c97bf20221edcd386a432967b39 Mon Sep 17 00:00:00 2001 From: loustler Date: Mon, 29 Aug 2016 20:29:24 +0900 Subject: [PATCH 4/7] =?UTF-8?q?fix=20:=20member=20package=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=EC=82=AC=ED=95=AD=20Event=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - member Package 변경사항 반영안된 것 Event에 반영 - Joining에 Member package 변경 --- src/main/java/io/codechobo/event/domain/Joining.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/codechobo/event/domain/Joining.java b/src/main/java/io/codechobo/event/domain/Joining.java index 245ef3d..3292991 100644 --- a/src/main/java/io/codechobo/event/domain/Joining.java +++ b/src/main/java/io/codechobo/event/domain/Joining.java @@ -1,6 +1,6 @@ package io.codechobo.event.domain; -import io.codechobo.member.Member; +import io.codechobo.member.domain.Member; import lombok.Getter; import javax.persistence.Column; From 588e88a6246562bf8b27508c75b56c7fe7803cbf Mon Sep 17 00:00:00 2001 From: loustler Date: Mon, 29 Aug 2016 20:44:11 +0900 Subject: [PATCH 5/7] feature: member api first commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기본 api 작성 - second commit시 test까지 완료하여 작성 - Event part 수정을 위해 temp commit성 Reference #29 --- .../io/codechobo/member/domain/Member.java | 20 +-- .../codechobo/member/domain/support/.gitkeep | 0 .../member/domain/support/MemberDto.java | 32 +++++ .../interfaces/api/MemberRestController.java | 50 ++++++++ .../member/MemberIntegrationTest.java | 117 ------------------ .../member/domain/MemberIntegrationTest.java | 0 .../{ => domain}/SocialIntegrationTest.java | 22 +++- .../MemberRestControllerIntegrationTest.java | 27 ++++ 8 files changed, 137 insertions(+), 131 deletions(-) create mode 100644 src/main/java/io/codechobo/member/domain/support/.gitkeep create mode 100644 src/main/java/io/codechobo/member/domain/support/MemberDto.java create mode 100644 src/main/java/io/codechobo/member/interfaces/api/MemberRestController.java delete mode 100644 src/test/java/io/codechobo/member/MemberIntegrationTest.java create mode 100644 src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java rename src/test/java/io/codechobo/member/{ => domain}/SocialIntegrationTest.java (79%) create mode 100644 src/test/java/io/codechobo/member/domain/intefaces/MemberRestControllerIntegrationTest.java diff --git a/src/main/java/io/codechobo/member/domain/Member.java b/src/main/java/io/codechobo/member/domain/Member.java index 03e3ebd..5ff5747 100644 --- a/src/main/java/io/codechobo/member/domain/Member.java +++ b/src/main/java/io/codechobo/member/domain/Member.java @@ -1,6 +1,7 @@ package io.codechobo.member.domain; +import io.codechobo.member.domain.support.MemberDto; import lombok.Getter; import lombok.Setter; @@ -66,19 +67,18 @@ public class Member { /* * social은 member에 종속적이므로 cascade */ - @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) - @JoinColumn(name = "SOCIAL_SEQ") + @OneToMany(fetch = FetchType.EAGER, mappedBy = "SOCIAL_SEQ") private List socials; - public Member(String id, String password, String nickName, String email, Integer point, ArrayList socials) { - this.id = id; - this.password = password; - this.nickName = nickName; - this.email = email; - this.point = point; + public Member(MemberDto memberDto) { + this.id = memberDto.getId(); + this.password = memberDto.getPassword(); + this.nickName = memberDto.getNickName(); + this.email = memberDto.getEmail(); + this.point = memberDto.getPoint(); this.level = PointPerLevel.valueOf(this.point); - this.socials = socials; - this.registrationDate = new Date(); + this.registrationDate = memberDto.getRegiDate(); + this.socials = memberDto.getSocials(); } public void increasePoint() { diff --git a/src/main/java/io/codechobo/member/domain/support/.gitkeep b/src/main/java/io/codechobo/member/domain/support/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main/java/io/codechobo/member/domain/support/MemberDto.java b/src/main/java/io/codechobo/member/domain/support/MemberDto.java new file mode 100644 index 0000000..61d154b --- /dev/null +++ b/src/main/java/io/codechobo/member/domain/support/MemberDto.java @@ -0,0 +1,32 @@ +package io.codechobo.member.domain.support; + +import io.codechobo.member.domain.PointPerLevel; +import io.codechobo.member.domain.Social; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.Date; +import java.util.List; + +/** + * @author Loustler + * @since 8/29/16 + */ +@Setter +@Getter +@NoArgsConstructor +public class MemberDto { + + private Long sequence; + private String id; + private String password; + private String email; + private String nickName; + private Date regiDate; + private Integer point; + private PointPerLevel level; + private List socials; + +} diff --git a/src/main/java/io/codechobo/member/interfaces/api/MemberRestController.java b/src/main/java/io/codechobo/member/interfaces/api/MemberRestController.java new file mode 100644 index 0000000..019e770 --- /dev/null +++ b/src/main/java/io/codechobo/member/interfaces/api/MemberRestController.java @@ -0,0 +1,50 @@ +package io.codechobo.member.interfaces.api; + +import io.codechobo.member.domain.Member; +import io.codechobo.member.domain.repository.MemberRepository; +import io.codechobo.member.domain.support.MemberDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author Loustler + * @since 8/29/16 + */ +@RestController +@RequestMapping("/api/members") +public class MemberRestController { + @Autowired private MemberRepository memberRepository; + + @RequestMapping(value = "/", method = RequestMethod.POST) + public ResponseEntity save(@RequestBody MemberDto member) { + return new ResponseEntity(this.memberRepository.save(new Member(member)), HttpStatus.OK); + } + + /* + * User infomation 처리 + * Spring Security? + * @changwha 요청 + */ + @RequestMapping(value = "/{seq}", method = RequestMethod.POST) + public ResponseEntity show() { + return new ResponseEntity(new Object(), HttpStatus.OK); + } + + @RequestMapping(value = "/list", method = RequestMethod.POST) + public ResponseEntity list() { + return new ResponseEntity(this.memberRepository.findAll(), HttpStatus.OK); + } + + @RequestMapping(value = "/{seq}", method = RequestMethod.PUT) + public ResponseEntity update(@PathVariable Long seq, @RequestBody MemberDto memberDto) { + return new ResponseEntity(this.memberRepository.save(new Member(memberDto)), HttpStatus.OK); + } + + +} diff --git a/src/test/java/io/codechobo/member/MemberIntegrationTest.java b/src/test/java/io/codechobo/member/MemberIntegrationTest.java deleted file mode 100644 index ca71e48..0000000 --- a/src/test/java/io/codechobo/member/MemberIntegrationTest.java +++ /dev/null @@ -1,117 +0,0 @@ -package io.codechobo.member; - -import io.codechobo.member.domain.Member; -import io.codechobo.member.domain.PointPerLevel; -import io.codechobo.member.domain.repository.MemberRepository; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; -import org.springframework.test.context.ActiveProfiles; -import org.springframework.test.context.junit4.SpringRunner; - -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; - -@RunWith(SpringRunner.class) -@DataJpaTest -@ActiveProfiles(value = "test") -public class MemberIntegrationTest { - @Autowired - MemberRepository memberRepository; - - private Member member; - - @Before - public void setUp() { - this.member = this.memberFactory(); - } - - @After - public void cleanUp() { - memberRepository.deleteAll(); - } - - @Test - public void 설정확인_config_test() { - System.out.println(this.member); - } - - @Test - public void 멤버생성_create_new_member() { - // given - Member member = new Member("test", "password", "loustler2", "dev.loustler@gmail.com", new Integer(0), null); - - //when - Member saveMember = memberRepository.save(member); - - // then - assertThat(saveMember.getLevel(), is(PointPerLevel.BASIC)); - assertNotNull(saveMember.getSeq()); - System.out.println(saveMember); - } - - @Test - public void 멤버업데이트_update_member() { - // given - member.setNickName("users"); - - // when - memberRepository.save(member); - Member afterMember = memberRepository.findByNickName("users"); - - // then - assertThat(afterMember.getNickName(), is("users")); - } - - @Test - public void 멤버찾기_find_member() { - // given & when - Member findMember = memberRepository.findByNickName("anonymouse"); - Member findMember2 = memberRepository.findByEmail(this.member.getEmail()); - - // then - assertNotNull(findMember); - assertNotNull(findMember2); - assertThat(findMember.getNickName(), is("anonymouse")); - assertThat(findMember2.getEmail(), is(this.member.getEmail())); - - } - - @Test - public void 멤버레벨업_level_up_member() { - // given - Member newMember = new Member("any2", "password", "anonymouse2", "email2@gmail.com", new Integer(500), null); - - // when - memberRepository.save(newMember); - - // then - Member findMember = memberRepository.findByNickName(newMember.getNickName()); - assertNotNull(findMember); - assertThat(findMember.getLevel(), is(PointPerLevel.VVIP)); - } - - @Test - public void 예매등의행위로_포인트증가_increase_point() { - this.member.increasePoint(); - this.member = memberRepository.save(this.member); - - assertThat(this.member.getPoint(), is(1)); - - this.member.increasePoint(); - this.memberRepository.save(this.member); - - this.member = this.memberRepository.findOne(this.member.getSeq()); - - assertThat(this.member.getPoint(), is(2)); - } - - private Member memberFactory() { - Member member = new Member("any1", "password", "anonymouse", "email@gmail.com", new Integer(0), null); - return memberRepository.save(member); - } -} diff --git a/src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java b/src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java new file mode 100644 index 0000000..e69de29 diff --git a/src/test/java/io/codechobo/member/SocialIntegrationTest.java b/src/test/java/io/codechobo/member/domain/SocialIntegrationTest.java similarity index 79% rename from src/test/java/io/codechobo/member/SocialIntegrationTest.java rename to src/test/java/io/codechobo/member/domain/SocialIntegrationTest.java index 0cf7558..291daa1 100644 --- a/src/test/java/io/codechobo/member/SocialIntegrationTest.java +++ b/src/test/java/io/codechobo/member/domain/SocialIntegrationTest.java @@ -1,9 +1,10 @@ -package io.codechobo.member; +package io.codechobo.member.domain; import io.codechobo.member.domain.Member; import io.codechobo.member.domain.Social; import io.codechobo.member.domain.repository.MemberRepository; import io.codechobo.member.domain.repository.SocialRepository; +import io.codechobo.member.domain.support.MemberDto; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -74,7 +75,14 @@ public void setUp() { public void 소셜가져오기_social_find() { // given - Member newMember = new Member("id1", "password2", "nickName3", "email@3.com", new Integer(0), new ArrayList<>()); + MemberDto memberDto = new MemberDto(); + memberDto.setId("id1"); + memberDto.setPassword("password2"); + memberDto.setSocials(null); + memberDto.setPoint(new Integer(0)); + memberDto.setEmail("email@3.com"); + memberDto.setNickName("nickName3"); + Member newMember = new Member(memberDto); this.memberRepository.save(newMember); @@ -95,8 +103,14 @@ public void setUp() { } private Member memberFactory() { - Member member = new Member("anyone", "password", "anonoymouse", "email@provider.com", new Integer(0), null); - return memberRepository.save(member); + MemberDto memberDto = new MemberDto(); + memberDto.setId("anyone"); + memberDto.setPassword("password"); + memberDto.setNickName("anonoymouse"); + memberDto.setEmail("email@provider.com"); + memberDto.setPoint(new Integer(0)); + memberDto.setSocials(null); + return memberRepository.save(new Member(memberDto)); } private Social socialFactory() { diff --git a/src/test/java/io/codechobo/member/domain/intefaces/MemberRestControllerIntegrationTest.java b/src/test/java/io/codechobo/member/domain/intefaces/MemberRestControllerIntegrationTest.java new file mode 100644 index 0000000..8bee02f --- /dev/null +++ b/src/test/java/io/codechobo/member/domain/intefaces/MemberRestControllerIntegrationTest.java @@ -0,0 +1,27 @@ +package io.codechobo.member.domain.intefaces; + +import io.codechobo.member.interfaces.api.MemberRestController; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +/** + * @author Loustler + * @since 8/29/16 + */ +@RunWith(SpringRunner.class) +@DataJpaTest +@ActiveProfiles(value = "test") +public class MemberRestControllerIntegrationTest { + + @Autowired + MemberRestController memberRestController; + + @Test + public void member_save_rest_controller_test() { + + } +} From faef4d0e723889f5b7ca4be1d35672a3be8678df Mon Sep 17 00:00:00 2001 From: loustler Date: Sun, 4 Sep 2016 10:47:49 +0900 Subject: [PATCH 6/7] feature(member) : member api second commit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - controller 추가 - DTO 추가 - template commit (cause : test fail) --- .../io/codechobo/member/domain/Member.java | 2 +- .../io/codechobo/member/domain/Social.java | 2 +- .../interfaces/api/MemberRestController.java | 21 +-- .../member/domain/MemberIntegrationTest.java | 137 ++++++++++++++++++ .../member/domain/SocialIntegrationTest.java | 5 +- .../io/codechobo/member/interfaces/.gitkeep | 0 .../MemberRestControllerIntegrationTest.java | 34 +++++ 7 files changed, 183 insertions(+), 18 deletions(-) create mode 100644 src/test/java/io/codechobo/member/interfaces/.gitkeep create mode 100644 src/test/java/io/codechobo/member/interfaces/api/MemberRestControllerIntegrationTest.java diff --git a/src/main/java/io/codechobo/member/domain/Member.java b/src/main/java/io/codechobo/member/domain/Member.java index 5ff5747..979c05c 100644 --- a/src/main/java/io/codechobo/member/domain/Member.java +++ b/src/main/java/io/codechobo/member/domain/Member.java @@ -67,7 +67,7 @@ public class Member { /* * social은 member에 종속적이므로 cascade */ - @OneToMany(fetch = FetchType.EAGER, mappedBy = "SOCIAL_SEQ") + @OneToMany(fetch = FetchType.EAGER, mappedBy = "member") private List socials; public Member(MemberDto memberDto) { diff --git a/src/main/java/io/codechobo/member/domain/Social.java b/src/main/java/io/codechobo/member/domain/Social.java index e350b31..966b890 100644 --- a/src/main/java/io/codechobo/member/domain/Social.java +++ b/src/main/java/io/codechobo/member/domain/Social.java @@ -34,7 +34,7 @@ public class Social { @Column(name = "SOCIAL_ACCESS_TOKEN") private String token; // accessToken 등 token정보 - @ManyToOne(optional = false, fetch = FetchType.LAZY) + @ManyToOne(optional = false, fetch = FetchType.EAGER) @JoinColumn(name = "MEMBER_SEQ") private Member member; diff --git a/src/main/java/io/codechobo/member/interfaces/api/MemberRestController.java b/src/main/java/io/codechobo/member/interfaces/api/MemberRestController.java index 019e770..80e81fd 100644 --- a/src/main/java/io/codechobo/member/interfaces/api/MemberRestController.java +++ b/src/main/java/io/codechobo/member/interfaces/api/MemberRestController.java @@ -17,33 +17,28 @@ * @since 8/29/16 */ @RestController -@RequestMapping("/api/members") +@RequestMapping("/api/member") public class MemberRestController { @Autowired private MemberRepository memberRepository; - @RequestMapping(value = "/", method = RequestMethod.POST) + @RequestMapping(value = {"","/"}, method = RequestMethod.POST) public ResponseEntity save(@RequestBody MemberDto member) { - return new ResponseEntity(this.memberRepository.save(new Member(member)), HttpStatus.OK); + return new ResponseEntity<>(this.memberRepository.save(new Member(member)), HttpStatus.CREATED); } - /* - * User infomation 처리 - * Spring Security? - * @changwha 요청 - */ @RequestMapping(value = "/{seq}", method = RequestMethod.POST) - public ResponseEntity show() { - return new ResponseEntity(new Object(), HttpStatus.OK); + public ResponseEntity show(@PathVariable Long seq) { + return new ResponseEntity<>(memberRepository.findOne(seq), HttpStatus.OK); } - @RequestMapping(value = "/list", method = RequestMethod.POST) + @RequestMapping(value = "/list", method = RequestMethod.GET) public ResponseEntity list() { - return new ResponseEntity(this.memberRepository.findAll(), HttpStatus.OK); + return new ResponseEntity<>(this.memberRepository.findAll(), HttpStatus.OK); } @RequestMapping(value = "/{seq}", method = RequestMethod.PUT) public ResponseEntity update(@PathVariable Long seq, @RequestBody MemberDto memberDto) { - return new ResponseEntity(this.memberRepository.save(new Member(memberDto)), HttpStatus.OK); + return new ResponseEntity<>(this.memberRepository.save(new Member(memberDto)), HttpStatus.OK); } diff --git a/src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java b/src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java index e69de29..452f84c 100644 --- a/src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java +++ b/src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java @@ -0,0 +1,137 @@ +package io.codechobo.member.domain; + +import io.codechobo.member.domain.repository.MemberRepository; +import io.codechobo.member.domain.support.MemberDto; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; + +@RunWith(SpringRunner.class) +@DataJpaTest +@ActiveProfiles(profiles = "test") +public class MemberIntegrationTest { + @Autowired + MemberRepository memberRepository; + + private Member member; + + @Before + public void setUp() { + this.member = this.memberFactory(); + } + + @After + public void cleanUp() { + memberRepository.deleteAll(); + } + + @Test + public void 설정확인_config_test() { + System.out.println(this.member); + } + + @Test + public void 멤버생성_create_new_member() { + // given + MemberDto memberDto = new MemberDto(); + memberDto.setId("test"); + memberDto.setPassword("password"); + memberDto.setNickName("loustler2"); + memberDto.setEmail("dev.loustler@gmail.com"); + memberDto.setPoint(new Integer(0)); + memberDto.setSocials(null); + + //when + Member saveMember = memberRepository.save(new Member(memberDto)); + + // then + assertThat(saveMember.getLevel(), is(PointPerLevel.BASIC)); + assertNotNull(saveMember.getSeq()); + System.out.println(saveMember); + } + + @Test + public void 멤버업데이트_update_member() { + // given + member.setNickName("users"); + + // when + memberRepository.save(member); + Member afterMember = memberRepository.findByNickName("users"); + + // then + assertThat(afterMember.getNickName(), is("users")); + } + + @Test + public void 멤버찾기_find_member() { + // given & when + Member findMember = memberRepository.findByNickName("anonymouse"); + Member findMember2 = memberRepository.findByEmail(this.member.getEmail()); + + // then + assertNotNull(findMember); + assertNotNull(findMember2); + assertThat(findMember.getNickName(), is("anonymouse")); + assertThat(findMember2.getEmail(), is(this.member.getEmail())); + + } + + @Test + public void 멤버레벨업_level_up_member() { + // given + MemberDto memberDto = new MemberDto(); + memberDto.setId("any2"); + memberDto.setPassword("password"); + memberDto.setNickName("anonymouse2"); + memberDto.setEmail("email2@gmail.com"); + memberDto.setPoint(new Integer(500)); + memberDto.setSocials(null); + + Member newMember = new Member(memberDto); + + // when + memberRepository.save(newMember); + + // then + Member findMember = memberRepository.findByNickName(newMember.getNickName()); + assertNotNull(findMember); + assertThat(findMember.getLevel(), is(PointPerLevel.VVIP)); + } + + @Test + public void 예매등의행위로_포인트증가_increase_point() { + this.member.increasePoint(); + this.member = memberRepository.save(this.member); + + assertThat(this.member.getPoint(), is(1)); + + this.member.increasePoint(); + this.memberRepository.save(this.member); + + this.member = this.memberRepository.findOne(this.member.getSeq()); + + assertThat(this.member.getPoint(), is(2)); + } + + private Member memberFactory() { + MemberDto memberDto = new MemberDto(); + memberDto.setId("any1"); + memberDto.setPassword("password"); + memberDto.setNickName("anonymouse"); + memberDto.setEmail("email@gmail.com"); + memberDto.setPoint(new Integer(0)); + memberDto.setSocials(null); + + return memberRepository.save(new Member(memberDto)); + } +} \ No newline at end of file diff --git a/src/test/java/io/codechobo/member/domain/SocialIntegrationTest.java b/src/test/java/io/codechobo/member/domain/SocialIntegrationTest.java index 291daa1..a23efe9 100644 --- a/src/test/java/io/codechobo/member/domain/SocialIntegrationTest.java +++ b/src/test/java/io/codechobo/member/domain/SocialIntegrationTest.java @@ -1,7 +1,5 @@ package io.codechobo.member.domain; -import io.codechobo.member.domain.Member; -import io.codechobo.member.domain.Social; import io.codechobo.member.domain.repository.MemberRepository; import io.codechobo.member.domain.repository.SocialRepository; import io.codechobo.member.domain.support.MemberDto; @@ -23,7 +21,7 @@ @RunWith(SpringRunner.class) @DataJpaTest -@ActiveProfiles(value = "test") +@ActiveProfiles(profiles = "test") public class SocialIntegrationTest { @Autowired private SocialRepository socialRepository; @@ -110,6 +108,7 @@ private Member memberFactory() { memberDto.setEmail("email@provider.com"); memberDto.setPoint(new Integer(0)); memberDto.setSocials(null); + return memberRepository.save(new Member(memberDto)); } diff --git a/src/test/java/io/codechobo/member/interfaces/.gitkeep b/src/test/java/io/codechobo/member/interfaces/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/test/java/io/codechobo/member/interfaces/api/MemberRestControllerIntegrationTest.java b/src/test/java/io/codechobo/member/interfaces/api/MemberRestControllerIntegrationTest.java new file mode 100644 index 0000000..9201b9a --- /dev/null +++ b/src/test/java/io/codechobo/member/interfaces/api/MemberRestControllerIntegrationTest.java @@ -0,0 +1,34 @@ +package io.codechobo.member.interfaces.api; + +import io.codechobo.member.domain.repository.MemberRepository; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.web.context.WebApplicationContext; + +/** + * @author Loustler + * @since 8/29/16 + */ +@RunWith(SpringRunner.class) +@SpringBootTest +@WebAppConfiguration +@ActiveProfiles(value = "test") +public class MemberRestControllerIntegrationTest { + + @Autowired private WebApplicationContext webApplicationContext; + private MockMvc mockMvc; + + @Autowired private MemberRepository memberRepository; + + + @Test + public void member_save_rest_controller_test() { + + } +} From 6389cb1e69084a5d4288cbe4ac0c168f8d633baa Mon Sep 17 00:00:00 2001 From: loustler Date: Tue, 20 Sep 2016 21:26:23 +0900 Subject: [PATCH 7/7] fix(member) : bug issue tracking fix #34 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기본 생성자 추가() - Point Increase 삭제 (@devsejong님) bug tracking issue #34 --- src/main/java/io/codechobo/member/domain/Member.java | 9 ++------- .../codechobo/member/domain/MemberIntegrationTest.java | 2 -- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/codechobo/member/domain/Member.java b/src/main/java/io/codechobo/member/domain/Member.java index 979c05c..4aa65fd 100644 --- a/src/main/java/io/codechobo/member/domain/Member.java +++ b/src/main/java/io/codechobo/member/domain/Member.java @@ -3,9 +3,9 @@ import io.codechobo.member.domain.support.MemberDto; import lombok.Getter; +import lombok.NoArgsConstructor; import lombok.Setter; -import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; @@ -14,12 +14,10 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; -import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.PrePersist; import javax.persistence.Temporal; import javax.persistence.TemporalType; -import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -29,6 +27,7 @@ @Entity @Setter @Getter +@NoArgsConstructor public class Member { @Id @@ -81,10 +80,6 @@ public Member(MemberDto memberDto) { this.socials = memberDto.getSocials(); } - public void increasePoint() { - this.point++; - } - @PrePersist public void tmpLevelPersist() { this.level = PointPerLevel.valueOf(this.point); diff --git a/src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java b/src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java index 452f84c..d0d3dba 100644 --- a/src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java +++ b/src/test/java/io/codechobo/member/domain/MemberIntegrationTest.java @@ -110,12 +110,10 @@ public void cleanUp() { @Test public void 예매등의행위로_포인트증가_increase_point() { - this.member.increasePoint(); this.member = memberRepository.save(this.member); assertThat(this.member.getPoint(), is(1)); - this.member.increasePoint(); this.memberRepository.save(this.member); this.member = this.memberRepository.findOne(this.member.getSeq());