From ab5d0869d2637c787005f3e5fdc88f2194e6ea70 Mon Sep 17 00:00:00 2001 From: choi3179 Date: Fri, 12 Apr 2024 18:55:28 +0900 Subject: [PATCH 1/3] [ADD] DashBoard logic Junit Test --- .../dashboard/DashBoardServiceTest.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 papplan/src/test/java/com/boogle/papplan/service/dashboard/DashBoardServiceTest.java diff --git a/papplan/src/test/java/com/boogle/papplan/service/dashboard/DashBoardServiceTest.java b/papplan/src/test/java/com/boogle/papplan/service/dashboard/DashBoardServiceTest.java new file mode 100644 index 0000000..6bd7daf --- /dev/null +++ b/papplan/src/test/java/com/boogle/papplan/service/dashboard/DashBoardServiceTest.java @@ -0,0 +1,36 @@ +package com.boogle.papplan.service.dashboard; + +import com.boogle.papplan.entity.Project; +import com.boogle.papplan.service.project.ProjectService; +import com.boogle.papplan.service.task.TaskService; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.transaction.annotation.Transactional; + +@SpringBootTest + +public class DashBoardServiceTest { + + @Autowired + private ProjectService projectService; + + @Autowired + private TaskService taskService; + + @BeforeEach + void beforeEmployee() { + + } + + @Test + @Transactional + @DisplayName("대시보드 데이터 집계 및 필터링") + public void 대시보드_집계_필터링() { + + } + + +} From e2d1bb3fd7cb07a9ce137c74a1892fb36667f0df Mon Sep 17 00:00:00 2001 From: choi3179 Date: Mon, 15 Apr 2024 19:01:44 +0900 Subject: [PATCH 2/3] =?UTF-8?q?[ADD]=20H2=20DB=20Sampe=20SQL=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20DashBoardService=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- papplan/pom.xml | 9 ++ .../controller/DashBoardController.java | 20 +++ .../boogle/papplan/entity/Contributor.java | 2 + .../com/boogle/papplan/entity/Department.java | 2 +- .../com/boogle/papplan/entity/Employees.java | 4 + .../com/boogle/papplan/entity/Position.java | 2 +- .../com/boogle/papplan/entity/Project.java | 4 + .../java/com/boogle/papplan/entity/Task.java | 7 +- .../src/main/resources/application-test.yml | 35 ++++++ papplan/src/main/resources/application.yml | 2 +- .../dashboard/DashBoardServiceTest.java | 115 +++++++++++++++++- .../dashboard/data-dashboard-test1 | 3 + .../db/data-script/data-department.sql | 42 +++++++ .../resources/db/schema-script/create.sql | 94 ++++++++++++++ .../boogle/papplan/entity/Contributor.class | Bin 3405 -> 3624 bytes .../boogle/papplan/entity/Department.class | Bin 3418 -> 3474 bytes .../com/boogle/papplan/entity/Employees.class | Bin 4844 -> 5182 bytes .../com/boogle/papplan/entity/Position.class | Bin 3462 -> 3518 bytes .../com/boogle/papplan/entity/Project.class | Bin 9213 -> 10191 bytes .../com/boogle/papplan/entity/Task.class | Bin 6720 -> 11399 bytes .../papplan/PapplanApplicationTests.class | Bin 429 -> 429 bytes 21 files changed, 328 insertions(+), 13 deletions(-) create mode 100644 papplan/src/main/resources/application-test.yml create mode 100644 papplan/src/test/resources/db/data-script/dashboard/data-dashboard-test1 create mode 100644 papplan/src/test/resources/db/data-script/data-department.sql create mode 100644 papplan/src/test/resources/db/schema-script/create.sql diff --git a/papplan/pom.xml b/papplan/pom.xml index 117b79f..96e1de1 100644 --- a/papplan/pom.xml +++ b/papplan/pom.xml @@ -68,6 +68,15 @@ com.fasterxml.jackson.datatype jackson-datatype-jsr310 + + + + com.h2database + h2 + 2.2.224 + test + + diff --git a/papplan/src/main/java/com/boogle/papplan/controller/DashBoardController.java b/papplan/src/main/java/com/boogle/papplan/controller/DashBoardController.java index 318bd00..1adf3e3 100644 --- a/papplan/src/main/java/com/boogle/papplan/controller/DashBoardController.java +++ b/papplan/src/main/java/com/boogle/papplan/controller/DashBoardController.java @@ -60,4 +60,24 @@ public ResponseEntity empProjectTaskAll(@PathVariable("empno") Integer e } } + // 사용자 프로젝트 상세 조회 + // 24.03.31 : 사용자 전체 프로젝트 조회 + @GetMapping("/emp/{empno}/projects") + public ResponseEntity> empProjectsAll(@PathVariable("empno") Integer empNo){ + List projectDTOS = projectService.findProjectsByEmpNo(empNo); + return ResponseEntity.ok().body(projectDTOS); + } + + // 프로젝트의 상세 정보와 하위 업무 조회 + @GetMapping("/projects/{projNo}/tasks") + public ResponseEntity> getTaskById(@PathVariable Integer projNo) { + HashMap prjDashBoard = new HashMap<>(); + ProjectDTO project = projectService.getProjectByProjNo(projNo); + List tasks = taskService.getTasksByProjectId(projNo); + prjDashBoard = objectMapper.convertValue(project,HashMap.class); + prjDashBoard.put("tasks", tasks); + return ResponseEntity.ok().body(prjDashBoard); + } + + } diff --git a/papplan/src/main/java/com/boogle/papplan/entity/Contributor.java b/papplan/src/main/java/com/boogle/papplan/entity/Contributor.java index 6736738..fc41bb2 100644 --- a/papplan/src/main/java/com/boogle/papplan/entity/Contributor.java +++ b/papplan/src/main/java/com/boogle/papplan/entity/Contributor.java @@ -10,6 +10,8 @@ @Data +@AllArgsConstructor +@NoArgsConstructor @Entity public class Contributor{ diff --git a/papplan/src/main/java/com/boogle/papplan/entity/Department.java b/papplan/src/main/java/com/boogle/papplan/entity/Department.java index ea7fd8a..d41b281 100644 --- a/papplan/src/main/java/com/boogle/papplan/entity/Department.java +++ b/papplan/src/main/java/com/boogle/papplan/entity/Department.java @@ -19,7 +19,7 @@ public class Department { @Column(length = 20, nullable = false) private String dept_name; - @OneToMany(mappedBy = "department", cascade = CascadeType.REMOVE) + @OneToMany(mappedBy = "department", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY) private List employees = new ArrayList<>(); } diff --git a/papplan/src/main/java/com/boogle/papplan/entity/Employees.java b/papplan/src/main/java/com/boogle/papplan/entity/Employees.java index f1c616a..6940b5f 100644 --- a/papplan/src/main/java/com/boogle/papplan/entity/Employees.java +++ b/papplan/src/main/java/com/boogle/papplan/entity/Employees.java @@ -1,9 +1,13 @@ package com.boogle.papplan.entity; import jakarta.persistence.*; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; @Data +@AllArgsConstructor +@NoArgsConstructor @Entity public class Employees { diff --git a/papplan/src/main/java/com/boogle/papplan/entity/Position.java b/papplan/src/main/java/com/boogle/papplan/entity/Position.java index f3eeceb..f7b6373 100644 --- a/papplan/src/main/java/com/boogle/papplan/entity/Position.java +++ b/papplan/src/main/java/com/boogle/papplan/entity/Position.java @@ -18,7 +18,7 @@ public class Position { @Column(length = 20, nullable = false) private String position_name; - @OneToMany(mappedBy = "position", cascade = CascadeType.REMOVE) + @OneToMany(mappedBy = "position", cascade = CascadeType.REMOVE, fetch = FetchType.LAZY) private List employees = new ArrayList<>(); } diff --git a/papplan/src/main/java/com/boogle/papplan/entity/Project.java b/papplan/src/main/java/com/boogle/papplan/entity/Project.java index 805c4ee..a609941 100644 --- a/papplan/src/main/java/com/boogle/papplan/entity/Project.java +++ b/papplan/src/main/java/com/boogle/papplan/entity/Project.java @@ -1,13 +1,17 @@ package com.boogle.papplan.entity; import jakarta.persistence.*; +import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.util.Date; import java.util.List; import java.util.Optional; @Data +@AllArgsConstructor +@NoArgsConstructor @Entity public class Project { @Id diff --git a/papplan/src/main/java/com/boogle/papplan/entity/Task.java b/papplan/src/main/java/com/boogle/papplan/entity/Task.java index c115157..67d40bc 100644 --- a/papplan/src/main/java/com/boogle/papplan/entity/Task.java +++ b/papplan/src/main/java/com/boogle/papplan/entity/Task.java @@ -8,10 +8,9 @@ import java.util.Objects; @Entity -@Getter -@Setter -@ToString -@RequiredArgsConstructor +@Data +@AllArgsConstructor +@NoArgsConstructor public class Task { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/papplan/src/main/resources/application-test.yml b/papplan/src/main/resources/application-test.yml new file mode 100644 index 0000000..31eaf98 --- /dev/null +++ b/papplan/src/main/resources/application-test.yml @@ -0,0 +1,35 @@ +spring: + sql: + init: + platform: mariadb + encoding: UTF-8 + mode: always + schema-locations: classpath:db/schema-script/create.sql + data-locations: classpath:/db/data-script/data-department.sql + datasource: + driver-class-name: org.h2.Driver + url: jdbc:h2:mem:test;MODE=MariaDB + username: sa + password: + # data: classpath:/db/data-script/ + + jpa: + hibernate: + ddl-auto: none + generate-ddl: false + show-sql: false + h2: + console: # H2 DB를 웹에서 관리할 수 있는 기능 + enabled: true # H2 Console 사용 여부 + path: /h2-console # H2 Console 접속 주소 + +# Hibernate SQL ?? ?? ?? +logging: + level: + org: + hibernate: + SQL: debug + +devtools: + LiveReload: + enable: true \ No newline at end of file diff --git a/papplan/src/main/resources/application.yml b/papplan/src/main/resources/application.yml index 169d6f7..e394c93 100644 --- a/papplan/src/main/resources/application.yml +++ b/papplan/src/main/resources/application.yml @@ -11,4 +11,4 @@ spring: spring: config: activate: - on-profile: local, dev, prd \ No newline at end of file + on-profile: local, dev, prd, test \ No newline at end of file diff --git a/papplan/src/test/java/com/boogle/papplan/service/dashboard/DashBoardServiceTest.java b/papplan/src/test/java/com/boogle/papplan/service/dashboard/DashBoardServiceTest.java index 6bd7daf..746e1c6 100644 --- a/papplan/src/test/java/com/boogle/papplan/service/dashboard/DashBoardServiceTest.java +++ b/papplan/src/test/java/com/boogle/papplan/service/dashboard/DashBoardServiceTest.java @@ -1,6 +1,8 @@ package com.boogle.papplan.service.dashboard; -import com.boogle.papplan.entity.Project; +import com.boogle.papplan.dto.project.ProjectDTO; +import com.boogle.papplan.entity.*; +import com.boogle.papplan.repository.*; import com.boogle.papplan.service.project.ProjectService; import com.boogle.papplan.service.task.TaskService; import org.junit.jupiter.api.BeforeEach; @@ -8,10 +10,19 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.Assert; -@SpringBootTest +import javax.sql.DataSource; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.*; + +import static org.assertj.core.api.Assertions.*; +@SpringBootTest +@ActiveProfiles("test") public class DashBoardServiceTest { @Autowired @@ -19,18 +30,110 @@ public class DashBoardServiceTest { @Autowired private TaskService taskService; + @Autowired + private EmployeeRepository employeeRepository; + @Autowired + private ProjectRepository projectRepository; + @Autowired + private ContributorRepository contributorRepository; + @Autowired + private TaskRepository taskRepository; + + + Employees employees; + Project project; + Contributor contributor; + + List tasks = new ArrayList<>(); + + @Autowired + private DataSource dataSource; @BeforeEach - void beforeEmployee() { - + void beforeEmployee() throws SQLException { + + // given + Calendar calendar = Calendar.getInstance(); + int month = calendar.get(Calendar.MONTH); + + Department department = new Department(); department.setDept_no("PL"); + Position position = new Position(); position.setPosition_id("TEAM_LEADER"); + ProjectPriority projectPriority = new ProjectPriority(); projectPriority.setProjectPriorityId("LV1"); + ProjectStatus projectStatus = new ProjectStatus(); projectStatus.setProjectStatusId("DOING"); + TaskPriority taskPriority = new TaskPriority(); taskPriority.setTaskPriorityId("LV1"); + TaskStatus doing = new TaskStatus(); doing.setTaskStatusId("DOING"); + TaskStatus done = new TaskStatus(); done.setTaskStatusId("DONE"); + + // 회원 추가 + employees = new Employees(1, "test@boogle.com", "1234", "홍길동", department, position); + + // 프로젝트 추가 + project = new Project(1, "테스트 프로젝트", employees, + new GregorianCalendar(2024, month, 1).getTime(), + new GregorianCalendar(2024, month, 25).getTime(), + 0, new Date(), "", + projectPriority, projectStatus, new ArrayList(), new ArrayList()); + contributor = new Contributor(1L,project, employees); + + // 하위업무 추가 + Task task1 = new Task(1, project, "테스크1", employees, + new GregorianCalendar(2024, month, 1).getTime(), + new GregorianCalendar(2024,month, 13).getTime(), + new GregorianCalendar(2024,month,10).getTime(), + 100, new GregorianCalendar(2024,month,1).getTime(), + false, "", null, "", done, taskPriority); + Task task2 = new Task(2, project, "테스크2", employees, + new GregorianCalendar(2024, month, 1).getTime(), + new GregorianCalendar(2024,month, 12).getTime(), + new GregorianCalendar(2024,month,10).getTime(), + 100, new GregorianCalendar(2024,month,1).getTime(), + false, "", null, "", done, taskPriority); + Task task3 = new Task(3, project, "테스크3", employees, + new GregorianCalendar(2024, month, 1).getTime(), + new GregorianCalendar(2024,month, 12).getTime(), + null, + 50, new GregorianCalendar(2024,month,1).getTime(), + false, "", null, "", doing, taskPriority); + tasks.add(task1); tasks.add(task2); tasks.add(task3); } + /** + * T006-1 + * 대시보드 집계, 필터링 로직 테스트 + * 테스트를 진행하는 달을 기준으로 값을 비교 + */ @Test @Transactional - @DisplayName("대시보드 데이터 집계 및 필터링") + @DisplayName("TEST1 - 대시보드 데이터 집계 및 필터링") public void 대시보드_집계_필터링() { - } + // given + int empno = 1; + HashMap serviceResult = new HashMap<>(); + LocalDate today = LocalDate.now(); + int day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); + + employeeRepository.save(employees); + projectRepository.save(project); + contributorRepository.save(contributor); + taskRepository.saveAll(tasks); + + // when + Optional> projectData = projectService.findProjectsByEmpNoDashBoard(empno); + Optional> taskData = taskService.getTasksByEmpNoDashBoard(empno); + projectData.ifPresent(serviceResult::putAll); + taskData.ifPresent(serviceResult::putAll); + // then + assertThat(serviceResult).isNotNull(); + assertThat((List)serviceResult.get("tasks")).hasSize(1); // DOING 상태인 프로젝트 개수 확인 + assertThat((List)serviceResult.get("projects")).hasSize(1); // DOING 상태인 하위업무 개수 확인 + if(day == 12 || day == 13) + assertThat(serviceResult.get("task_today")).isEqualTo(1); + if((day - 12) == 1 || (day - 13) == 1) + assertThat(serviceResult.get("task_yesterday")).isEqualTo(1); + assertThat(serviceResult.get("task_week")).isIn(0,1,2); + + } } diff --git a/papplan/src/test/resources/db/data-script/dashboard/data-dashboard-test1 b/papplan/src/test/resources/db/data-script/dashboard/data-dashboard-test1 new file mode 100644 index 0000000..9ad8227 --- /dev/null +++ b/papplan/src/test/resources/db/data-script/dashboard/data-dashboard-test1 @@ -0,0 +1,3 @@ +INSERT INTO employees (email,password,name,dept_no,position_id) VALUES +('test@boogle.com','1234','김지원','HR','TEAM_LEADER') + diff --git a/papplan/src/test/resources/db/data-script/data-department.sql b/papplan/src/test/resources/db/data-script/data-department.sql new file mode 100644 index 0000000..4c4e9e0 --- /dev/null +++ b/papplan/src/test/resources/db/data-script/data-department.sql @@ -0,0 +1,42 @@ +INSERT INTO department (dept_no,dept_name) VALUES +('PL','기획팀'), +('DS','디자인팀'), +('DEV1','개발1팀'), +('DEV2','개발2팀'), +('MKT1','마케팅1팀'), +('MKT2','마케팅2팀'), +('HR','인사팀'), +('FIN','재무팀'), +('SLS','영업팀'), +('CS','CS팀'), +('OS','해외영업팀'), +('SYS','시스템개발팀'); + +INSERT INTO job_title(position_id,position_name) VALUES +('TEAM_LEADER','팀장'), +('STAFF','사원'); + +INSERT INTO project_priority (project_priority_id,project_priority_name) VALUES +('LV0','긴급'), +('LV1','높음'), +('LV2','보통'), +('LV3','낮음'); + +INSERT INTO project_status (project_status_id,project_status_name) VALUES +('TODO','진행예정'), +('DOING','진행중'), +('DONE','완료'), +('HOLD','보류'); + +INSERT INTO task_priority (task_priority_id,task_priority_name) VALUES +('LV0','긴급'), +('LV1','높음'), +('LV2','보통'), +('LV3','낮음'); + +INSERT INTO task_status (task_status_id,task_status_name) VALUES +('TODO','진행예정'), +('DOING','진행중'), +('DONE','완료'), +('HOLD','보류'), +('TEST','테스트'); diff --git a/papplan/src/test/resources/db/schema-script/create.sql b/papplan/src/test/resources/db/schema-script/create.sql new file mode 100644 index 0000000..78c8504 --- /dev/null +++ b/papplan/src/test/resources/db/schema-script/create.sql @@ -0,0 +1,94 @@ +CREATE TABLE department ( + dept_no VARCHAR(20) NOT NULL, + dept_name VARCHAR(20) NOT NULL, + PRIMARY KEY (dept_no) +); + +CREATE TABLE job_title ( + position_id VARCHAR(20) NOT NULL, + position_name VARCHAR(20) NOT NULL, + PRIMARY KEY (position_id) +); + +CREATE TABLE employees ( + eno INTEGER AUTO_INCREMENT PRIMARY KEY, + email VARCHAR(50) NOT NULL UNIQUE, + password VARCHAR(65) NOT NULL, + name VARCHAR(20) NOT NULL, + dept_no VARCHAR(20) NOT NULL, + position_id VARCHAR(20) NOT NULL, + CONSTRAINT fk_dept_no FOREIGN KEY (dept_no) REFERENCES department(dept_no), + CONSTRAINT fk_position_id FOREIGN KEY (position_id) REFERENCES job_title(position_id) +); + +CREATE TABLE project_priority ( + project_priority_id VARCHAR(20) NOT NULL, + project_priority_name VARCHAR(20) NOT NULL, + PRIMARY KEY (project_priority_id) +); + +CREATE TABLE project_status ( + project_status_id VARCHAR(20) NOT NULL, + project_status_name VARCHAR(20) NOT NULL, + PRIMARY KEY (project_status_id) +); + +CREATE TABLE project ( + proj_no INTEGER AUTO_INCREMENT PRIMARY KEY, + proj_title VARCHAR(50) NOT NULL, + proj_pm INTEGER NOT NULL, + proj_start_date DATE NOT NULL, + proj_end_date DATE NOT NULL, + proj_percent INTEGER, + proj_create_date DATE NOT NULL, + proj_desc VARCHAR(300) NOT NULL, + projp_no VARCHAR(20) NOT NULL, + projs_no VARCHAR(20) NOT NULL, + FOREIGN KEY (proj_pm) REFERENCES employees (eno), + FOREIGN KEY (projp_no) REFERENCES project_priority (project_priority_id), + FOREIGN KEY (projs_no) REFERENCES project_status (project_status_id) +); + +CREATE TABLE contributor ( + id BIGINT NOT NULL AUTO_INCREMENT, + proj_no INTEGER NOT NULL, + eno INTEGER NOT NULL, + PRIMARY KEY (id), + CONSTRAINT FK_proj_no FOREIGN KEY (proj_no) REFERENCES project (proj_no), + CONSTRAINT FK_eno FOREIGN KEY (eno) REFERENCES employees (eno) +); + +CREATE TABLE task_priority ( + task_priority_id VARCHAR(20) NOT NULL, + task_priority_name VARCHAR(20) NOT NULL, + PRIMARY KEY (task_priority_id) +); + +CREATE TABLE task_status ( + task_status_id VARCHAR(20) NOT NULL, + task_status_name VARCHAR(20) NOT NULL, + PRIMARY KEY (task_status_id) +); + +CREATE TABLE task ( + task_no INTEGER NOT NULL AUTO_INCREMENT, + proj_no INTEGER NOT NULL, + task_title VARCHAR(50) NOT NULL, + assignee_eno INTEGER NOT NULL, + task_start_date DATE NOT NULL, + task_end_date DATE NOT NULL, + task_finish_date DATE, + task_percent INTEGER NOT NULL, + task_create_date DATE NOT NULL, + task_test BOOLEAN NOT NULL, + task_test_url VARCHAR(255), + task_update_date DATE, + task_desc VARCHAR(300) NOT NULL, + task_status_id VARCHAR(20) NOT NULL, + task_priority_id VARCHAR(20) NOT NULL, + PRIMARY KEY (task_no), + CONSTRAINT FK_proj_no_task FOREIGN KEY (proj_no) REFERENCES project (proj_no), + CONSTRAINT FK_assignee_eno FOREIGN KEY (assignee_eno) REFERENCES employees (eno), + CONSTRAINT FK_task_status_id_task FOREIGN KEY (task_status_id) REFERENCES task_status (task_status_id), + CONSTRAINT FK_task_priority_id_task FOREIGN KEY (task_priority_id) REFERENCES task_priority (task_priority_id) +); \ No newline at end of file diff --git a/papplan/target/classes/com/boogle/papplan/entity/Contributor.class b/papplan/target/classes/com/boogle/papplan/entity/Contributor.class index 9ba9e41c5fd4ce8cdabc0c97f419e60516728a03..73b95eaa4a9c4caf96ff0c84b665a4716ce71881 100644 GIT binary patch delta 1245 zcmZuxNl#Qk5dQkjTl&rPjKhdJ4@N)*ls5}%;x>T$!olqV2gPMXL>9sQ%2g9hBpolB zcoY+j(I}X3Fq#-mNc<08Jb3hK;_~&(07^`zyQ-_cs;;kI^?a^-lBt{fHTxDo7q0rS z5b73l*ty|>{_6tnz?B=N(Q8rOw_2eAje1;cV~RBjYq3s07acN< z7KK)<*Wbkow@o2LRx9gv5Jeh!g#y}{rgLa)==x59$cDDwSNE+#M4Z%Z)(O$8-#a~t zfhaCu(8EO&J*1o64`M`rbGz&@a?{7%7T3dNfd;A#0ka(*A0N4K8EaTonhl9ivJd)> zmx++Qe(Gf-WKOyI_-=Gv!*1+6fn87#hB)^;sq58d%3%1<0|ZaBD1O3(x68DRpu=5QuoE`b-`B&7R9J;lS9DK-F`;b_-zT+xM=qE zLqB817J?>N`Jy+DBoF*Ltd2#C?UX+A-OYxN;n>fz?_oWF6M2?>2kS^KoWZj4k;?L; zIc`Ne{|T|c{)n0>sC;10VAVV#Q*;Q)6y3lv822MmQ_yFkUh4v+spt{XRFr{dAhHaJ z2VNkVN8gFwI%NICN)KuNr1)8uRQPE zJuZDc$&OCDtIQ^o?6^oSGMSx%m!CoNS!2%>ZQ}^+sz(}z6<1TyDZ5Cn93%sWF8w1m zIAICFDj~#g4v+1jdZzfz3328P^BDVIQx(Rcti%zvh+JwVgq%*{bcGo@d87WK><1ABJC}AU| Zx%M1oKbNF_o@*GRJeenO3FEke;1A3Ws^|a! delta 1035 zcmZ9K%TH556vn@~y^p!=wDe)2m$m}ZBJ=_Hh>w;ciUwVv3nL3RQUz%dL4xiyCMG7j zaM4WI=w4i)!I(fojM2nkH1Q8`>DIV&je6#m3XCOwMoayhwa)ZTa$h{T+Z3 z=DpD1v7ieWFl9e$P7G9MtG5RkJl#EGHaKhxUI8BjL%KHCT05NP907qQ1Z(Akl!pZ( z*i(CUgz{#A7Q|}bl&4i7j)XK>TU^6lfi}b#%*pvX<(UO99o!+X51n$19VK&GpbPuu zA}e-k=n=>u%fKt;h05^U#H8EJxiGby7wAQw{KX!>S=4$xvctR>nDAl}*DXvbts)#! z3e6{JS06=2(a5aH19mJT>MNYa8LBdu^*fKqH6CJ7`I%=k{uL55oT6DB0yr3^dG|)e zO&i0Z-S(t3?VNmQ_XMb0I^ZmAHW+-eY9}=RYkAKXmltdiAck$VNxmgD^iRD{WZP=Q zwbGxUz6gpPqiEByPqLZkF!bf@2k@sbJj>bl;G?x8;(YF+?AnQ`9V7L9|608phF2QN6b^#j7+p<=1Fb Paf4P~%4RT&TX6mYG?thE diff --git a/papplan/target/classes/com/boogle/papplan/entity/Department.class b/papplan/target/classes/com/boogle/papplan/entity/Department.class index 1d787e2bcfb6bd7ea8c3290700f644bbdb46c4d5..ce712b3fc6e023590cbf0bba67320f54e39ae67b 100644 GIT binary patch delta 1077 zcmZ`&%}!H67(LVb*WTXLf~5@kT;_SPk^2!%lGVuTp4J=#e$I7PuMLc%C>Z4-K z2^hAzE|75g^n_C|R*rQ-AO!`36_!YsAj&w4VT_b<4xD7{1zhATa0m$(Kj4p6C0=F&Egr1a!1mU#Jntt;;xzj`B5xV^u$vs&Gx-RP z5;fM8YkQ%28{JNRKxE4;vD?Icl+gxdm7GzRa|)MvC$hDym(!G-ipQA!I72uN9-gGE@(QO(!?c`%0n2{sxYY#@iL%xc4PI|ox?cn5e z^TnlWz`73#U6{iS(rC2#CLBMl{I&U$Iwtv`+*R?kdx sh1ylM)+?y=Qg(O`CpgQ8Smt-Cf(6{?hM$W?evh!qmC5J{DtL#vWW031hU)15Ki z)r?nqP#m+;4VPhn4--j@g-GK&j#D_zQ^O%-WIXX8Px;NtzDN8mfeuL^ z>3{=&C0q66zNX2ED7jkCPBhK##{g?ImUbIUr>g!0BI?F`OFBzc~)S38^gfcPd* zrMc6AAJQaMNYsJst`%*hImbjxqYEps34ESXW`O*T%z%_?1XFZ&ql2=FBJaKqSFSdu`dvf|(`)s9YnaAG=CtD}O1uI( z`ml-_`V3@o2bYLU4s{%ti7ZMO#T6nOYpgR%V3PV5H)2i{MJIj^f6 z&2pL|O{A4L29B_-+>e#}4DSuWZrk~DzZgo5QfE47c-sDg=` kVI#LN#8du%xA_cLILW(o#Aqz@d4P3VF403g=KRvX0gOIjSO5S3 diff --git a/papplan/target/classes/com/boogle/papplan/entity/Employees.class b/papplan/target/classes/com/boogle/papplan/entity/Employees.class index e95e75771d977c9c3774c7677d9ba539aaf80017..cefc7589a59be9a41dc655a61081338e24b31cf1 100644 GIT binary patch literal 5182 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 A#Q*>R delta 1006 zcma)5%T5$Q6g~a!>2BKzIBjs$h>&1rNQf>>@G&yTQ&1dHKzaD21;yuVT*<=39VVt$ zZu|ll5OL#zXyVG9|D(oJUCm5~%)&)aom+M8x#!-h*(ts)dO!bu-2reO^(}A7`24}x z)Wg`rL##Mh4bX>2V%Gklt%<|Vxb{rMPDy(q-aGG(7og!RbeyX*xiSxJ85b}BpW7B} z{#M19+qp7GagQ|c#6$rXi2|Mic?@BgtA-;uD*42HT;-Wn+D3kpK!+5Nax$TrY&DX* zRkHZyMmuuc26+aTD7oH3^T7XVMp?}$(VV~}jKt<-)}|*Vjm!{tZ4M=!WPFC$ zPivP+SJz`BWXBEXA*-mNT;XOX4zWsA#NNluAeHt4aunHUNN->YSD915E7W-7I=Zon zYuqzX!hK8=nH=*7t`k|bFn}9GHr7~YhRDH76fsNWVvgEn1djU~p#%R9#2f!uoQ`*j zCQWoGb0qe&tnAY&e~15xAp4wlCy@{uZY_G0Zd1itGTbtHxm6XpAg&EkM!iQRP+fY&Y>P7UL^_}U1Qr+>=)x&15}ByrAeM+M%!zNoYv*?Qiih`g&Frn9?xQWO nVB${F$X%S|D*tZx_?@nEk`K7yGFayK7*7~^L{IUY^XvEr!lqvK diff --git a/papplan/target/classes/com/boogle/papplan/entity/Project.class b/papplan/target/classes/com/boogle/papplan/entity/Project.class index 338837ae8ac0259b6784cc01254a17d41e448b00..7659785572bb1f28e569c7abe0c23fcad86cf741 100644 GIT binary patch literal 10191 zcmd^FX>=P`6~52bu8}S8o+M40#v!(B*EC&1$Ei!=*sYD7n%X2Z0bIqN+Nx#AmE=I! zp=B#{BZZc-Zw-_{7vhwb(gkP>W#6H!W#6}d94O(tZ{BD|%Gg%^a1MuaJkovdefN9Y zefQpZ@)Q5Q|3MAG45r&kjxc!B@5^&ZuPWSNTqwY zMuHnPYGQDd!2_9TZs4J|Xw=H{mi1$1ZVHp-`ZXG@Wqb|e`*SAXw#sQ5t>@W=xM`P} zpJM#!8f~OA1l4jSR%tAk%I2_Yf;v~2&{!#0jKL-lY{GaAiON>Iyua?XU_RI;!)RRAcH zFC;UCybxR5wrLxi%l?!pRJ7ma&cnN0;__C2tlo3^?yN9K1yyVB>Q%0AdD(pci)UdQ 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 b=P3UIPYCia@%*0th!S6o{Rv+BZ>0YRikA(6 literal 9213 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 Xcs|mQ`Q8xx4EQ=i6hx2cBkO+wP@=+% literal 6720 zcma)A`G4F-6@Q9vTaFz&&fUb#xpv%cNlOB86L5UAZXL(e8<(cQBJYlE#j><$wE=S# zDEEC+?)$!4Xxb8>+*i4eANgDO@O`5hOI9cA{Xr{f=KKB5=*^q==IwL;yYVa$oumJB z&^Bsnqh_00sMVr_rC=?;7zE3n$XA?7#dG|;@FO=`&ljBPszt34ZnJ?!{WDjcYfc`3 z<@~fCiDeOvvRJ!K9n@)2TO|yxic)0Jk(rx|&cz_fv~B99?G|gI9gBPWa|oCpfN@mRIU z_43>z!Fz1l%it~sPx@u<;LqG|(*bVZ&h1mK?^aiI*Fl>Ou`MNKPJ|^GkSVv?ba;a@ z9ttRF%2At+(Q$l_{B%);)zbF85CooZd^w?f(Pl#%X@h`CH6y0f2r?Ns+t6Frtju8v7wSbfJc%e5N4-^XEc02;n3a<+f1J z$k9&B;l(zcrBST-vWQro{c0dLlv;D`S&Tks(|LLcW(>6Q8!S8ETe}z2$85Slz4JB|*piy4+>W~zYsm>5aAVy>>CSpnu` zXJnD9Hm#CpQI8VQUS`qomNFVU+J}hf+Z0g6qTOrGsu&Oak`q1XMk{!#MvfmE)jW{QO9l{HLGM)$-!4Tzg>yVUB``A9}>7(cz~H#T8N z)i#Q3s?jy)i;v(RquSazhK9^g3E^qu1N?26`j*Ndi}2iJWxJ@oM7I zl1006SJESDJ6N>$ff~}?npkkF?xH8gd_RDjxmbUT_P_|MNEc4NBEqU$jf7tk`ROwD z-BDxLJ;E0u0&#hP#|5mt8u9xw0%ctW#w)B>Bx8DFa<(vCc*vpy#xceNueRnxyV-Zv zkj2^}n6>C5k{&YRFFO8uA-LqT_@EJSU*P&1sxpmBxpu$ic@AvSgndFPaTIYh;5^;x z34b|S;jU8_wJeFKggtGZ!4!9@&ug9;yMj-%bsjGYp83vDEQyeXeB7mIU!ak!mfZ{fVYvJkJmd7=))fi*=jVEl?T!Ts(8S#F2IsxoU5mv#85d= zr9YpX_xjZsNswdUb_G+CqE4GG8etQ(e>w%S?4{GrJDVM#igU7j@ zgYL~D)ugN=;90%+{D>oACH9_bPb>YQlm1A5YNO{k0sk4{F$v$Ue=S%Q`FPYgCr>%0 zC+~EI)2#`)uS^(uv)8(A{OXsMY&U|WfM^bhE%75Kb&fc^Ur8HgD8n{ z$Mfc0)DG?RSBw73HpxZ!nGMcaBZHN=+TllTl)la{I{N934JXwN${F=*;)=ROIih|| z+)%f$ccq_EHR#vG&vXlWnSPF4N55%TIA;xE&rbWuZ{r@OFOaDJfzx6`0%{9M7K+^hx>@wB^W;X&}nUy1-9sAnHp6+?7?7ANm=zqR>>BUfk7C zpVbN|H|q}dISoYd`Fxqr>t58Gs<%rHB1iuMMn}P^I?OZtA~2{t6((iqFR`J&to2cc zDoAFvzM>JRG|h;w#)v`mqLRe#*Ra-k+%4Q&hMy$saXf6Juj7|3MbuBn@zSBrXt!p43$&$|)$tZjcMZWtaBm$xd7Z2$ z@RZ(@wq$b*;awWNkcjPsL{9FUSvnk9EPDj8=oCAn8hUN=kb zYg97Mc}nttlzhtUM7K058K+1kc}Pk=ZJy;|qmpr6Rg#CL9k8YqI4XjY`Jn z2_<<-O8$a=X_CCFQOWoKq9jjC$zN^6WDjRkK3ZHDeu`d%>uy{x#WjKJUR*P{F5!9r z*JWHU$Mp(aMO=%x1TOamtr2CzYIiEEUf4LS;O{UMlgIHxp3^D8ZY9`EzXoa>{YDo4>-yz!Cx@AOal HH|_mD7Fh52 diff --git a/papplan/target/test-classes/com/boogle/papplan/PapplanApplicationTests.class b/papplan/target/test-classes/com/boogle/papplan/PapplanApplicationTests.class index 1a326fe1ae4d6bd6f896090900125338af946599..7661117d1b2d414407b1faf1e2cc2a9fab6c4505 100644 GIT binary patch delta 89 zcmZ3>yp~z~)W2Q(7#J9A8HBhPm>8JZ8CZB2SQ*$R+A0Cr920qU*%=vFobyvsCl)+Z fW(O((0Y)GODgx4+K$bp`28(EIXJDLM!e|Kq!{rSL delta 89 zcmZ3>yq1~w)W2Q(7#J9A8HCswm?qljGP5(VOcYlVWMp7*&QD3@Vqj+A Date: Mon, 15 Apr 2024 19:08:13 +0900 Subject: [PATCH 3/3] delete sql --- .../dashboard/data-dashboard-test1 | 3 -- .../db/data-script/data-department.sql | 42 ------------------- 2 files changed, 45 deletions(-) delete mode 100644 papplan/src/test/resources/db/data-script/dashboard/data-dashboard-test1 delete mode 100644 papplan/src/test/resources/db/data-script/data-department.sql diff --git a/papplan/src/test/resources/db/data-script/dashboard/data-dashboard-test1 b/papplan/src/test/resources/db/data-script/dashboard/data-dashboard-test1 deleted file mode 100644 index 9ad8227..0000000 --- a/papplan/src/test/resources/db/data-script/dashboard/data-dashboard-test1 +++ /dev/null @@ -1,3 +0,0 @@ -INSERT INTO employees (email,password,name,dept_no,position_id) VALUES -('test@boogle.com','1234','김지원','HR','TEAM_LEADER') - diff --git a/papplan/src/test/resources/db/data-script/data-department.sql b/papplan/src/test/resources/db/data-script/data-department.sql deleted file mode 100644 index 4c4e9e0..0000000 --- a/papplan/src/test/resources/db/data-script/data-department.sql +++ /dev/null @@ -1,42 +0,0 @@ -INSERT INTO department (dept_no,dept_name) VALUES -('PL','기획팀'), -('DS','디자인팀'), -('DEV1','개발1팀'), -('DEV2','개발2팀'), -('MKT1','마케팅1팀'), -('MKT2','마케팅2팀'), -('HR','인사팀'), -('FIN','재무팀'), -('SLS','영업팀'), -('CS','CS팀'), -('OS','해외영업팀'), -('SYS','시스템개발팀'); - -INSERT INTO job_title(position_id,position_name) VALUES -('TEAM_LEADER','팀장'), -('STAFF','사원'); - -INSERT INTO project_priority (project_priority_id,project_priority_name) VALUES -('LV0','긴급'), -('LV1','높음'), -('LV2','보통'), -('LV3','낮음'); - -INSERT INTO project_status (project_status_id,project_status_name) VALUES -('TODO','진행예정'), -('DOING','진행중'), -('DONE','완료'), -('HOLD','보류'); - -INSERT INTO task_priority (task_priority_id,task_priority_name) VALUES -('LV0','긴급'), -('LV1','높음'), -('LV2','보통'), -('LV3','낮음'); - -INSERT INTO task_status (task_status_id,task_status_name) VALUES -('TODO','진행예정'), -('DOING','진행중'), -('DONE','완료'), -('HOLD','보류'), -('TEST','테스트');