diff --git a/application-test/app-test/pom.xml b/application-test/app-test/pom.xml index 2707b0b5..3b1eb24f 100644 --- a/application-test/app-test/pom.xml +++ b/application-test/app-test/pom.xml @@ -21,6 +21,22 @@ org.springframework.boot spring-boot-starter + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-data-jpa + + + com.h2database + h2 + + + org.projectlombok + lombok + org.springframework.boot diff --git a/application-test/app-test/src/main/java/com/example/apptest/Study.java b/application-test/app-test/src/main/java/com/example/apptest/Study.java deleted file mode 100644 index 73b643cb..00000000 --- a/application-test/app-test/src/main/java/com/example/apptest/Study.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.example.apptest; - -public class Study { - - private StudyStatus status; - - private int limit; - - private String name; - - public Study(int limit, String name) { - this.limit = limit; - this.name = name; - } - - public Study() { - } - - public Study(int limit) { - if (limit <= 0) { - throw new IllegalArgumentException("limit은 0보다 커야 한다."); - } - this.limit = limit; - } - - public StudyStatus getStatus() { - return this.status; - } - - public int getLimit() { - return limit; - } - - public String getName() { - return name; - } - - @Override - public String toString() { - return "Study{" + - "status=" + status + - ", limit=" + limit + - ", name='" + name + '\'' + - '}'; - } -} diff --git a/application-test/app-test/src/main/java/com/example/apptest/StudyStatus.java b/application-test/app-test/src/main/java/com/example/apptest/StudyStatus.java deleted file mode 100644 index 48af3e3d..00000000 --- a/application-test/app-test/src/main/java/com/example/apptest/StudyStatus.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.apptest; - -public enum StudyStatus { - DRAFT, STARTED, ENDED -} diff --git a/application-test/app-test/src/main/java/com/example/apptest/domain/Member.java b/application-test/app-test/src/main/java/com/example/apptest/domain/Member.java new file mode 100644 index 00000000..507c538b --- /dev/null +++ b/application-test/app-test/src/main/java/com/example/apptest/domain/Member.java @@ -0,0 +1,21 @@ +package com.example.apptest.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Member { + + @Id @GeneratedValue + private Long id; + + private String email; +} diff --git a/application-test/app-test/src/main/java/com/example/apptest/domain/Study.java b/application-test/app-test/src/main/java/com/example/apptest/domain/Study.java new file mode 100644 index 00000000..8984f0bb --- /dev/null +++ b/application-test/app-test/src/main/java/com/example/apptest/domain/Study.java @@ -0,0 +1,47 @@ +package com.example.apptest.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import java.time.LocalDateTime; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Study { + + @Id @GeneratedValue + private Long id; + + private StudyStatus status = StudyStatus.DRAFT; + + private int limit; + + private String name; + + private LocalDateTime openedDateTime; + + private Long ownerId; + + public Study(int limit, String name) { + this.limit = limit; + this.name = name; + } + + public Study(int limit) { + if (limit <= 0) { + throw new IllegalArgumentException("limit은 0보다 커야 한다."); + } + this.limit = limit; + } + + public void open() { + this.openedDateTime = LocalDateTime.now(); + this.status = StudyStatus.OPENED; + } +} diff --git a/application-test/app-test/src/main/java/com/example/apptest/domain/StudyStatus.java b/application-test/app-test/src/main/java/com/example/apptest/domain/StudyStatus.java new file mode 100644 index 00000000..c4a6aca1 --- /dev/null +++ b/application-test/app-test/src/main/java/com/example/apptest/domain/StudyStatus.java @@ -0,0 +1,5 @@ +package com.example.apptest.domain; + +public enum StudyStatus { + DRAFT, STARTED, ENDED, OPENED +} diff --git a/application-test/app-test/src/main/java/com/example/apptest/member/MemberService.java b/application-test/app-test/src/main/java/com/example/apptest/member/MemberService.java new file mode 100644 index 00000000..5ab57aa0 --- /dev/null +++ b/application-test/app-test/src/main/java/com/example/apptest/member/MemberService.java @@ -0,0 +1,10 @@ +package com.example.apptest.member; + +import com.example.apptest.domain.Member; + +import java.util.Optional; + +public interface MemberService { + + Optional findById(Long memberId); +} diff --git a/application-test/app-test/src/main/java/com/example/apptest/study/StudyRepository.java b/application-test/app-test/src/main/java/com/example/apptest/study/StudyRepository.java new file mode 100644 index 00000000..94d09e4d --- /dev/null +++ b/application-test/app-test/src/main/java/com/example/apptest/study/StudyRepository.java @@ -0,0 +1,9 @@ +package com.example.apptest.study; + +import com.example.apptest.domain.Study; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface StudyRepository extends JpaRepository { +} diff --git a/application-test/app-test/src/main/java/com/example/apptest/study/StudyService.java b/application-test/app-test/src/main/java/com/example/apptest/study/StudyService.java new file mode 100644 index 00000000..b4face39 --- /dev/null +++ b/application-test/app-test/src/main/java/com/example/apptest/study/StudyService.java @@ -0,0 +1,25 @@ +package com.example.apptest.study; + +import com.example.apptest.domain.Member; +import com.example.apptest.domain.Study; +import com.example.apptest.member.MemberService; + +public class StudyService { + + private final MemberService memberService; + private final StudyRepository studyRepository; + + public StudyService(MemberService memberService, StudyRepository studyRepository) { + assert memberService != null; + assert studyRepository != null; + this.memberService = memberService; + this.studyRepository = studyRepository; + } + + public Study createNewStudy(Long memberId, Study study) { + Member member = memberService.findById(memberId) + .orElseThrow(() -> new IllegalArgumentException("Member doesn't exist for id: " + memberId)); + study.setOwnerId(memberId); + return studyRepository.save(study); + } +} diff --git a/application-test/app-test/src/main/resources/application.properties b/application-test/app-test/src/main/resources/application.properties deleted file mode 100644 index 8b137891..00000000 --- a/application-test/app-test/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ - diff --git a/application-test/app-test/src/main/resources/application.yml b/application-test/app-test/src/main/resources/application.yml new file mode 100644 index 00000000..53372abf --- /dev/null +++ b/application-test/app-test/src/main/resources/application.yml @@ -0,0 +1,21 @@ +spring: + h2: + console: + enabled: true + path: /h2-console + + datasource: + url: jdbc:h2:mem:testDb + driver-class-name: org.h2.Driver + username: sa + password: + + jpa: + hibernate: + ddl-auto: create + generate-ddl: true + + properties: + format_sql: true + hibernate: + show-sql: true diff --git a/application-test/app-test/src/test/java/com/example/apptest/study/StudyServiceTest.java b/application-test/app-test/src/test/java/com/example/apptest/study/StudyServiceTest.java new file mode 100644 index 00000000..e5a8cc30 --- /dev/null +++ b/application-test/app-test/src/test/java/com/example/apptest/study/StudyServiceTest.java @@ -0,0 +1,19 @@ +package com.example.apptest.study; + +import com.example.apptest.member.MemberService; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import static org.junit.jupiter.api.Assertions.*; + +class StudyServiceTest { + + @Test + void createStudyService() { + + MemberService memberService = Mockito.mock(MemberService.class); + StudyRepository studyRepository = Mockito.mock(StudyRepository.class); + StudyService studyService = new StudyService(memberService, studyRepository); + } + +} \ No newline at end of file