Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Merge 6389cb1 into 59c9079
Browse files Browse the repository at this point in the history
  • Loading branch information
loustler committed Sep 20, 2016
2 parents 59c9079 + 6389cb1 commit 6dd6468
Show file tree
Hide file tree
Showing 10 changed files with 201 additions and 37 deletions.
29 changes: 12 additions & 17 deletions src/main/java/io/codechobo/member/domain/Member.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package io.codechobo.member.domain;


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;
Expand All @@ -13,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;

Expand All @@ -28,6 +27,7 @@
@Entity
@Setter
@Getter
@NoArgsConstructor
public class Member {

@Id
Expand Down Expand Up @@ -66,23 +66,18 @@ public class Member {
/*
* social은 member에 종속적이므로 cascade
*/
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "SOCIAL_SEQ")
@OneToMany(fetch = FetchType.EAGER, mappedBy = "member")
private List<Social> socials;

public Member(String id, String password, String nickName, String email, Integer point, ArrayList<Social> 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();
}

public void increasePoint() {
this.point++;
this.registrationDate = memberDto.getRegiDate();
this.socials = memberDto.getSocials();
}

@PrePersist
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/io/codechobo/member/domain/Social.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
Empty file.
32 changes: 32 additions & 0 deletions src/main/java/io/codechobo/member/domain/support/MemberDto.java
Original file line number Diff line number Diff line change
@@ -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<Social> socials;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
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/member")
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.CREATED);
}

@RequestMapping(value = "/{seq}", method = RequestMethod.POST)
public ResponseEntity show(@PathVariable Long seq) {
return new ResponseEntity<>(memberRepository.findOne(seq), HttpStatus.OK);
}

@RequestMapping(value = "/list", method = RequestMethod.GET)
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);
}


}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package io.codechobo.member;
package io.codechobo.member.domain;

import io.codechobo.member.domain.Member;
import io.codechobo.member.domain.PointPerLevel;
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;
Expand All @@ -18,7 +17,7 @@

@RunWith(SpringRunner.class)
@DataJpaTest
@ActiveProfiles(value = "test")
@ActiveProfiles(profiles = "test")
public class MemberIntegrationTest {
@Autowired
MemberRepository memberRepository;
Expand All @@ -43,10 +42,16 @@ public void cleanUp() {
@Test
public void 멤버생성_create_new_member() {
// given
Member member = new Member("test", "password", "loustler2", "dev.loustler@gmail.com", new Integer(0), null);
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(member);
Member saveMember = memberRepository.save(new Member(memberDto));

// then
assertThat(saveMember.getLevel(), is(PointPerLevel.BASIC));
Expand Down Expand Up @@ -84,7 +89,15 @@ public void cleanUp() {
@Test
public void 멤버레벨업_level_up_member() {
// given
Member newMember = new Member("any2", "password", "anonymouse2", "email2@gmail.com", new Integer(500), null);
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);
Expand All @@ -97,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());
Expand All @@ -111,7 +122,14 @@ public void cleanUp() {
}

private Member memberFactory() {
Member member = new Member("any1", "password", "anonymouse", "email@gmail.com", new Integer(0), null);
return memberRepository.save(member);
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));
}
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
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;
Expand All @@ -22,7 +21,7 @@

@RunWith(SpringRunner.class)
@DataJpaTest
@ActiveProfiles(value = "test")
@ActiveProfiles(profiles = "test")
public class SocialIntegrationTest {
@Autowired
private SocialRepository socialRepository;
Expand Down Expand Up @@ -74,7 +73,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);

Expand All @@ -95,8 +101,15 @@ 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() {
Expand Down
Original file line number Diff line number Diff line change
@@ -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() {

}
}
Empty file.
Original file line number Diff line number Diff line change
@@ -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() {

}
}

0 comments on commit 6dd6468

Please sign in to comment.