diff --git a/build.gradle b/build.gradle index 2061fcd..81f5e45 100644 --- a/build.gradle +++ b/build.gradle @@ -49,10 +49,10 @@ dependencies { testImplementation('org.springframework.boot:spring-boot-starter-test') // JDBC -// implementation 'org.springframework.boot:spring-boot-starter-jdbc' + implementation 'org.springframework.boot:spring-boot-starter-jdbc' // JPA -// implementation 'org.springframework.boot:spring-boot-starter-data-jpa' + implementation 'org.springframework.boot:spring-boot-starter-data-jpa' // validation // implementation 'org.springframework.boot:spring-boot-starter-validation' diff --git a/http/document.http b/http/document.http new file mode 100644 index 0000000..76f6a25 --- /dev/null +++ b/http/document.http @@ -0,0 +1,20 @@ +### document 단건 조회 +GET http://localhost:8080/api/documents/1 + +### document outbox 조회 +GET http://localhost:8080/api/documents/outbox?drafterId=1 + +### document create +POST http://localhost:8080/api/documents +Content-Type: application/json + +{ + "title": "교육비 결재 요청", + "category": "EDUCATION", + "contents": "사외교육비 결재 요청드립니다.", + "drafterId": 1, + "approverIds": [ + 1, + 2 + ] +} diff --git a/src/main/java/playground/constants/ApprovalState.java b/src/main/java/learning/constants/ApprovalState.java similarity index 88% rename from src/main/java/playground/constants/ApprovalState.java rename to src/main/java/learning/constants/ApprovalState.java index e4f6937..b85e689 100644 --- a/src/main/java/playground/constants/ApprovalState.java +++ b/src/main/java/learning/constants/ApprovalState.java @@ -1,4 +1,4 @@ -package playground.constants; +package learning.constants; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/playground/constants/Category.java b/src/main/java/learning/constants/Category.java similarity index 89% rename from src/main/java/playground/constants/Category.java rename to src/main/java/learning/constants/Category.java index 6880889..e38e766 100644 --- a/src/main/java/playground/constants/Category.java +++ b/src/main/java/learning/constants/Category.java @@ -1,4 +1,4 @@ -package playground.constants; +package learning.constants; import lombok.Getter; import lombok.RequiredArgsConstructor; diff --git a/src/main/java/playground/domain/Document.java b/src/main/java/learning/domain/Document.java similarity index 97% rename from src/main/java/playground/domain/Document.java rename to src/main/java/learning/domain/Document.java index c6cdda0..9cac4dc 100644 --- a/src/main/java/playground/domain/Document.java +++ b/src/main/java/learning/domain/Document.java @@ -1,9 +1,9 @@ -package playground.domain; +package learning.domain; import lombok.Builder; import lombok.Getter; -import playground.constants.ApprovalState; -import playground.constants.Category; +import learning.constants.ApprovalState; +import learning.constants.Category; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/playground/domain/DocumentApproval.java b/src/main/java/learning/domain/DocumentApproval.java similarity index 88% rename from src/main/java/playground/domain/DocumentApproval.java rename to src/main/java/learning/domain/DocumentApproval.java index 9f4c167..3ce369f 100644 --- a/src/main/java/playground/domain/DocumentApproval.java +++ b/src/main/java/learning/domain/DocumentApproval.java @@ -1,8 +1,8 @@ -package playground.domain; +package learning.domain; import lombok.Builder; import lombok.Setter; -import playground.constants.ApprovalState; +import learning.constants.ApprovalState; @Builder @Setter diff --git a/src/main/java/playground/domain/User.java b/src/main/java/learning/domain/User.java similarity index 95% rename from src/main/java/playground/domain/User.java rename to src/main/java/learning/domain/User.java index 5275bb6..67be52c 100644 --- a/src/main/java/playground/domain/User.java +++ b/src/main/java/learning/domain/User.java @@ -1,4 +1,4 @@ -package playground.domain; +package learning.domain; import lombok.Builder; import lombok.Getter; diff --git a/src/main/java/playground/PlaygroundApplication.java b/src/main/java/playground/PlaygroundApplication.java index 3c05485..4aa21ab 100644 --- a/src/main/java/playground/PlaygroundApplication.java +++ b/src/main/java/playground/PlaygroundApplication.java @@ -2,7 +2,9 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +@EnableJpaAuditing @SpringBootApplication public class PlaygroundApplication { diff --git a/src/main/java/playground/dao/document/DocumentApprovalDao.java b/src/main/java/playground/dao/document/DocumentApprovalDao.java new file mode 100644 index 0000000..ee536d7 --- /dev/null +++ b/src/main/java/playground/dao/document/DocumentApprovalDao.java @@ -0,0 +1,38 @@ +package playground.dao.document; + +import lombok.RequiredArgsConstructor; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.support.GeneratedKeyHolder; +import org.springframework.jdbc.support.KeyHolder; +import org.springframework.stereotype.Repository; +import playground.domain.document.DocumentApproval; + +import java.sql.PreparedStatement; +import java.util.Objects; + +@RequiredArgsConstructor +@Repository +public class DocumentApprovalDao { + + private final JdbcTemplate jdbcTemplate; + + public Long save(DocumentApproval documentApproval) { + String sql = "insert into document_approval(document_id, approver_id, approval_state, approval_order, approval_comment) values(?,?,?,?,?)"; + + KeyHolder keyHolder = new GeneratedKeyHolder(); + jdbcTemplate.update( + connection -> { + PreparedStatement pstmt = connection.prepareStatement(sql, new String[]{"id"}); + pstmt.setLong(1, documentApproval.getDocumentId()); + pstmt.setLong(2, documentApproval.getApproverId()); + pstmt.setString(3, documentApproval.getApprovalState().name()); + pstmt.setInt(4, documentApproval.getApprovalOrder()); + pstmt.setString(5, documentApproval.getApprovalComment()); + return pstmt; + }, + keyHolder + ); + + return Objects.requireNonNull(keyHolder.getKey()).longValue(); + } +} diff --git a/src/main/java/playground/dao/document/DocumentDao.java b/src/main/java/playground/dao/document/DocumentDao.java new file mode 100644 index 0000000..a1e3a52 --- /dev/null +++ b/src/main/java/playground/dao/document/DocumentDao.java @@ -0,0 +1,76 @@ +package playground.dao.document; + +import lombok.RequiredArgsConstructor; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.support.GeneratedKeyHolder; +import org.springframework.jdbc.support.KeyHolder; +import org.springframework.stereotype.Repository; +import playground.domain.document.ApprovalState; +import playground.domain.document.Category; +import playground.domain.document.Document; + +import java.sql.PreparedStatement; +import java.util.List; +import java.util.Objects; + +@RequiredArgsConstructor +@Repository +public class DocumentDao { + + private final JdbcTemplate jdbcTemplate; + + public Document findById(Long id) { + String sql = "select * from document where id = ?"; + + return jdbcTemplate.queryForObject( + sql, + (rs, rowNum) -> Document.builder() + .id(id) + .title(rs.getString("title")) + .category(Category.valueOf(rs.getString("category"))) + .contents(rs.getString("contents")) + .approvalState(ApprovalState.valueOf(rs.getString("approval_state"))) + .drafterId(rs.getLong("drafter_id")) + .build(), + id + ); + } + + public List findStateDocumentsByDrafterId(Long drafterId, ApprovalState approvalState) { + String sql = "select * from document where drafter_id = ? and approval_state = ?"; + + return jdbcTemplate.query( + sql, + (rs, rowNum) -> Document.builder() + .id(rs.getLong("id")) + .title(rs.getString("title")) + .category(Category.valueOf(rs.getString("category"))) + .approvalState(approvalState) + .drafterId(drafterId) + .build(), + drafterId, + approvalState.name() + ); + } + + public Long save(Document document) { + String sql = "insert into document(title, category, contents, approval_state, drafter_id) values(?,?,?,?,?)"; + + KeyHolder keyHolder = new GeneratedKeyHolder(); + jdbcTemplate.update( + connection -> { + PreparedStatement pstmt = connection.prepareStatement(sql, new String[]{"id"}); + pstmt.setString(1, document.getTitle()); + pstmt.setString(2, document.getCategory().name()); + pstmt.setString(3, document.getContents()); + pstmt.setString(4, document.getApprovalState().name()); + pstmt.setLong(5, document.getDrafterId()); + return pstmt; + }, + keyHolder + ); + + return Objects.requireNonNull(keyHolder.getKey()).longValue(); + } + +} diff --git a/src/main/java/playground/dao/document/dto/DocumentTitleResponse.java b/src/main/java/playground/dao/document/dto/DocumentTitleResponse.java new file mode 100644 index 0000000..36e6aa2 --- /dev/null +++ b/src/main/java/playground/dao/document/dto/DocumentTitleResponse.java @@ -0,0 +1,33 @@ +package playground.dao.document.dto; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import playground.domain.document.ApprovalState; +import playground.domain.document.Category; +import playground.domain.document.Document; + +@Getter +@NoArgsConstructor +public class DocumentTitleResponse { + + private Long id; + private String title; + private Category category; + private ApprovalState approvalState; + + public DocumentTitleResponse(Document document) { + this.id = document.getId(); + this.title = document.getTitle(); + this.category = document.getCategory(); + this.approvalState = document.getApprovalState(); + } + + public String getCategoryText() { + return category.getText(); + } + + public String getApprovalStateText() { + return approvalState.getText(); + } + +} diff --git a/src/main/java/playground/dao/user/UserDao.java b/src/main/java/playground/dao/user/UserDao.java new file mode 100644 index 0000000..aded5f8 --- /dev/null +++ b/src/main/java/playground/dao/user/UserDao.java @@ -0,0 +1,50 @@ +package playground.dao.user; + +import lombok.RequiredArgsConstructor; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Repository; +import playground.domain.user.User; + +import java.util.List; +import java.util.stream.Collectors; + +@RequiredArgsConstructor +@Repository +public class UserDao { + + private final JdbcTemplate jdbcTemplate; + + public User findById(Long id) { + String sql = "select * from user where id = ?"; + + return jdbcTemplate.queryForObject( + sql, + (rs, rowNum) -> User.builder() + .id(id) + .email(rs.getString("email")) + .password(rs.getString("password")) + .name(rs.getString("name")) + .build(), + id + ); + } + + public List findAllByIds(List ids) { + String sql = "select * from user where id in (%s)"; + String inParams = ids.stream() + .map(id -> "?") + .collect(Collectors.joining(",")); + + return jdbcTemplate.query( + String.format(sql, inParams), + (rs, rowNum) -> User.builder() + .id(rs.getLong("id")) + .email(rs.getString("email")) + .password(rs.getString("password")) + .name(rs.getString("name")) + .build(), + ids.toArray() + ); + } + +} diff --git a/src/main/java/playground/domain/document/ApprovalState.java b/src/main/java/playground/domain/document/ApprovalState.java new file mode 100644 index 0000000..b1712ca --- /dev/null +++ b/src/main/java/playground/domain/document/ApprovalState.java @@ -0,0 +1,17 @@ +package playground.domain.document; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum ApprovalState { + + DRAFTING("기안"), + APPROVED("승인"), + CANCELED("거절"), + ; + + private final String text; + +} diff --git a/src/main/java/playground/domain/document/Category.java b/src/main/java/playground/domain/document/Category.java new file mode 100644 index 0000000..a8f6ed5 --- /dev/null +++ b/src/main/java/playground/domain/document/Category.java @@ -0,0 +1,16 @@ +package playground.domain.document; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum Category { + + OPERATING_EXPENSES("운영비"), + EDUCATION("교육") + ; + + private final String text; + +} diff --git a/src/main/java/playground/domain/document/Document.java b/src/main/java/playground/domain/document/Document.java new file mode 100644 index 0000000..ee51c9b --- /dev/null +++ b/src/main/java/playground/domain/document/Document.java @@ -0,0 +1,37 @@ +package playground.domain.document; + +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Entity +@Table(name = "DOCUMENT") +@Getter +@NoArgsConstructor +public class Document { + + @Id + @Column(name = "ID") + private Long id; + + private String title; + private Category category; + private String contents; + + @Enumerated(EnumType.STRING) + private ApprovalState approvalState; + private Long drafterId; + + @Builder + private Document(Long id, String title, Category category, String contents, ApprovalState approvalState, Long drafterId) { + this.id = id; + this.title = title; + this.category = category; + this.contents = contents; + this.approvalState = approvalState; + this.drafterId = drafterId; + } + +} diff --git a/src/main/java/playground/domain/document/DocumentApproval.java b/src/main/java/playground/domain/document/DocumentApproval.java new file mode 100644 index 0000000..13599d8 --- /dev/null +++ b/src/main/java/playground/domain/document/DocumentApproval.java @@ -0,0 +1,37 @@ +package playground.domain.document; + +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Entity +@Table(name = "DOCUMENT_APPROVAL") +@Getter +@NoArgsConstructor +public class DocumentApproval { + + @Id + @Column(name = "ID") + private Long id; + + private Long documentId; + private Long approverId; + + @Enumerated(EnumType.STRING) + private ApprovalState approvalState; + private Integer approvalOrder; + private String approvalComment; + + @Builder + public DocumentApproval(Long id, Long documentId, Long approverId, ApprovalState approvalState, Integer approvalOrder, String approvalComment) { + this.id = id; + this.documentId = documentId; + this.approverId = approverId; + this.approvalState = approvalState; + this.approvalOrder = approvalOrder; + this.approvalComment = approvalComment; + } + +} diff --git a/src/main/java/playground/domain/user/User.java b/src/main/java/playground/domain/user/User.java new file mode 100644 index 0000000..2d31ad4 --- /dev/null +++ b/src/main/java/playground/domain/user/User.java @@ -0,0 +1,34 @@ +package playground.domain.user; + +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "USER") +@Getter +@NoArgsConstructor +public class User { + + @Id + @Column(name = "ID") + private Long id; + + private String email; + private String password; + private String name; + + @Builder + public User(Long id, String email, String password, String name) { + this.id = id; + this.email = email; + this.password = password; + this.name = name; + } + +} diff --git a/src/main/java/playground/jpa/repository/DocumentRepository.java b/src/main/java/playground/jpa/repository/DocumentRepository.java new file mode 100644 index 0000000..4a00997 --- /dev/null +++ b/src/main/java/playground/jpa/repository/DocumentRepository.java @@ -0,0 +1,11 @@ +package playground.jpa.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import playground.service.document.dto.DocumentResponseDto; + +import java.util.Optional; + +public interface DocumentRepository extends JpaRepository { + + public Optional findById(Long id); +} diff --git a/src/main/java/playground/service/document/DocumentService.java b/src/main/java/playground/service/document/DocumentService.java new file mode 100644 index 0000000..5bc6abd --- /dev/null +++ b/src/main/java/playground/service/document/DocumentService.java @@ -0,0 +1,65 @@ +package playground.service.document; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import playground.dao.document.DocumentApprovalDao; +import playground.dao.document.DocumentDao; +import playground.dao.document.dto.DocumentTitleResponse; +import playground.dao.user.UserDao; +import playground.domain.document.ApprovalState; +import playground.domain.document.Document; +import playground.domain.document.DocumentApproval; +import playground.domain.user.User; +import playground.service.document.dto.DocumentResponseDto; +import playground.web.document.dto.DocumentCreateRequest; +import playground.web.document.dto.DocumentOutboxRequest; + +import java.util.List; +import java.util.stream.Collectors; + +@Transactional(readOnly = true) +@RequiredArgsConstructor +@Service +public class DocumentService { + + private final DocumentDao documentDao; + private final DocumentApprovalDao documentApprovalDao; + private final UserDao userDao; + + public List findOutboxDocuments(DocumentOutboxRequest request) { + List outboxDocuments = documentDao.findStateDocumentsByDrafterId(request.getDrafterId(), ApprovalState.DRAFTING); + return convertTitleDtoFrom(outboxDocuments); + } + + public DocumentResponseDto findDocument(Long documentId) { + Document document = documentDao.findById(documentId); + User drafter = userDao.findById(document.getDrafterId()); + + return new DocumentResponseDto(document, drafter); + } + + @Transactional + public void create(DocumentCreateRequest request) { + Document document = request.toEntity(); + Long documentId = documentDao.save(document); + + List approverIds = request.getApproverIds(); + + for (int index = 0; index < approverIds.size(); index++) { + DocumentApproval documentApproval = DocumentApproval.builder() + .documentId(documentId) + .approvalState(ApprovalState.DRAFTING) + .approverId(approverIds.get(index)) + .approvalOrder(index + 1) + .build(); + documentApprovalDao.save(documentApproval); + } + } + + private List convertTitleDtoFrom(List documents) { + return documents.stream() + .map(DocumentTitleResponse::new) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/playground/service/document/dto/DocumentResponseDto.java b/src/main/java/playground/service/document/dto/DocumentResponseDto.java new file mode 100644 index 0000000..5f9a284 --- /dev/null +++ b/src/main/java/playground/service/document/dto/DocumentResponseDto.java @@ -0,0 +1,40 @@ +package playground.service.document.dto; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import playground.domain.document.ApprovalState; +import playground.domain.document.Category; +import playground.domain.document.Document; +import playground.domain.user.User; + +@Getter +@NoArgsConstructor +public class DocumentResponseDto { + + private Long id; + private String title; + private Category category; + private String contents; + private Long userId; + private ApprovalState approvalState; + private String userName; + + public DocumentResponseDto(Document document, User drafter) { + this.id = document.getId(); + this.title = document.getTitle(); + this.category = document.getCategory(); + this.contents = document.getContents(); + this.approvalState = document.getApprovalState(); + + this.userId = drafter.getId(); + this.userName = drafter.getName(); + } + + public String getCategoryText() { + return category.getText(); + } + + public String getApprovalStateText() { + return approvalState.getText(); + } +} diff --git a/src/main/java/playground/web/document/DocumentController.java b/src/main/java/playground/web/document/DocumentController.java new file mode 100644 index 0000000..f5bd640 --- /dev/null +++ b/src/main/java/playground/web/document/DocumentController.java @@ -0,0 +1,38 @@ +package playground.web.document; + +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import playground.dao.document.dto.DocumentTitleResponse; +import playground.service.document.DocumentService; +import playground.service.document.dto.DocumentResponseDto; +import playground.web.document.dto.DocumentCreateRequest; +import playground.web.document.dto.DocumentOutboxRequest; + +import java.util.List; + +@RequiredArgsConstructor +@RestController +public class DocumentController { + + private final DocumentService documentService; + + @GetMapping("/api/documents/outbox") + public ResponseEntity> findOutboxDocuments(DocumentOutboxRequest requestDto) { + List outboxDocumentDtos = documentService.findOutboxDocuments(requestDto); + return ResponseEntity.ok(outboxDocumentDtos); + } + + @GetMapping("/api/documents/{documentId}") + public ResponseEntity findDocument(@PathVariable Long documentId) { + DocumentResponseDto documentResponseDto = documentService.findDocument(documentId); + return ResponseEntity.ok(documentResponseDto); + } + + @PostMapping("/api/documents") + public ResponseEntity createDocument(@RequestBody DocumentCreateRequest requestDto) { + documentService.create(requestDto); + return ResponseEntity.ok().build(); + } + +} diff --git a/src/main/java/playground/web/document/dto/DocumentCreateRequest.java b/src/main/java/playground/web/document/dto/DocumentCreateRequest.java new file mode 100644 index 0000000..92a7bcc --- /dev/null +++ b/src/main/java/playground/web/document/dto/DocumentCreateRequest.java @@ -0,0 +1,30 @@ +package playground.web.document.dto; + +import lombok.Getter; +import playground.domain.document.ApprovalState; +import playground.domain.document.Category; +import playground.domain.document.Document; + +import java.util.List; + +@Getter +public class DocumentCreateRequest { + + private String title; + private Category category; + private String contents; + + private Long drafterId; + private List approverIds; + + public Document toEntity() { + return Document.builder() + .title(title) + .category(category) + .contents(contents) + .drafterId(drafterId) + .approvalState(ApprovalState.DRAFTING) + .build(); + } + +} diff --git a/src/main/java/playground/web/document/dto/DocumentOutboxRequest.java b/src/main/java/playground/web/document/dto/DocumentOutboxRequest.java new file mode 100644 index 0000000..5240b07 --- /dev/null +++ b/src/main/java/playground/web/document/dto/DocumentOutboxRequest.java @@ -0,0 +1,12 @@ +package playground.web.document.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class DocumentOutboxRequest { + + private Long drafterId; //TODO: 2021/11/19 extract userId to loginMember + +} diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql new file mode 100644 index 0000000..a3f4a7a --- /dev/null +++ b/src/main/resources/data.sql @@ -0,0 +1,54 @@ +drop table if exists user; +create table user +( + id bigint not null auto_increment primary key, + email varchar(255), + password varchar(255), + name varchar(255) +); + +drop table if exists document; +create table document +( + id bigint not null auto_increment primary key, + title varchar(255), + category varchar(255), + contents clob, + approval_state varchar(255), + drafter_id bigint +); + +drop table if exists document_approval; +create table document_approval +( + id bigint not null auto_increment primary key, + document_id bigint, + approver_id bigint, + approval_state varchar(255), + approval_order varchar(255), + approval_comment varchar(255) +); + +insert into user(id, email, password, name) +values (1, 'wbluke@gmail.com', '1234', '박우빈'); + +insert into user(id, email, password, name) +values (2, 'wbluke2@gmail.com', '1234', '닉우빈'); + +insert into document(id, title, category, contents, approval_state, drafter_id) +values (1, '팀 운영비 사용 정산의 건', 'OPERATING_EXPENSES', '운영비 사용 내역입니다.', 'DRAFTING', 1); + +insert into document(id, title, category, contents, approval_state, drafter_id) +values (2, '도서지원비 정산의 건', 'EDUCATION', '도서지원비 사용 내역입니다.', 'DRAFTING', 1); + +insert into document_approval(id, approval_order, approval_state, approver_id, document_id, approval_comment) +values (1, 1, 'APPROVED', 1, 1, null); + +insert into document_approval(id, approval_order, approval_state, approver_id, document_id, approval_comment) +values (2, 2, 'DRAFTING', 2, 1, null); + +insert into document_approval(id, approval_order, approval_state, approver_id, document_id, approval_comment) +values (3, 3, 'DRAFTING', 3, 1, null); + +insert into document_approval(id, approval_order, approval_state, approver_id, document_id, approval_comment) +values (4, 1, 'APPROVED', 1, 2, '감사합니다.'); diff --git a/src/main/resources/persistence.xml b/src/main/resources/persistence.xml new file mode 100644 index 0000000..9461792 --- /dev/null +++ b/src/main/resources/persistence.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/java/learning/DocumentTest.java b/src/test/java/learning/DocumentDtoTest.java similarity index 96% rename from src/test/java/learning/DocumentTest.java rename to src/test/java/learning/DocumentDtoTest.java index d58434f..1f9a4ee 100644 --- a/src/test/java/learning/DocumentTest.java +++ b/src/test/java/learning/DocumentDtoTest.java @@ -2,11 +2,11 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import playground.constants.ApprovalState; -import playground.constants.Category; -import playground.domain.Document; -import playground.domain.DocumentApproval; -import playground.domain.User; +import learning.constants.ApprovalState; +import learning.constants.Category; +import learning.domain.Document; +import learning.domain.DocumentApproval; +import learning.domain.User; import java.util.Arrays; import java.util.Collections; @@ -16,7 +16,7 @@ import static org.assertj.core.api.Assertions.tuple; import static org.junit.jupiter.api.Assertions.assertThrows; -class DocumentTest { +class DocumentDtoTest { @DisplayName("문서 생성하기") @Test