From ffa2c204367d2f1c624f2b9c15265f06d4befb3e Mon Sep 17 00:00:00 2001 From: KWY Date: Sun, 7 Apr 2024 23:42:42 +0900 Subject: [PATCH 1/9] =?UTF-8?q?[CHORE]=20=EB=8F=84=EB=A9=94=EC=9D=B8=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=20=EB=82=B4=20test=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- operation-domain/build.gradle | 3 +++ 1 file changed, 3 insertions(+) diff --git a/operation-domain/build.gradle b/operation-domain/build.gradle index 2c0374ea..e296f5cc 100644 --- a/operation-domain/build.gradle +++ b/operation-domain/build.gradle @@ -25,4 +25,7 @@ dependencies { // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.14.0-rc1' + + // test + testImplementation 'org.springframework.boot:spring-boot-starter-test' } From 8f67dca5290b8aa9d1da89175f6c075443b84b00 Mon Sep 17 00:00:00 2001 From: KWY Date: Sun, 7 Apr 2024 23:45:26 +0900 Subject: [PATCH 2/9] =?UTF-8?q?[FEAT]=20Dummy=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EA=B0=9D=EC=B2=B4=EB=A5=BC=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EC=9E=90=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operation/attendance/domain/Attendance.java | 7 +++++++ .../attendance/domain/SubAttendance.java | 7 +++++++ .../operation/lecture/domain/Lecture.java | 17 +++++++++++++++++ .../operation/lecture/domain/SubLecture.java | 8 ++++++++ .../makers/operation/member/domain/Member.java | 13 +++++++++++++ 5 files changed, 52 insertions(+) diff --git a/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java b/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java index c2d7f64d..7d00f145 100644 --- a/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java +++ b/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java @@ -48,6 +48,13 @@ public class Attendance { @OneToMany(mappedBy = "attendance") private final List subAttendances = new ArrayList<>(); + protected Attendance(Long id, Member member, Lecture lecture, AttendanceStatus status) { + this.id = id; + setMember(member); + setLecture(lecture); + this.status = status; + } + public Attendance(Member member, Lecture lecture) { setMember(member); setLecture(lecture); diff --git a/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/SubAttendance.java b/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/SubAttendance.java index b9c0f667..ce374564 100644 --- a/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/SubAttendance.java +++ b/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/SubAttendance.java @@ -47,6 +47,13 @@ public SubAttendance(Attendance attendance, SubLecture subLecture) { status = ABSENT; } + protected SubAttendance(Long id, Attendance attendance, SubLecture subLecture, AttendanceStatus status) { + this.id = id; + setAttendance(attendance); + setSubLecture(subLecture); + this.status = status; + } + private void setAttendance(Attendance attendance) { if (Objects.nonNull(this.attendance)) { this.attendance.getSubAttendances().remove(this); diff --git a/operation-domain/src/main/java/org/sopt/makers/operation/lecture/domain/Lecture.java b/operation-domain/src/main/java/org/sopt/makers/operation/lecture/domain/Lecture.java index 7d412863..29befe77 100644 --- a/operation-domain/src/main/java/org/sopt/makers/operation/lecture/domain/Lecture.java +++ b/operation-domain/src/main/java/org/sopt/makers/operation/lecture/domain/Lecture.java @@ -77,6 +77,18 @@ public Lecture( this.lectureStatus = BEFORE; } + protected Lecture(Long id, String name, Part part, int generation, String place, LocalDateTime startDate, LocalDateTime endDate, Attribute attribute, LectureStatus lectureStatus) { + this.id = id; + this.name = name; + this.part = part; + this.generation = generation; + this.place = place; + this.startDate = startDate; + this.endDate = endDate; + this.attribute = attribute; + this.lectureStatus = lectureStatus; + } + public void updateStatus(LectureStatus status) { this.lectureStatus = status; } @@ -101,4 +113,9 @@ public boolean isFirst() { public boolean isNotYetToEnd() { return this.endDate.isAfter(LocalDateTime.now()); } + + protected void setOneToMany(List subLectures, List attendances) { + this.subLectures = subLectures; + this.attendances = attendances; + } } diff --git a/operation-domain/src/main/java/org/sopt/makers/operation/lecture/domain/SubLecture.java b/operation-domain/src/main/java/org/sopt/makers/operation/lecture/domain/SubLecture.java index 47b85b0f..d845cd34 100644 --- a/operation-domain/src/main/java/org/sopt/makers/operation/lecture/domain/SubLecture.java +++ b/operation-domain/src/main/java/org/sopt/makers/operation/lecture/domain/SubLecture.java @@ -43,6 +43,14 @@ public class SubLecture { @OneToMany(mappedBy = "subLecture") private final List subAttendances = new ArrayList<>(); + protected SubLecture(Long id, Lecture lecture, int round, LocalDateTime startAt, String code) { + this.id = id; + setLecture(lecture); + this.round = round; + this.startAt = startAt; + this.code = code; + } + public SubLecture(Lecture lecture, int round) { setLecture(lecture); this.round = round; diff --git a/operation-domain/src/main/java/org/sopt/makers/operation/member/domain/Member.java b/operation-domain/src/main/java/org/sopt/makers/operation/member/domain/Member.java index caafb2c5..b1f799b7 100644 --- a/operation-domain/src/main/java/org/sopt/makers/operation/member/domain/Member.java +++ b/operation-domain/src/main/java/org/sopt/makers/operation/member/domain/Member.java @@ -45,6 +45,19 @@ public class Member { @OneToMany(mappedBy = "member") List attendances = new ArrayList<>(); + protected Member(Long id, Long playgroundId, String name, int generation, ObYb obyb, Part part, String university, float score, String phone, List attendances) { + this.id = id; + this.playgroundId = playgroundId; + this.name = name; + this.generation = generation; + this.obyb = obyb; + this.part = part; + this.university = university; + this.score = score; + this.phone = phone; + this.attendances = attendances; + } + public void updateScore(float score) { this.score += score; } From ef9cff4149058354bd1c27b10b4a0e28f54df26c Mon Sep 17 00:00:00 2001 From: KWY Date: Sun, 7 Apr 2024 23:45:47 +0900 Subject: [PATCH 3/9] =?UTF-8?q?[FEAT]=20=EA=B0=81=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EB=B3=84=EB=A1=9C=20Dummy=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EA=B0=9D=EC=B2=B4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operation/dummy/AttendanceDummy.java | 12 ++++++++++ .../makers/operation/dummy/LectureDummy.java | 22 +++++++++++++++++++ .../makers/operation/dummy/MemberDummy.java | 16 ++++++++++++++ .../operation/dummy/SubAttendanceDummy.java | 13 +++++++++++ .../operation/dummy/SubLectureDummy.java | 13 +++++++++++ 5 files changed, 76 insertions(+) create mode 100644 operation-domain/src/test/java/org/sopt/makers/operation/dummy/AttendanceDummy.java create mode 100644 operation-domain/src/test/java/org/sopt/makers/operation/dummy/LectureDummy.java create mode 100644 operation-domain/src/test/java/org/sopt/makers/operation/dummy/MemberDummy.java create mode 100644 operation-domain/src/test/java/org/sopt/makers/operation/dummy/SubAttendanceDummy.java create mode 100644 operation-domain/src/test/java/org/sopt/makers/operation/dummy/SubLectureDummy.java diff --git a/operation-domain/src/test/java/org/sopt/makers/operation/dummy/AttendanceDummy.java b/operation-domain/src/test/java/org/sopt/makers/operation/dummy/AttendanceDummy.java new file mode 100644 index 00000000..b89e0094 --- /dev/null +++ b/operation-domain/src/test/java/org/sopt/makers/operation/dummy/AttendanceDummy.java @@ -0,0 +1,12 @@ +package org.sopt.makers.operation.dummy; + +import org.sopt.makers.operation.attendance.domain.Attendance; +import org.sopt.makers.operation.attendance.domain.AttendanceStatus; +import org.sopt.makers.operation.lecture.domain.Lecture; +import org.sopt.makers.operation.member.domain.Member; + +public class AttendanceDummy extends Attendance { + public AttendanceDummy(Long id, Member member, Lecture lecture, AttendanceStatus status) { + super(id, member, lecture, status); + } +} diff --git a/operation-domain/src/test/java/org/sopt/makers/operation/dummy/LectureDummy.java b/operation-domain/src/test/java/org/sopt/makers/operation/dummy/LectureDummy.java new file mode 100644 index 00000000..3527fd4c --- /dev/null +++ b/operation-domain/src/test/java/org/sopt/makers/operation/dummy/LectureDummy.java @@ -0,0 +1,22 @@ +package org.sopt.makers.operation.dummy; + +import org.sopt.makers.operation.attendance.domain.Attendance; +import org.sopt.makers.operation.common.domain.Part; +import org.sopt.makers.operation.lecture.domain.Attribute; +import org.sopt.makers.operation.lecture.domain.Lecture; +import org.sopt.makers.operation.lecture.domain.LectureStatus; +import org.sopt.makers.operation.lecture.domain.SubLecture; + +import java.time.LocalDateTime; +import java.util.List; + +public class LectureDummy extends Lecture { + + public LectureDummy(Long id, String name, Part part, int generation, String place, LocalDateTime startDate, LocalDateTime endDate, Attribute attribute, LectureStatus lectureStatus) { + super(id, name, part, generation, place, startDate, endDate, attribute, lectureStatus); + } + + public void setOneToMany(List subLectures, List attendances) { + super.setOneToMany(subLectures, attendances); + } +} diff --git a/operation-domain/src/test/java/org/sopt/makers/operation/dummy/MemberDummy.java b/operation-domain/src/test/java/org/sopt/makers/operation/dummy/MemberDummy.java new file mode 100644 index 00000000..c27010e9 --- /dev/null +++ b/operation-domain/src/test/java/org/sopt/makers/operation/dummy/MemberDummy.java @@ -0,0 +1,16 @@ +package org.sopt.makers.operation.dummy; + +import lombok.Builder; +import org.sopt.makers.operation.attendance.domain.Attendance; +import org.sopt.makers.operation.common.domain.Part; +import org.sopt.makers.operation.member.domain.Member; +import org.sopt.makers.operation.member.domain.ObYb; + +import java.util.List; + +public class MemberDummy extends Member { + @Builder + public MemberDummy(Long id, Long playgroundId, String name, int generation, ObYb obyb, Part part, String university, float score, String phone, List attendances) { + super(id, playgroundId, name, generation, obyb, part, university, score, phone, attendances); + } +} diff --git a/operation-domain/src/test/java/org/sopt/makers/operation/dummy/SubAttendanceDummy.java b/operation-domain/src/test/java/org/sopt/makers/operation/dummy/SubAttendanceDummy.java new file mode 100644 index 00000000..9f85d057 --- /dev/null +++ b/operation-domain/src/test/java/org/sopt/makers/operation/dummy/SubAttendanceDummy.java @@ -0,0 +1,13 @@ +package org.sopt.makers.operation.dummy; + +import org.sopt.makers.operation.attendance.domain.Attendance; +import org.sopt.makers.operation.attendance.domain.AttendanceStatus; +import org.sopt.makers.operation.attendance.domain.SubAttendance; +import org.sopt.makers.operation.lecture.domain.SubLecture; + +public class SubAttendanceDummy extends SubAttendance { + + public SubAttendanceDummy(Long id, Attendance attendance, SubLecture subLecture, AttendanceStatus status) { + super(id, attendance, subLecture, status); + } +} diff --git a/operation-domain/src/test/java/org/sopt/makers/operation/dummy/SubLectureDummy.java b/operation-domain/src/test/java/org/sopt/makers/operation/dummy/SubLectureDummy.java new file mode 100644 index 00000000..9cd2b7c9 --- /dev/null +++ b/operation-domain/src/test/java/org/sopt/makers/operation/dummy/SubLectureDummy.java @@ -0,0 +1,13 @@ +package org.sopt.makers.operation.dummy; + +import org.sopt.makers.operation.lecture.domain.Lecture; +import org.sopt.makers.operation.lecture.domain.SubLecture; + +import java.time.LocalDateTime; + +public class SubLectureDummy extends SubLecture { + + public SubLectureDummy(Long id, Lecture lecture, int round, LocalDateTime startAt, String code) { + super(id, lecture, round, startAt, code); + } +} From 246e2875d8761e647d8d383f29d7d1b35d6f2a27 Mon Sep 17 00:00:00 2001 From: KWY Date: Sun, 7 Apr 2024 23:46:31 +0900 Subject: [PATCH 4/9] =?UTF-8?q?[TEST]=20Attendance=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EB=82=B4=20getStatus=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/AttendanceGetStatusTest.java | 112 ++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetStatusTest.java diff --git a/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetStatusTest.java b/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetStatusTest.java new file mode 100644 index 00000000..cb286139 --- /dev/null +++ b/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetStatusTest.java @@ -0,0 +1,112 @@ +package org.sopt.makers.operation.attendance.domain; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.sopt.makers.operation.common.domain.Part; +import org.sopt.makers.operation.dummy.AttendanceDummy; +import org.sopt.makers.operation.dummy.LectureDummy; +import org.sopt.makers.operation.dummy.MemberDummy; +import org.sopt.makers.operation.dummy.SubAttendanceDummy; +import org.sopt.makers.operation.dummy.SubLectureDummy; +import org.sopt.makers.operation.lecture.domain.Attribute; +import org.sopt.makers.operation.lecture.domain.LectureStatus; +import org.sopt.makers.operation.lecture.domain.SubLecture; +import org.sopt.makers.operation.member.domain.Member; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +class AttendanceGetStatusTest { + + private Member member; + private LectureDummy lecture; + private SubLecture subLecture1; + private SubLecture subLecture2; + private List subLectures; + private List attendances; + private Attendance attendance; + + @BeforeEach + void setUp() { + member = MemberDummy.builder() + .id(1L) + .attendances(new ArrayList<>()) + .build(); + + lecture = new LectureDummy(1L, "서버 1차 세미나", Part.SERVER, 34, "오산역", LocalDateTime.now(), LocalDateTime.now(), Attribute.SEMINAR, LectureStatus.BEFORE); + + subLecture1 = new SubLectureDummy(1L, lecture, 1, LocalDateTime.now(), "000001"); + subLecture2 = new SubLectureDummy(2L, lecture, 2, LocalDateTime.now(), "000002"); + + subLectures = new ArrayList<>(); + subLectures.add(subLecture1); + subLectures.add(subLecture2); + + attendances = new ArrayList<>(); + attendance = new AttendanceDummy(1L, member, lecture, AttendanceStatus.ABSENT); + attendances.add(attendance); + + lecture.setOneToMany(subLectures, attendances); + } + + @Test + @DisplayName("세미나 1차 출석을 했고, 2차 출석을 했으면 출석 처리가 된다.") + void getStatusTest() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ATTENDANCE); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ATTENDANCE); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.ATTENDANCE); + } + + @Test + @DisplayName("세미나에서 1차 출석을 했고, 2차 출석을 결석했으면 지각 처리가 된다.") + void getStatusTest2() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ATTENDANCE); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ABSENT); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.TARDY); + } + + @Test + @DisplayName("세미나에서 1차 출석을 결석했고, 2차 출석을 했으면 지각 처리가 된다.") + void getStatusTest3() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ABSENT); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ATTENDANCE); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.TARDY); + } + + @Test + @DisplayName("세미나에서 1차 출석을 결석했고, 2차 출석을 결석했으면 결석 처리가 된다.") + void getStatusTest4() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ABSENT); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ABSENT); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.ABSENT); + } + +} \ No newline at end of file From 939e3856b4d9731defde69c5cb40924bd2c4c29d Mon Sep 17 00:00:00 2001 From: KWY Date: Tue, 9 Apr 2024 08:55:59 +0900 Subject: [PATCH 5/9] =?UTF-8?q?[TEST]=20Attendance=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EB=82=B4=20getScore=20=EB=8B=A8=EC=9C=84=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/AttendanceGetScoreTest.java | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetScoreTest.java diff --git a/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetScoreTest.java b/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetScoreTest.java new file mode 100644 index 00000000..3eab7a84 --- /dev/null +++ b/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetScoreTest.java @@ -0,0 +1,124 @@ +package org.sopt.makers.operation.attendance.domain; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.sopt.makers.operation.common.domain.Part; +import org.sopt.makers.operation.dummy.AttendanceDummy; +import org.sopt.makers.operation.dummy.LectureDummy; +import org.sopt.makers.operation.dummy.MemberDummy; +import org.sopt.makers.operation.lecture.domain.Attribute; +import org.sopt.makers.operation.lecture.domain.Lecture; +import org.sopt.makers.operation.lecture.domain.LectureStatus; +import org.sopt.makers.operation.member.domain.Member; + +import java.time.LocalDateTime; +import java.util.ArrayList; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +public class AttendanceGetScoreTest { + + private Member member; + + @BeforeEach + void setUp() { + member = MemberDummy.builder() + .id(1L) + .attendances(new ArrayList<>()) + .build(); + } + + @Nested + @DisplayName("세미나 출석 관련 테스트") + public class SeminarTest { + @Test + @DisplayName("세미나에 출석을 했으면 0f를 반환한다.") + public void getScoreTest() { + // given + Lecture lecture = new LectureDummy(1L, "서버 1차 세미나", Part.SERVER, 34, "오산역", LocalDateTime.now(), LocalDateTime.now(), Attribute.SEMINAR, LectureStatus.BEFORE); + Attendance attendance = new AttendanceDummy(1L, member, lecture, AttendanceStatus.ATTENDANCE); + + // when + float score = attendance.getScore(); + + // then + assertThat(score).isEqualTo(0f); + } + + @Test + @DisplayName("세미나에 지각을 했으면 -0.5f를 반환한다.") + public void getScoreTest2() { + // given + Lecture lecture = new LectureDummy(1L, "서버 1차 세미나", Part.SERVER, 34, "오산역", LocalDateTime.now(), LocalDateTime.now(), Attribute.SEMINAR, LectureStatus.BEFORE); + Attendance attendance = new AttendanceDummy(1L, member, lecture, AttendanceStatus.TARDY); + + // when + float score = attendance.getScore(); + + // then + assertThat(score).isEqualTo(-0.5f); + } + + @Test + @DisplayName("세미나에 결석을 했으면 -1f를 반환한다.") + public void getScoreTest3() { + // given + Lecture lecture = new LectureDummy(1L, "서버 1차 세미나", Part.SERVER, 34, "오산역", LocalDateTime.now(), LocalDateTime.now(), Attribute.SEMINAR, LectureStatus.BEFORE); + Attendance attendance = new AttendanceDummy(1L, member, lecture, AttendanceStatus.ABSENT); + + // when + float score = attendance.getScore(); + + // then + assertThat(score).isEqualTo(-1f); + } + } + + @Nested + @DisplayName("행사 출석 관련 테스트") + public class EventTest { + @Test + @DisplayName("행사에 출석을 했으면 0.5f를 반환한다.") + public void getScoreTest() { + // given + Lecture lecture = new LectureDummy(1L, "서버 1차 세미나", Part.SERVER, 34, "오산역", LocalDateTime.now(), LocalDateTime.now(), Attribute.EVENT, LectureStatus.BEFORE); + Attendance attendance = new AttendanceDummy(1L, member, lecture, AttendanceStatus.ATTENDANCE); + + // when + float score = attendance.getScore(); + + // then + assertThat(score).isEqualTo(0.5f); + } + + @Test + @DisplayName("행사에 지각을 했으면 0.5f를 반환한다.") + public void getScoreTest2() { + // given + Lecture lecture = new LectureDummy(1L, "서버 1차 세미나", Part.SERVER, 34, "오산역", LocalDateTime.now(), LocalDateTime.now(), Attribute.EVENT, LectureStatus.BEFORE); + Attendance attendance = new AttendanceDummy(1L, member, lecture, AttendanceStatus.TARDY); + + // when + float score = attendance.getScore(); + + // then + assertThat(score).isEqualTo(0.5f); + } + + @Test + @DisplayName("행사에 결석을 했으면 0f를 반환한다.") + public void getScoreTest3() { + // given + Lecture lecture = new LectureDummy(1L, "서버 1차 세미나", Part.SERVER, 34, "오산역", LocalDateTime.now(), LocalDateTime.now(), Attribute.EVENT, LectureStatus.BEFORE); + Attendance attendance = new AttendanceDummy(1L, member, lecture, AttendanceStatus.ABSENT); + + // when + float score = attendance.getScore(); + + // then + assertThat(score).isEqualTo(0f); + } + } +} From 9ecbe65be79038a177c59cb2e922a103517f0b4d Mon Sep 17 00:00:00 2001 From: KWY Date: Tue, 9 Apr 2024 08:56:46 +0900 Subject: [PATCH 6/9] =?UTF-8?q?[REFACTOR]=20=ED=96=89=EC=82=AC=20=EC=A7=80?= =?UTF-8?q?=EA=B0=81=20=EC=8B=9C=200.5=20=EC=A0=90=EC=9D=B4=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=EB=90=98=EB=8F=84=EB=A1=9D=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/sopt/makers/operation/attendance/domain/Attendance.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java b/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java index 7d00f145..98caed48 100644 --- a/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java +++ b/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java @@ -110,7 +110,7 @@ public float getScore() { yield 0f; } } - case EVENT -> this.status.equals(ATTENDANCE) ? 0.5f : 0f; + case EVENT -> this.status.equals(ABSENT) ? 0f : 0.5f; default -> 0f; }; } From 7b90765f3fd7ab647b9c0e21c6af31a313c866f7 Mon Sep 17 00:00:00 2001 From: KWY Date: Wed, 10 Apr 2024 14:58:27 +0900 Subject: [PATCH 7/9] =?UTF-8?q?[CHORE]=20=ED=96=89=EC=82=AC=20=EC=B6=9C?= =?UTF-8?q?=EC=84=9D=20=EC=A0=90=EC=88=98=20=EB=B0=98=ED=99=98=20=EB=8B=A8?= =?UTF-8?q?=EC=9C=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8=EB=AA=85=20=EB=AA=85?= =?UTF-8?q?=EC=8B=9C=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../operation/attendance/domain/AttendanceGetScoreTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetScoreTest.java b/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetScoreTest.java index 3eab7a84..3d15bc1d 100644 --- a/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetScoreTest.java +++ b/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetScoreTest.java @@ -31,7 +31,7 @@ void setUp() { } @Nested - @DisplayName("세미나 출석 관련 테스트") + @DisplayName("[세미나 출석 점수 반환 테스트]") public class SeminarTest { @Test @DisplayName("세미나에 출석을 했으면 0f를 반환한다.") @@ -77,7 +77,7 @@ public void getScoreTest3() { } @Nested - @DisplayName("행사 출석 관련 테스트") + @DisplayName("[행사 출석 점수 반환 테스트]") public class EventTest { @Test @DisplayName("행사에 출석을 했으면 0.5f를 반환한다.") From 8abf1d4e124cc3ad05d9ba86da41cc36dbdb2301 Mon Sep 17 00:00:00 2001 From: KWY Date: Wed, 10 Apr 2024 15:02:10 +0900 Subject: [PATCH 8/9] =?UTF-8?q?[TEST]=20=ED=96=89=EC=82=AC=20=EC=B6=9C?= =?UTF-8?q?=EC=84=9D=20=EC=83=81=ED=83=9C=20=EB=B0=98=ED=99=98=20=EB=8B=A8?= =?UTF-8?q?=EC=9C=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/AttendanceGetStatusTest.java | 239 ++++++++++++------ 1 file changed, 163 insertions(+), 76 deletions(-) diff --git a/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetStatusTest.java b/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetStatusTest.java index cb286139..a0877f15 100644 --- a/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetStatusTest.java +++ b/operation-domain/src/test/java/org/sopt/makers/operation/attendance/domain/AttendanceGetStatusTest.java @@ -2,6 +2,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.sopt.makers.operation.common.domain.Part; import org.sopt.makers.operation.dummy.AttendanceDummy; @@ -30,83 +31,169 @@ class AttendanceGetStatusTest { private List attendances; private Attendance attendance; - @BeforeEach - void setUp() { - member = MemberDummy.builder() - .id(1L) - .attendances(new ArrayList<>()) - .build(); - - lecture = new LectureDummy(1L, "서버 1차 세미나", Part.SERVER, 34, "오산역", LocalDateTime.now(), LocalDateTime.now(), Attribute.SEMINAR, LectureStatus.BEFORE); - - subLecture1 = new SubLectureDummy(1L, lecture, 1, LocalDateTime.now(), "000001"); - subLecture2 = new SubLectureDummy(2L, lecture, 2, LocalDateTime.now(), "000002"); - - subLectures = new ArrayList<>(); - subLectures.add(subLecture1); - subLectures.add(subLecture2); - - attendances = new ArrayList<>(); - attendance = new AttendanceDummy(1L, member, lecture, AttendanceStatus.ABSENT); - attendances.add(attendance); - - lecture.setOneToMany(subLectures, attendances); - } - - @Test - @DisplayName("세미나 1차 출석을 했고, 2차 출석을 했으면 출석 처리가 된다.") - void getStatusTest() { - // given - SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ATTENDANCE); - SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ATTENDANCE); - - // when - AttendanceStatus attendanceStatus = attendance.getStatus(); - - // then - assertThat(attendanceStatus).isEqualTo(AttendanceStatus.ATTENDANCE); - } - - @Test - @DisplayName("세미나에서 1차 출석을 했고, 2차 출석을 결석했으면 지각 처리가 된다.") - void getStatusTest2() { - // given - SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ATTENDANCE); - SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ABSENT); - - // when - AttendanceStatus attendanceStatus = attendance.getStatus(); - - // then - assertThat(attendanceStatus).isEqualTo(AttendanceStatus.TARDY); - } - - @Test - @DisplayName("세미나에서 1차 출석을 결석했고, 2차 출석을 했으면 지각 처리가 된다.") - void getStatusTest3() { - // given - SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ABSENT); - SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ATTENDANCE); - - // when - AttendanceStatus attendanceStatus = attendance.getStatus(); - - // then - assertThat(attendanceStatus).isEqualTo(AttendanceStatus.TARDY); + @Nested + @DisplayName("[세미나 출석 상태 반환 테스트]") + public class SeminarTest { + @BeforeEach + void setUp() { + member = MemberDummy.builder() + .id(1L) + .attendances(new ArrayList<>()) + .build(); + + lecture = new LectureDummy(1L, "서버 1차 세미나", Part.SERVER, 34, "오산역", LocalDateTime.now(), LocalDateTime.now(), Attribute.SEMINAR, LectureStatus.BEFORE); + + subLecture1 = new SubLectureDummy(1L, lecture, 1, LocalDateTime.now(), "000001"); + subLecture2 = new SubLectureDummy(2L, lecture, 2, LocalDateTime.now(), "000002"); + + subLectures = new ArrayList<>(); + subLectures.add(subLecture1); + subLectures.add(subLecture2); + + attendances = new ArrayList<>(); + attendance = new AttendanceDummy(1L, member, lecture, AttendanceStatus.ABSENT); + attendances.add(attendance); + + lecture.setOneToMany(subLectures, attendances); + } + + @Test + @DisplayName("세미나 1차 출석을 했고, 2차 출석을 했으면 출석 처리가 된다.") + void getStatusTest() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ATTENDANCE); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ATTENDANCE); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.ATTENDANCE); + } + + @Test + @DisplayName("세미나에서 1차 출석을 했고, 2차 출석을 결석했으면 지각 처리가 된다.") + void getStatusTest2() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ATTENDANCE); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ABSENT); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.TARDY); + } + + @Test + @DisplayName("세미나에서 1차 출석을 결석했고, 2차 출석을 했으면 지각 처리가 된다.") + void getStatusTest3() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ABSENT); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ATTENDANCE); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.TARDY); + } + + @Test + @DisplayName("세미나에서 1차 출석을 결석했고, 2차 출석을 결석했으면 결석 처리가 된다.") + void getStatusTest4() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ABSENT); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ABSENT); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.ABSENT); + } } - @Test - @DisplayName("세미나에서 1차 출석을 결석했고, 2차 출석을 결석했으면 결석 처리가 된다.") - void getStatusTest4() { - // given - SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ABSENT); - SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ABSENT); - - // when - AttendanceStatus attendanceStatus = attendance.getStatus(); - - // then - assertThat(attendanceStatus).isEqualTo(AttendanceStatus.ABSENT); + @Nested + @DisplayName("[행사 출석 상태 반환 테스트]") + public class EventTest { + @BeforeEach + void setUp() { + member = MemberDummy.builder() + .id(1L) + .attendances(new ArrayList<>()) + .build(); + + lecture = new LectureDummy(1L, "1차 행사", Part.SERVER, 34, "오산역", LocalDateTime.now(), LocalDateTime.now(), Attribute.EVENT, LectureStatus.BEFORE); + + subLecture1 = new SubLectureDummy(1L, lecture, 1, LocalDateTime.now(), "000001"); + subLecture2 = new SubLectureDummy(2L, lecture, 2, LocalDateTime.now(), "000002"); + + subLectures = new ArrayList<>(); + subLectures.add(subLecture1); + subLectures.add(subLecture2); + + attendances = new ArrayList<>(); + attendance = new AttendanceDummy(1L, member, lecture, AttendanceStatus.ABSENT); + attendances.add(attendance); + + lecture.setOneToMany(subLectures, attendances); + } + + @Test + @DisplayName("행사 1차 출석을 했고, 2차 출석을 했으면 출석 처리가 된다.") + void getStatusTest() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ATTENDANCE); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ATTENDANCE); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.ATTENDANCE); + } + + @Test + @DisplayName("행사에서 1차 출석을 했고, 2차 출석을 결석했으면 지각 처리가 된다.") + void getStatusTest2() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ATTENDANCE); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ABSENT); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.TARDY); + } + + @Test + @DisplayName("행사에서 1차 출석을 결석했고, 2차 출석을 했으면 지각 처리가 된다.") + void getStatusTest3() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ABSENT); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ATTENDANCE); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.TARDY); + } + + @Test + @DisplayName("행사에서 1차 출석을 결석했고, 2차 출석을 결석했으면 결석 처리가 된다.") + void getStatusTest4() { + // given + SubAttendance subAttendance1 = new SubAttendanceDummy(1L, attendance, subLecture1, AttendanceStatus.ABSENT); + SubAttendance subAttendance2 = new SubAttendanceDummy(2L, attendance, subLecture2, AttendanceStatus.ABSENT); + + // when + AttendanceStatus attendanceStatus = attendance.getStatus(); + + // then + assertThat(attendanceStatus).isEqualTo(AttendanceStatus.ABSENT); + } } - } \ No newline at end of file From e25492fdd66b23959912fe9ff6d201c352f2698d Mon Sep 17 00:00:00 2001 From: KWY Date: Wed, 10 Apr 2024 15:04:39 +0900 Subject: [PATCH 9/9] =?UTF-8?q?[REFACTOR]=20=ED=96=89=EC=82=AC=EC=9D=BC=20?= =?UTF-8?q?=EB=95=8C=20=EC=B6=9C=EC=84=9D=20=EC=83=81=ED=83=9C=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/makers/operation/attendance/domain/Attendance.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java b/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java index 98caed48..6d2a70ba 100644 --- a/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java +++ b/operation-domain/src/main/java/org/sopt/makers/operation/attendance/domain/Attendance.java @@ -86,13 +86,12 @@ public AttendanceStatus getStatus() { val second = getSubAttendanceByRound(2); return switch (this.lecture.getAttribute()) { - case SEMINAR -> { + case SEMINAR, EVENT -> { if (first.getStatus().equals(ATTENDANCE) && second.getStatus().equals(ATTENDANCE)) { yield ATTENDANCE; } yield first.getStatus().equals(ABSENT) && second.getStatus().equals(ABSENT) ? ABSENT : TARDY; } - case EVENT -> second.getStatus().equals(ATTENDANCE) ? ATTENDANCE : ABSENT; case ETC -> second.getStatus().equals(ATTENDANCE) ? PARTICIPATE : NOT_PARTICIPATE; }; }