From 5e0f655b016a4c5b271c2927ddd6b97955ac0fcf Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 4 Jul 2023 00:30:21 +0900 Subject: [PATCH 001/157] =?UTF-8?q?refactor:=20ConsoleApplication=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/ConsoleApplication.java | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java index a6dbcf9747..6c80ec2572 100644 --- a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java @@ -25,23 +25,29 @@ public void run(String... args) throws Exception { console.consoleMenu(); while (true) { - String command = console.inputCommand(); - Command inputCommand = Command.checkInputCommand(command); - - switch (inputCommand) { - case CREATE -> createVoucher(); - case LIST -> getVoucherList(); - case EXIT -> { - console.printMessage("프로그램을 종료합니다."); - return; + try { + String command = console.inputCommand(); + Command inputCommand = Command.of(command); + + switch (inputCommand) { + case CREATE -> createVoucher(); + case LIST -> getVoucherList(); + case EXIT -> { + console.printMessage("프로그램을 종료합니다."); + return; + } } + } catch (IllegalArgumentException e) { + log.error("명령어가 잘못 입력되었습니다. ", e); + } catch (Exception e) { + log.error("프로그램에서 오류가 발생하였습니다.", e); } } } private void createVoucher() { String voucherTypeInput = console.inputVoucherType(); - VoucherType voucherType = VoucherType.checkVoucherType(voucherTypeInput); + VoucherType voucherType = VoucherType.of(voucherTypeInput); long voucherDiscount = console.inputVoucherDiscount(); From 5f8b98f1c07d983e0f36155dfd335e150b595294 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 4 Jul 2023 01:03:05 +0900 Subject: [PATCH 002/157] =?UTF-8?q?init:=20Voucher=20TestCode=20=EC=84=B8?= =?UTF-8?q?=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/prgrms/springbootbasic/VoucherApplicationTest.java | 7 ------- .../springbootbasic/domain/FixedDiscountVoucherTest.java | 5 +++++ .../springbootbasic/domain/PercentDiscountVoucherTest.java | 5 +++++ .../repository/MemoryVoucherRepositoryTest.java | 5 +++++ .../springbootbasic/repository/VoucherRepositoryTest.java | 5 +++++ .../prgrms/springbootbasic/service/VoucherServiceTest.java | 5 +++++ .../java/com/prgrms/springbootbasic/view/ConsoleTest.java | 5 +++++ 7 files changed, 30 insertions(+), 7 deletions(-) delete mode 100644 src/test/java/com/prgrms/springbootbasic/VoucherApplicationTest.java create mode 100644 src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java create mode 100644 src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java create mode 100644 src/test/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepositoryTest.java create mode 100644 src/test/java/com/prgrms/springbootbasic/repository/VoucherRepositoryTest.java create mode 100644 src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java create mode 100644 src/test/java/com/prgrms/springbootbasic/view/ConsoleTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/VoucherApplicationTest.java b/src/test/java/com/prgrms/springbootbasic/VoucherApplicationTest.java deleted file mode 100644 index 39963eb9db..0000000000 --- a/src/test/java/com/prgrms/springbootbasic/VoucherApplicationTest.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.prgrms.springbootbasic; - -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class VoucherApplicationTest { -} diff --git a/src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java new file mode 100644 index 0000000000..c58ed002e6 --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java @@ -0,0 +1,5 @@ +package com.prgrms.springbootbasic.domain; + +class FixedDiscountVoucherTest { + +} \ No newline at end of file diff --git a/src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java new file mode 100644 index 0000000000..61c4ae7466 --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java @@ -0,0 +1,5 @@ +package com.prgrms.springbootbasic.domain; + +class PercentDiscountVoucherTest { + +} \ No newline at end of file diff --git a/src/test/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepositoryTest.java b/src/test/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepositoryTest.java new file mode 100644 index 0000000000..0d4a086db5 --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepositoryTest.java @@ -0,0 +1,5 @@ +package com.prgrms.springbootbasic.repository; + +class MemoryVoucherRepositoryTest { + +} \ No newline at end of file diff --git a/src/test/java/com/prgrms/springbootbasic/repository/VoucherRepositoryTest.java b/src/test/java/com/prgrms/springbootbasic/repository/VoucherRepositoryTest.java new file mode 100644 index 0000000000..c188131f14 --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/repository/VoucherRepositoryTest.java @@ -0,0 +1,5 @@ +package com.prgrms.springbootbasic.repository; + +class VoucherRepositoryTest { + +} \ No newline at end of file diff --git a/src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java b/src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java new file mode 100644 index 0000000000..0602dc66c1 --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java @@ -0,0 +1,5 @@ +package com.prgrms.springbootbasic.service; + +class VoucherServiceTest { + +} \ No newline at end of file diff --git a/src/test/java/com/prgrms/springbootbasic/view/ConsoleTest.java b/src/test/java/com/prgrms/springbootbasic/view/ConsoleTest.java new file mode 100644 index 0000000000..067b9bd4f9 --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/view/ConsoleTest.java @@ -0,0 +1,5 @@ +package com.prgrms.springbootbasic.view; + +class ConsoleTest { + +} \ No newline at end of file From 02dfa0f3d360571206a7d5990b17470386af80a7 Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 6 Jul 2023 17:08:35 +0900 Subject: [PATCH 003/157] =?UTF-8?q?feat:Customer=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4(Customer=20Domain=20Class)=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/domain/Customer.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/domain/Customer.java diff --git a/src/main/java/com/prgrms/springbootbasic/domain/Customer.java b/src/main/java/com/prgrms/springbootbasic/domain/Customer.java new file mode 100644 index 0000000000..00581828f3 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/domain/Customer.java @@ -0,0 +1,38 @@ +package com.prgrms.springbootbasic.domain; + +import java.time.LocalDateTime; +import java.util.UUID; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +@AllArgsConstructor +public class Customer { + + private final UUID customerId; + + @NonNull + private String name; + + private final String email; + + private LocalDateTime lastLoginAt; + + private final LocalDateTime createAt; + + + //이름 변경 + public void changeName(String name) { + validateName(name); + } + + //이름 validate + private void validateName(String name) { + if (name.isBlank()) { + throw new RuntimeException("이름란은 비워둘 수 없습니다!"); + } + } +} From f1f9c5f100355526cac29507f529207f3bc7d7f1 Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 01:18:06 +0900 Subject: [PATCH 004/157] =?UTF-8?q?refactor:VoucherType=EC=9D=98=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=EB=A9=94=EC=8B=9C=EC=A7=80=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java b/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java index 135082a87c..ec690a8455 100644 --- a/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java +++ b/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java @@ -9,7 +9,7 @@ public static VoucherType of(String voucherType) { try { return VoucherType.valueOf(voucherType.toUpperCase()); } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("잘못된 바우처 타입입니다." + voucherType); + throw new IllegalArgumentException("잘못된 바우처 타입을 입력하셨습니다. 고정 할인 바우처(fixed) 또는 비율 할인 바우처(percent)를 선택해서 다시 입력해주세요!"); } } } From 10b60adb5fbf92ec79136469b8895469faa5ff82 Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 01:18:36 +0900 Subject: [PATCH 005/157] =?UTF-8?q?refactor:Command=20enum=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/prgrms/springbootbasic/enums/Command.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/enums/Command.java b/src/main/java/com/prgrms/springbootbasic/enums/Command.java index 6d8874912c..6de5f2b858 100644 --- a/src/main/java/com/prgrms/springbootbasic/enums/Command.java +++ b/src/main/java/com/prgrms/springbootbasic/enums/Command.java @@ -9,7 +9,7 @@ public static Command of(String inputCommand) { try { return Command.valueOf(inputCommand.toUpperCase()); } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("잘못된 명령어 입력입니다. 다시 입력해주세요. " + inputCommand); + throw new IllegalArgumentException("잘못된 명령어 입력입니다. 프로그램 종료(exit),바우처 생성(create), 바우처 목록 조회(list) 중 하나를 입력해주세요."); } } } \ No newline at end of file From ce917df09d76ba24e17a1b3c65180ebb10c9fcdb Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 01:19:36 +0900 Subject: [PATCH 006/157] =?UTF-8?q?feat:=20VoucherType=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=A5=B8=20=EA=B3=A0=EC=A0=95=20=ED=95=A0=EC=9D=B8=20?= =?UTF-8?q?=EB=B0=94=EC=9A=B0=EC=B2=98,=20=ED=8D=BC=EC=84=BC=ED=8A=B8=20?= =?UTF-8?q?=EB=B9=84=EC=9C=A8=20=ED=95=A0=EC=9D=B8=20=EB=B0=94=EC=9A=B0?= =?UTF-8?q?=EC=B2=98=EC=9D=98=20=EC=A7=80=EC=A0=95=20=EB=B2=94=EC=9C=84?= =?UTF-8?q?=EB=A5=BC=20=EB=B2=97=EC=96=B4=EB=82=98=EB=8A=94=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=EC=97=90=EB=9F=AC=20=EB=A9=94=EC=8B=9C=EC=A7=80?= =?UTF-8?q?=EB=A5=BC=20=EC=B6=9C=EB=A0=A5=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/VoucherService.java | 39 ++++++++++++++----- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/VoucherService.java index 6f0fbff9e4..5c90406412 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/VoucherService.java @@ -1,10 +1,10 @@ package com.prgrms.springbootbasic.service; -import com.prgrms.springbootbasic.domain.FixedDiscountVoucher; -import com.prgrms.springbootbasic.domain.PercentDiscountVoucher; -import com.prgrms.springbootbasic.domain.Voucher; +import com.prgrms.springbootbasic.domain.voucher.FixedDiscountVoucher; +import com.prgrms.springbootbasic.domain.voucher.PercentDiscountVoucher; +import com.prgrms.springbootbasic.domain.voucher.Voucher; import com.prgrms.springbootbasic.enums.VoucherType; -import com.prgrms.springbootbasic.repository.VoucherRepository; +import com.prgrms.springbootbasic.repository.voucher.VoucherRepository; import java.util.Map; import java.util.UUID; import org.springframework.stereotype.Service; @@ -19,11 +19,32 @@ public VoucherService(VoucherRepository voucherRepository) { } public Voucher createVoucher(VoucherType type, long discount) { - Voucher voucher = switch (type) { - case FIXED -> new FixedDiscountVoucher(discount); - case PERCENT -> new PercentDiscountVoucher(discount); - }; - return voucherRepository.insert(voucher); + try { + isValidDiscount(type, discount); + Voucher voucher = switch (type) { + case FIXED -> new FixedDiscountVoucher(discount); + case PERCENT -> new PercentDiscountVoucher(discount); + }; + return voucherRepository.insert(voucher); + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + throw e; + } + } + + public void isValidDiscount(VoucherType type, long discount) { + switch (type) { + case FIXED: + if (discount <= 0) { + throw new IllegalArgumentException("고정 할인 바우처의 입력 금액은 0 이하를 입력할 수 없습니다."); + } + break; + case PERCENT: + if (discount < 1 || discount > 99) { + throw new IllegalArgumentException("퍼센트 할인 바우처의 할인 퍼센트는 1 ~ 99까지의 숫자를 입력해야 합니다. "); + } + break; + } } public Map fetchAllVouchers() { From 2ba1de855cf6f868cc76619c50bd17caed807b5e Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 01:20:08 +0900 Subject: [PATCH 007/157] =?UTF-8?q?refactor:Console=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/prgrms/springbootbasic/view/Console.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/view/Console.java b/src/main/java/com/prgrms/springbootbasic/view/Console.java index b7d8664485..b0ca39c720 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Console.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Console.java @@ -1,6 +1,6 @@ package com.prgrms.springbootbasic.view; -import com.prgrms.springbootbasic.domain.Voucher; +import com.prgrms.springbootbasic.domain.voucher.Voucher; import java.util.Map; import java.util.Scanner; import java.util.UUID; @@ -26,13 +26,14 @@ public String inputCommand() { @Override public String inputVoucherType() { - System.out.print("생성할 voucher의 종류를 입력해주세요.(FixedDiscountVoucher, PercentDiscountVoucher) : "); + System.out.print("생성할 voucher의 종류를 입력해주세요.(fixed(고정 할인 바우처) , percent(퍼센트 할인 바우처) : "); return input.nextLine(); } @Override public long inputVoucherDiscount() { System.out.println("생성할 voucher의 금액을 입력해주세요!"); + System.out.print("Discount : "); return Long.parseLong(input.nextLine()); } @@ -49,7 +50,7 @@ public void printlnVoucherList(Map voucherMap) { } System.out.println("생성된 Voucher의 목록은 다음과 같습니다."); for (Voucher voucher : voucherMap.values()) { - System.out.println("Voucher Type: " + voucher.getVoucherType() + " + Discount" + voucher.getDiscount()); + System.out.println("Voucher Type: " + voucher.getVoucherType() + ", 해당 Voucher의 Discount: " + voucher.getDiscount() + " 입니다."); } } } From 5c158a15657f2a440079f1c37c09137b48648d8a Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 01:20:39 +0900 Subject: [PATCH 008/157] =?UTF-8?q?refactor:=20ConsoleApplication=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/ConsoleApplication.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java index 6c80ec2572..e3417e06fd 100644 --- a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java @@ -1,7 +1,7 @@ package com.prgrms.springbootbasic; -import com.prgrms.springbootbasic.controller.VoucherController; -import com.prgrms.springbootbasic.domain.Voucher; +import com.prgrms.springbootbasic.controller.voucher.VoucherController; +import com.prgrms.springbootbasic.domain.voucher.Voucher; import com.prgrms.springbootbasic.enums.Command; import com.prgrms.springbootbasic.enums.VoucherType; import com.prgrms.springbootbasic.view.Console; @@ -38,9 +38,9 @@ public void run(String... args) throws Exception { } } } catch (IllegalArgumentException e) { - log.error("명령어가 잘못 입력되었습니다. ", e); + log.error("명령어가 잘못 입력되었습니다. ", e.getMessage()); } catch (Exception e) { - log.error("프로그램에서 오류가 발생하였습니다.", e); + log.error("프로그램에서 오류가 발생하였습니다.", e.getMessage()); } } } @@ -51,8 +51,12 @@ private void createVoucher() { long voucherDiscount = console.inputVoucherDiscount(); - voucherController.createVoucher(voucherType, voucherDiscount); - console.printMessage("바우처가 생성되었습니다!"); + try { + voucherController.createVoucher(voucherType, voucherDiscount); + console.printMessage("바우처가 생성되었습니다!"); + } catch (IllegalArgumentException e) { + console.printMessage("생성할 바우처의 금액의 범위를 다시 한번 확인해주세요!"); + } } private void getVoucherList() { From 0d6236e6f43f868b99b2ded25f704214c515a5b8 Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 01:24:47 +0900 Subject: [PATCH 009/157] =?UTF-8?q?Rename:=20=EA=B0=81=20Controller,=20Ser?= =?UTF-8?q?vice,=20doamin=20=ED=8F=B4=EB=8D=94=20=EC=95=88=EC=9D=98=20Vouc?= =?UTF-8?q?her=ED=8C=A8=ED=82=A4=EC=A7=80=EB=A1=9C=20Voucher=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=20Controller,=20Service,=20Domain=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/voucher/VoucherController.java | 24 ++++++++++++++++++ .../domain/voucher/FixedDiscountVoucher.java | 22 ++++++++++++++++ .../voucher/PercentDiscountVoucher.java | 22 ++++++++++++++++ .../domain/voucher/Voucher.java | 13 ++++++++++ .../voucher/MemoryVoucherRepository.java | 25 +++++++++++++++++++ .../voucher/VoucherJdbcRepository.java | 5 ++++ .../repository/voucher/VoucherRepository.java | 12 +++++++++ 7 files changed, 123 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java create mode 100644 src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java create mode 100644 src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java create mode 100644 src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java create mode 100644 src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java create mode 100644 src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java create mode 100644 src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java diff --git a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java new file mode 100644 index 0000000000..65e1cdf57c --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java @@ -0,0 +1,24 @@ +package com.prgrms.springbootbasic.controller.voucher; + +import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.service.VoucherService; +import java.util.Map; +import java.util.UUID; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Controller; + +@Controller +@AllArgsConstructor +public class VoucherController { + + private final VoucherService voucherService; + + public void createVoucher(VoucherType type, long discount) { + voucherService.createVoucher(type, discount); + } + + public Map printVoucherList() { + return voucherService.fetchAllVouchers(); + } +} diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java new file mode 100644 index 0000000000..50921b26bb --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java @@ -0,0 +1,22 @@ +package com.prgrms.springbootbasic.domain.voucher; + +import com.prgrms.springbootbasic.enums.VoucherType; +import java.util.UUID; +import lombok.Getter; + +@Getter +public class FixedDiscountVoucher implements Voucher { + + private final UUID voucherId; + private final long discount; + + public FixedDiscountVoucher(long discount) { + this.voucherId = UUID.randomUUID(); + this.discount = discount; + } + + @Override + public VoucherType getVoucherType() { + return VoucherType.FIXED; + } +} diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java new file mode 100644 index 0000000000..950cedf6cc --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java @@ -0,0 +1,22 @@ +package com.prgrms.springbootbasic.domain.voucher; + +import com.prgrms.springbootbasic.enums.VoucherType; +import java.util.UUID; +import lombok.Getter; + +@Getter +public class PercentDiscountVoucher implements Voucher { + + private final UUID voucherId; + private final long discount; + + public PercentDiscountVoucher(long discount) { + this.voucherId = UUID.randomUUID(); + this.discount = discount; + } + + @Override + public VoucherType getVoucherType() { + return VoucherType.PERCENT; + } +} diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java new file mode 100644 index 0000000000..d38d0c7dac --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java @@ -0,0 +1,13 @@ +package com.prgrms.springbootbasic.domain.voucher; + +import com.prgrms.springbootbasic.enums.VoucherType; +import java.util.UUID; + +public interface Voucher { + + UUID getVoucherId(); + + long getDiscount(); + + VoucherType getVoucherType(); +} diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java new file mode 100644 index 0000000000..1a05353948 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java @@ -0,0 +1,25 @@ +package com.prgrms.springbootbasic.repository.voucher; + +import com.prgrms.springbootbasic.domain.voucher.Voucher; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.UUID; +import org.springframework.stereotype.Repository; + +@Repository +public class MemoryVoucherRepository implements VoucherRepository { + + private final Map storage = new LinkedHashMap<>(); + + @Override + public Voucher insert(Voucher voucher) { + storage.put(voucher.getVoucherId(), voucher); + return voucher; + } + + @Override + public Map getAllVouchersList() { + return Collections.unmodifiableMap(storage); + } +} diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java new file mode 100644 index 0000000000..8ef826db67 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java @@ -0,0 +1,5 @@ +package com.prgrms.springbootbasic.repository.voucher; + +public class VoucherJdbcRepository { + +} diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java new file mode 100644 index 0000000000..68ac898c7d --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java @@ -0,0 +1,12 @@ +package com.prgrms.springbootbasic.repository.voucher; + +import com.prgrms.springbootbasic.domain.voucher.Voucher; +import java.util.Map; +import java.util.UUID; + +public interface VoucherRepository { + + Voucher insert(Voucher voucher); + + Map getAllVouchersList(); +} From 50faf9e0d85704a7d67576e7335e513a20a1c0b7 Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 01:25:24 +0900 Subject: [PATCH 010/157] refactor: Output --- src/main/java/com/prgrms/springbootbasic/view/Output.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/view/Output.java b/src/main/java/com/prgrms/springbootbasic/view/Output.java index 1172024edd..d79cdb5f96 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Output.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Output.java @@ -1,6 +1,6 @@ package com.prgrms.springbootbasic.view; -import com.prgrms.springbootbasic.domain.Voucher; +import com.prgrms.springbootbasic.domain.voucher.Voucher; import java.util.Map; import java.util.UUID; From b244133527f65ae787a136cc55398334bb3d381d Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 22:06:56 +0900 Subject: [PATCH 011/157] =?UTF-8?q?feat:=20=EA=B3=A0=EC=A0=95=ED=95=A0?= =?UTF-8?q?=EC=9D=B8=20=EB=B0=94=EC=9A=B0=EC=B2=98(FixedDiscountVoucherTes?= =?UTF-8?q?t)=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/FixedDiscountVoucherTest.java | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java index c58ed002e6..4a90bf9def 100644 --- a/src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java +++ b/src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java @@ -1,5 +1,40 @@ package com.prgrms.springbootbasic.domain; +import static org.assertj.core.api.Assertions.assertThat; + +import com.prgrms.springbootbasic.domain.voucher.FixedDiscountVoucher; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + class FixedDiscountVoucherTest { -} \ No newline at end of file + @Test + @DisplayName("고정 할인 바우처 생성 테스트") + void createFixedVoucherTest() { + // given + long discount = 10000; + + // when + FixedDiscountVoucher fixedDiscountVoucher = new FixedDiscountVoucher(discount); + + // then + assertThat(fixedDiscountVoucher.getDiscount()).isEqualTo(discount); + } + + @ParameterizedTest + @CsvSource({"1000, 10000", "200000, 5000"}) + @DisplayName("여러 개 고정 할인 바우처 확인 테스트") + void createdFixDiscountVoucherEquals(long discount1, long discount2) { + // given + FixedDiscountVoucher fixedDiscountVoucher1 = new FixedDiscountVoucher(discount1); + FixedDiscountVoucher fixedDiscountVoucher2 = new FixedDiscountVoucher(discount2); + + // when + + // then + assertThat(fixedDiscountVoucher1.getDiscount()).isEqualTo(discount1); + assertThat(fixedDiscountVoucher2.getDiscount()).isEqualTo(discount2); + } +} From 3561696dea6d5dd9690318c4eebc8b1536e8cd91 Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 22:07:27 +0900 Subject: [PATCH 012/157] =?UTF-8?q?feat:=20=EB=B9=84=EC=9C=A8=ED=95=A0?= =?UTF-8?q?=EC=9D=B8=20=EB=B0=94=EC=9A=B0=EC=B2=98(PercentDiscountVoucher)?= =?UTF-8?q?=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/PercentDiscountVoucherTest.java | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java index 61c4ae7466..a346a78ef2 100644 --- a/src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java +++ b/src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java @@ -1,5 +1,38 @@ package com.prgrms.springbootbasic.domain; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import com.prgrms.springbootbasic.domain.voucher.PercentDiscountVoucher; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + class PercentDiscountVoucherTest { -} \ No newline at end of file + @Test + @DisplayName("비율 할인 바우처 생성 테스트") + void createPercentDiscountVoucher() { + // given + long discount = 20; + + // when + PercentDiscountVoucher percentDiscountVoucher = new PercentDiscountVoucher(discount); + + // then + assertEquals(discount, percentDiscountVoucher.getDiscount()); + } + + @ParameterizedTest + @CsvSource({"10", "30", "50", "70"}) + @DisplayName("생성된 여러 개의 할인 바우처 확인 테스트") + void createdPercentDiscountVoucherEquals(long discount) { + // given + PercentDiscountVoucher percentDiscountVoucher = new PercentDiscountVoucher(discount); + + // when + + // then + assertEquals(discount, percentDiscountVoucher.getDiscount()); + } +} From 65775ed53649a3e9637c3f1d85b003969e963936 Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 22:08:17 +0900 Subject: [PATCH 013/157] =?UTF-8?q?feat:=20ConsoleApplication=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/ConsoleApplicationTest.java | 103 ++++++++++++++++++ .../springbootbasic/view/ConsoleTest.java | 5 - 2 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java delete mode 100644 src/test/java/com/prgrms/springbootbasic/view/ConsoleTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java b/src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java new file mode 100644 index 0000000000..06dea0c5aa --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java @@ -0,0 +1,103 @@ +package com.prgrms.springbootbasic.view; + +import static org.mockito.Mockito.doNothing; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.prgrms.springbootbasic.ConsoleApplication; +import com.prgrms.springbootbasic.controller.voucher.VoucherController; +import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.enums.VoucherType; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +class ConsoleApplicationTest { + + @Mock + private Console console; + + @Mock + private VoucherController voucherController; + + private ConsoleApplication consoleApplication; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + consoleApplication = new ConsoleApplication(console, voucherController); + } + + @Test + @DisplayName("바우처 생성 테스트") + void createVoucherTest() { + // given + String voucherTypeInput = "FIXED"; + VoucherType voucherType = VoucherType.FIXED; + long voucherDiscount = 10000; + + Voucher dummyVoucher = mock(Voucher.class); + + when(console.inputVoucherType()).thenReturn(voucherTypeInput); + when(console.inputVoucherDiscount()).thenReturn(voucherDiscount); + doNothing().when(voucherController).createVoucher(voucherType, voucherDiscount); + + // when + consoleApplication.createVoucher(); + + // then + verify(console).printMessage("바우처가 생성되었습니다!"); + verify(voucherController).createVoucher(voucherType, voucherDiscount); + } + + + @Test + @DisplayName("바우처 목록 조회 테스트") + void getVoucherListTest() { + // given + Map voucherMap = createDummyVoucherMap(); + + when(voucherController.printVoucherList()).thenReturn(voucherMap); + + // when + consoleApplication.getVoucherList(); + + // then + verify(console).printlnVoucherList(voucherMap); + verify(voucherController).printVoucherList(); + } + + private Map createDummyVoucherMap() { + Map voucherMap = new HashMap<>(); + voucherMap.put(UUID.randomUUID(), createDummyVoucher(VoucherType.FIXED, 10000)); + return voucherMap; + } + + private Voucher createDummyVoucher(VoucherType type, long discount) { + // Create a dummy voucher object for testing + return new Voucher() { + @Override + public UUID getVoucherId() { + return UUID.randomUUID(); + } + + @Override + public long getDiscount() { + return discount; + } + + @Override + public VoucherType getVoucherType() { + return type; + } + }; + } +} + + diff --git a/src/test/java/com/prgrms/springbootbasic/view/ConsoleTest.java b/src/test/java/com/prgrms/springbootbasic/view/ConsoleTest.java deleted file mode 100644 index 067b9bd4f9..0000000000 --- a/src/test/java/com/prgrms/springbootbasic/view/ConsoleTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.prgrms.springbootbasic.view; - -class ConsoleTest { - -} \ No newline at end of file From 7b6afd7caa7db13dbbd72f2e976287bd496a05dc Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 22:08:50 +0900 Subject: [PATCH 014/157] =?UTF-8?q?feat:VoucherService=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/VoucherServiceTest.java | 118 +++++++++++++++++- 1 file changed, 117 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java b/src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java index 0602dc66c1..8ec2b40f19 100644 --- a/src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java +++ b/src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java @@ -1,5 +1,121 @@ package com.prgrms.springbootbasic.service; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoInteractions; +import static org.mockito.Mockito.when; + +import com.prgrms.springbootbasic.domain.voucher.FixedDiscountVoucher; +import com.prgrms.springbootbasic.domain.voucher.PercentDiscountVoucher; +import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.repository.voucher.VoucherRepository; +import com.prgrms.springbootbasic.service.voucher.VoucherService; +import java.util.Map; +import java.util.UUID; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + class VoucherServiceTest { -} \ No newline at end of file + @Mock + private VoucherRepository voucherRepository; + + private VoucherService voucherService; + + @Captor + private ArgumentCaptor voucherCaptor; + + public VoucherServiceTest() { + MockitoAnnotations.openMocks(this); + voucherService = new VoucherService(voucherRepository); + } + + @Test + @DisplayName("고정 할인 바우처 생성 테스트") + void createFixedDiscountVoucherTest() { + // given + long discount = 10000; + + // when + voucherService.createVoucher(VoucherType.FIXED, discount); + + // then + verify(voucherRepository, times(1)).insert(voucherCaptor.capture()); + Voucher capturedVoucher = voucherCaptor.getValue(); + + assertThat(capturedVoucher).isInstanceOf(FixedDiscountVoucher.class); + assertThat(capturedVoucher.getDiscount()).isEqualTo(discount); + } + + @Test + @DisplayName("비율 할인 바우처 생성 테스트") + void createPercentDiscountVoucherTest() { + // given + long discount = 20; + + // when + voucherService.createVoucher(VoucherType.PERCENT, discount); + + // then + verify(voucherRepository, times(1)).insert(voucherCaptor.capture()); + Voucher capturedVoucher = voucherCaptor.getValue(); + + assertThat(capturedVoucher).isInstanceOf(PercentDiscountVoucher.class); + assertThat(capturedVoucher.getDiscount()).isEqualTo(discount); + } + + @Test + @DisplayName("고정 할인 바우처 생성 시 입력 금액이 0 이하인 경우 예외가 발생함") + void createFixedDiscountVoucherWithInvalidDiscountTest() { + // given + long discount = -100; + + // when + assertThatThrownBy(() -> voucherService.createVoucher(VoucherType.FIXED, discount)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("고정 할인 바우처의 입력 금액은 0 이하를 입력할 수 없습니다."); + + // then + verifyNoInteractions(voucherRepository); + } + + @Test + @DisplayName("비율 할인 바우처 생성 시 할인 퍼센트가 1 미만 또는 99 초과인 경우 예외가 발생함") + void createPercentDiscountVoucherWithInvalidDiscountTest() { + // given + long discount = 110; + + // when + assertThatThrownBy(() -> voucherService.createVoucher(VoucherType.PERCENT, discount)) + .isInstanceOf(IllegalArgumentException.class) + .hasMessage("퍼센트 할인 바우처의 할인 퍼센트는 1 ~ 99까지의 숫자를 입력해야 합니다."); + + // then + verifyNoInteractions(voucherRepository); + } + + @Test + @DisplayName("모든 바우처 목록 조회 테스트") + void fetchAllVouchersTest() { + // given + Map voucherMap = Map.of( + UUID.randomUUID(), new FixedDiscountVoucher(10000), + UUID.randomUUID(), new PercentDiscountVoucher(20) + ); + when(voucherRepository.getAllVouchersList()).thenReturn(voucherMap); + + // when + Map fetchedVouchers = voucherService.fetchAllVouchers(); + + // then + assertThat(fetchedVouchers).isEqualTo(voucherMap); + verify(voucherRepository, times(1)).getAllVouchersList(); + } +} From fac02cfe9e93897e78a209f4f947f26c682beb3d Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 22:12:19 +0900 Subject: [PATCH 015/157] =?UTF-8?q?feat:VoucherController=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/VoucherControllerTest.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 src/test/java/com/prgrms/springbootbasic/controller/VoucherControllerTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/controller/VoucherControllerTest.java b/src/test/java/com/prgrms/springbootbasic/controller/VoucherControllerTest.java new file mode 100644 index 0000000000..097da97c0a --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/controller/VoucherControllerTest.java @@ -0,0 +1,63 @@ +package com.prgrms.springbootbasic.controller; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.prgrms.springbootbasic.controller.voucher.VoucherController; +import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.service.voucher.VoucherService; +import java.util.Collections; +import java.util.Map; +import java.util.UUID; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +class VoucherControllerTest { + + @Mock + private VoucherService voucherService; + + private VoucherController voucherController; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + voucherController = new VoucherController(voucherService); + } + + @Test + @DisplayName("바우처 목록 validation 테스트") + void getVoucherListControllerTest() { + // given + Map voucherMap = Collections.emptyMap(); + when(voucherService.fetchAllVouchers()).thenReturn(voucherMap); + + // when + Map voucherList = voucherController.printVoucherList(); + + // then + assertThat(voucherList).isEmpty(); + verify(voucherService, times(1)).fetchAllVouchers(); + } + + @Test + @DisplayName("바우처 생성 validation 테스트") + void getVoucherCreateControllerTest() { + // given + long discount = 10000; + + // when + voucherController.createVoucher(VoucherType.FIXED, discount); + + // then + verify(voucherService, times(1)).createVoucher(VoucherType.FIXED, discount); + } +} + + From 85a7f28100184286a64c2dc96f6aa671a84e9623 Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 7 Jul 2023 23:35:48 +0900 Subject: [PATCH 016/157] =?UTF-8?q?refactor:=EB=B6=88=20=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=A3=BC=EC=84=9D=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/prgrms/springbootbasic/view/ConsoleApplicationTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java b/src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java index 06dea0c5aa..e7bbc8f3ec 100644 --- a/src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java +++ b/src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java @@ -80,7 +80,6 @@ private Map createDummyVoucherMap() { } private Voucher createDummyVoucher(VoucherType type, long discount) { - // Create a dummy voucher object for testing return new Voucher() { @Override public UUID getVoucherId() { From b4d1d4d58ff52398b763a61fd7b93b1a66e788a0 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 18:32:56 +0900 Subject: [PATCH 017/157] =?UTF-8?q?rename:=20Voucher=20Controller,Service,?= =?UTF-8?q?repository=20=ED=8F=B4=EB=8D=94=20=EC=9C=84=EC=B9=98=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/VoucherController.java | 24 ------------ .../springbootbasic/domain/Customer.java | 38 ------------------- .../domain/FixedDiscountVoucher.java | 22 ----------- .../domain/PercentDiscountVoucher.java | 22 ----------- .../springbootbasic/domain/Voucher.java | 13 ------- .../repository/MemoryVoucherRepository.java | 25 ------------ .../repository/VoucherRepository.java | 10 ----- .../service/{ => voucher}/VoucherService.java | 0 .../MemoryVoucherRepositoryTest.java | 5 --- .../repository/VoucherRepositoryTest.java | 5 --- 10 files changed, 164 deletions(-) delete mode 100644 src/main/java/com/prgrms/springbootbasic/controller/VoucherController.java delete mode 100644 src/main/java/com/prgrms/springbootbasic/domain/Customer.java delete mode 100644 src/main/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucher.java delete mode 100644 src/main/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucher.java delete mode 100644 src/main/java/com/prgrms/springbootbasic/domain/Voucher.java delete mode 100644 src/main/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepository.java delete mode 100644 src/main/java/com/prgrms/springbootbasic/repository/VoucherRepository.java rename src/main/java/com/prgrms/springbootbasic/service/{ => voucher}/VoucherService.java (100%) delete mode 100644 src/test/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepositoryTest.java delete mode 100644 src/test/java/com/prgrms/springbootbasic/repository/VoucherRepositoryTest.java diff --git a/src/main/java/com/prgrms/springbootbasic/controller/VoucherController.java b/src/main/java/com/prgrms/springbootbasic/controller/VoucherController.java deleted file mode 100644 index f8fdd10aba..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/controller/VoucherController.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.prgrms.springbootbasic.controller; - -import com.prgrms.springbootbasic.domain.Voucher; -import com.prgrms.springbootbasic.enums.VoucherType; -import com.prgrms.springbootbasic.service.VoucherService; -import java.util.Map; -import java.util.UUID; -import lombok.AllArgsConstructor; -import org.springframework.stereotype.Controller; - -@Controller -@AllArgsConstructor -public class VoucherController { - - private final VoucherService voucherService; - - public void createVoucher(VoucherType type, long discount) { - voucherService.createVoucher(type, discount); - } - - public Map printVoucherList() { - return voucherService.fetchAllVouchers(); - } -} diff --git a/src/main/java/com/prgrms/springbootbasic/domain/Customer.java b/src/main/java/com/prgrms/springbootbasic/domain/Customer.java deleted file mode 100644 index 00581828f3..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/domain/Customer.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.prgrms.springbootbasic.domain; - -import java.time.LocalDateTime; -import java.util.UUID; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NonNull; -import lombok.RequiredArgsConstructor; - -@Getter -@RequiredArgsConstructor -@AllArgsConstructor -public class Customer { - - private final UUID customerId; - - @NonNull - private String name; - - private final String email; - - private LocalDateTime lastLoginAt; - - private final LocalDateTime createAt; - - - //이름 변경 - public void changeName(String name) { - validateName(name); - } - - //이름 validate - private void validateName(String name) { - if (name.isBlank()) { - throw new RuntimeException("이름란은 비워둘 수 없습니다!"); - } - } -} diff --git a/src/main/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucher.java deleted file mode 100644 index 32a18db515..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucher.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.prgrms.springbootbasic.domain; - -import com.prgrms.springbootbasic.enums.VoucherType; -import java.util.UUID; -import lombok.Getter; - -@Getter -public class FixedDiscountVoucher implements Voucher { - - private final UUID voucherId; - private final long discount; - - public FixedDiscountVoucher(long discount) { - this.voucherId = UUID.randomUUID(); - this.discount = discount; - } - - @Override - public VoucherType getVoucherType() { - return VoucherType.FIXED; - } -} diff --git a/src/main/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucher.java deleted file mode 100644 index 79f0da996b..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucher.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.prgrms.springbootbasic.domain; - -import com.prgrms.springbootbasic.enums.VoucherType; -import java.util.UUID; -import lombok.Getter; - -@Getter -public class PercentDiscountVoucher implements Voucher { - - private final UUID voucherId; - private final long discount; - - public PercentDiscountVoucher(long discount) { - this.voucherId = UUID.randomUUID(); - this.discount = discount; - } - - @Override - public VoucherType getVoucherType() { - return VoucherType.PERCENT; - } -} diff --git a/src/main/java/com/prgrms/springbootbasic/domain/Voucher.java b/src/main/java/com/prgrms/springbootbasic/domain/Voucher.java deleted file mode 100644 index c88e35ecd4..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/domain/Voucher.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.prgrms.springbootbasic.domain; - -import com.prgrms.springbootbasic.enums.VoucherType; -import java.util.UUID; - -public interface Voucher { - - UUID getVoucherId(); - - long getDiscount(); - - VoucherType getVoucherType(); -} diff --git a/src/main/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepository.java deleted file mode 100644 index c43e9bb1eb..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepository.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.prgrms.springbootbasic.repository; - -import com.prgrms.springbootbasic.domain.Voucher; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.UUID; -import org.springframework.stereotype.Repository; - -@Repository -public class MemoryVoucherRepository implements VoucherRepository { - - private final Map storage = new LinkedHashMap<>(); - - @Override - public Voucher insert(Voucher voucher) { - storage.put(voucher.getVoucherId(), voucher); - return voucher; - } - - @Override - public Map getAllVouchersList() { - return Collections.unmodifiableMap(storage); - } -} diff --git a/src/main/java/com/prgrms/springbootbasic/repository/VoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/VoucherRepository.java deleted file mode 100644 index 2a3b2f9589..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/repository/VoucherRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.prgrms.springbootbasic.repository; - -import com.prgrms.springbootbasic.domain.Voucher; -import java.util.Map; -import java.util.UUID; - -public interface VoucherRepository { - Voucher insert(Voucher voucher); - Map getAllVouchersList(); -} diff --git a/src/main/java/com/prgrms/springbootbasic/service/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java similarity index 100% rename from src/main/java/com/prgrms/springbootbasic/service/VoucherService.java rename to src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java diff --git a/src/test/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepositoryTest.java b/src/test/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepositoryTest.java deleted file mode 100644 index 0d4a086db5..0000000000 --- a/src/test/java/com/prgrms/springbootbasic/repository/MemoryVoucherRepositoryTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.prgrms.springbootbasic.repository; - -class MemoryVoucherRepositoryTest { - -} \ No newline at end of file diff --git a/src/test/java/com/prgrms/springbootbasic/repository/VoucherRepositoryTest.java b/src/test/java/com/prgrms/springbootbasic/repository/VoucherRepositoryTest.java deleted file mode 100644 index c188131f14..0000000000 --- a/src/test/java/com/prgrms/springbootbasic/repository/VoucherRepositoryTest.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.prgrms.springbootbasic.repository; - -class VoucherRepositoryTest { - -} \ No newline at end of file From b253bc7debc596d6a68d52e7659382301a8c94b1 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 18:33:28 +0900 Subject: [PATCH 018/157] =?UTF-8?q?refactor:=20VoucherService=EC=9D=98=20?= =?UTF-8?q?=EA=B3=B5=EB=B0=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/service/voucher/VoucherService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java index 5c90406412..7e41cf5135 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java @@ -1,4 +1,4 @@ -package com.prgrms.springbootbasic.service; +package com.prgrms.springbootbasic.service.voucher; import com.prgrms.springbootbasic.domain.voucher.FixedDiscountVoucher; import com.prgrms.springbootbasic.domain.voucher.PercentDiscountVoucher; @@ -41,7 +41,7 @@ public void isValidDiscount(VoucherType type, long discount) { break; case PERCENT: if (discount < 1 || discount > 99) { - throw new IllegalArgumentException("퍼센트 할인 바우처의 할인 퍼센트는 1 ~ 99까지의 숫자를 입력해야 합니다. "); + throw new IllegalArgumentException("퍼센트 할인 바우처의 할인 퍼센트는 1 ~ 99까지의 숫자를 입력해야 합니다."); } break; } From 64686eacf77926d4928d817558ef8fbafeab02fd Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 18:33:48 +0900 Subject: [PATCH 019/157] =?UTF-8?q?refactor:ConsoleApplication=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/prgrms/springbootbasic/ConsoleApplication.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java index e3417e06fd..1f863ec328 100644 --- a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java @@ -45,7 +45,7 @@ public void run(String... args) throws Exception { } } - private void createVoucher() { + public void createVoucher() { String voucherTypeInput = console.inputVoucherType(); VoucherType voucherType = VoucherType.of(voucherTypeInput); @@ -59,7 +59,7 @@ private void createVoucher() { } } - private void getVoucherList() { + public void getVoucherList() { Map voucherMap = voucherController.printVoucherList(); console.printlnVoucherList(voucherMap); } From eff8ead5173ac2960aa4f0556846ef81288b1e42 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 18:44:49 +0900 Subject: [PATCH 020/157] =?UTF-8?q?refactor:=20origin/w2-1=20=EB=B8=8C?= =?UTF-8?q?=EB=9E=9C=EC=B9=98=EC=99=80=20=EC=B0=A8=EC=9D=B4=EA=B0=80=20?= =?UTF-8?q?=EB=82=98=EB=8A=94=20=EB=A1=9C=EC=BB=AC=20w2-1=20=EB=B8=8C?= =?UTF-8?q?=EB=9E=9C=EC=B9=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/controller/voucher/VoucherController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java index 65e1cdf57c..22e6f2a655 100644 --- a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java +++ b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java @@ -2,7 +2,7 @@ import com.prgrms.springbootbasic.domain.voucher.Voucher; import com.prgrms.springbootbasic.enums.VoucherType; -import com.prgrms.springbootbasic.service.VoucherService; +import com.prgrms.springbootbasic.service.voucher.VoucherService; import java.util.Map; import java.util.UUID; import lombok.AllArgsConstructor; From 13884733e0315c536216ba705624ac4b135164ec Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 18:50:35 +0900 Subject: [PATCH 021/157] =?UTF-8?q?refactor:=20origin/main=20=EB=B8=8C?= =?UTF-8?q?=EB=9E=9C=EC=B9=98=EC=99=80=20=EC=B0=A8=EC=9D=B4=EA=B0=80=20?= =?UTF-8?q?=EB=82=98=EB=8A=94=20=EB=A1=9C=EC=BB=AC=20main=20=EB=B8=8C?= =?UTF-8?q?=EB=9E=9C=EC=B9=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/prgrms/springbootbasic/ConsoleApplication.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java index e3417e06fd..1f863ec328 100644 --- a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java @@ -45,7 +45,7 @@ public void run(String... args) throws Exception { } } - private void createVoucher() { + public void createVoucher() { String voucherTypeInput = console.inputVoucherType(); VoucherType voucherType = VoucherType.of(voucherTypeInput); @@ -59,7 +59,7 @@ private void createVoucher() { } } - private void getVoucherList() { + public void getVoucherList() { Map voucherMap = voucherController.printVoucherList(); console.printlnVoucherList(voucherMap); } From a39864f1b45c0dd6c02e576b6eb33bde51c7e8f6 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 19:07:29 +0900 Subject: [PATCH 022/157] =?UTF-8?q?feat:=20customer=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/customer/customer.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/domain/customer/customer.java diff --git a/src/main/java/com/prgrms/springbootbasic/domain/customer/customer.java b/src/main/java/com/prgrms/springbootbasic/domain/customer/customer.java new file mode 100644 index 0000000000..8a223c2785 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/domain/customer/customer.java @@ -0,0 +1,37 @@ +package com.prgrms.springbootbasic.domain.customer; + +import java.time.LocalDateTime; +import java.util.UUID; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NonNull; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +@AllArgsConstructor +public class customer { + + private final UUID customerId; + + @NonNull + private String name; + + private final String email; + + private LocalDateTime lastLoginAt; + + private final LocalDateTime createAt; + + //이름 변경 + public void changeName(String name) { + validateName(name); + this.name = name; + } + + private void validateName(String name) { + if (name.isBlank()) { + throw new RuntimeException("이름란은 비워둘 수 없습니다!"); + } + } +} From b57abb4bf50baa47414bf49f3d1e71aa2555a912 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 19:14:05 +0900 Subject: [PATCH 023/157] =?UTF-8?q?feat:CustomerController=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/customer/CustomerController.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java diff --git a/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java b/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java new file mode 100644 index 0000000000..051cf19dde --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java @@ -0,0 +1,8 @@ +package com.prgrms.springbootbasic.controller.customer; + +import org.springframework.stereotype.Controller; + +@Controller +public class CustomerController { + +} From 8184b01846bb1ac5aa3ced9d3b75e32b0c98118b Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 19:14:24 +0900 Subject: [PATCH 024/157] =?UTF-8?q?feat:CustomerRepository=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/customer/CustomerJdbcRepository.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java diff --git a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java new file mode 100644 index 0000000000..0295fd3d11 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java @@ -0,0 +1,5 @@ +package com.prgrms.springbootbasic.repository.customer; + +public class CustomerJdbcRepository { + +} From 28819915ec1b60288c8c694439f7a92c21780eff Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 19:14:39 +0900 Subject: [PATCH 025/157] =?UTF-8?q?feat:CustomerService=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/service/customer/CustomerService.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java diff --git a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java new file mode 100644 index 0000000000..12236973ef --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java @@ -0,0 +1,8 @@ +package com.prgrms.springbootbasic.service.customer; + +import org.springframework.stereotype.Service; + +@Service +public class CustomerService { + +} From e639fc43b0767370f2fe180a62d907e36fa79dcd Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 19:18:51 +0900 Subject: [PATCH 026/157] =?UTF-8?q?fefactor:=20Customer=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/customer/{customer.java => Customer.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/java/com/prgrms/springbootbasic/domain/customer/{customer.java => Customer.java} (96%) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/customer/customer.java b/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java similarity index 96% rename from src/main/java/com/prgrms/springbootbasic/domain/customer/customer.java rename to src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java index 8a223c2785..9f2cbc03b0 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/customer/customer.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java @@ -10,7 +10,7 @@ @Getter @RequiredArgsConstructor @AllArgsConstructor -public class customer { +public class Customer { private final UUID customerId; From b6d9c8206e5d9e8eca822c223a1144dd9ed0de97 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 19:21:27 +0900 Subject: [PATCH 027/157] =?UTF-8?q?feat:=20CustomerRepository=20=EC=9D=B8?= =?UTF-8?q?=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerRepository.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java diff --git a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java new file mode 100644 index 0000000000..9b932f429b --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java @@ -0,0 +1,23 @@ +package com.prgrms.springbootbasic.repository.customer; + +import com.prgrms.springbootbasic.domain.customer.Customer; +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public interface CustomerRepository { + + Customer insert(Customer customer); + + Customer update(Customer customer); + + List findAll(); + + Optional findById(UUID customerId); + + Optional findByName(String name); + + Optional findByEmail(String email); + + void deleteAll(); +} From 55a476b2116306e726a5a57f76f59a021fea53a4 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 19:22:58 +0900 Subject: [PATCH 028/157] =?UTF-8?q?feat:CustomerRepository=EC=9D=98=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=EC=B2=B4=EB=A1=9C=20CustomerJdbcRepository?= =?UTF-8?q?=EA=B0=80=20=EB=90=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerJdbcRepository.java | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java index 0295fd3d11..f102665ad8 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java @@ -1,5 +1,44 @@ package com.prgrms.springbootbasic.repository.customer; -public class CustomerJdbcRepository { +import com.prgrms.springbootbasic.domain.customer.Customer; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +public class CustomerJdbcRepository implements CustomerRepository { + + @Override + public Customer insert(Customer customer) { + return null; + } + + @Override + public Customer update(Customer customer) { + return null; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Optional findById(UUID customerId) { + return Optional.empty(); + } + + @Override + public Optional findByName(String name) { + return Optional.empty(); + } + + @Override + public Optional findByEmail(String email) { + return Optional.empty(); + } + + @Override + public void deleteAll() { + + } } From b78737cfb3226e9ad9070e3fbe47d578afe936f6 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 19:40:45 +0900 Subject: [PATCH 029/157] =?UTF-8?q?refactor:CustomerService=20=EC=9D=B8?= =?UTF-8?q?=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=EB=A1=9C=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/customer/CustomerService.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java index 12236973ef..9584b2ac00 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java @@ -1,8 +1,17 @@ package com.prgrms.springbootbasic.service.customer; -import org.springframework.stereotype.Service; +import com.prgrms.springbootbasic.domain.customer.Customer; +import java.util.List; +import java.util.Optional; +import java.util.UUID; -@Service -public class CustomerService { +public interface CustomerService { + void createCustomers(List customers); + + Customer createCustomer(String email, String name); + + List getAllCustomers(); + + Optional getCustomer(UUID customerId); } From c6211fba9b41c0959222c3e3b86de3f98ec79a05 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 19:41:08 +0900 Subject: [PATCH 030/157] =?UTF-8?q?feat:CustomerService=EC=9D=98=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=EC=B2=B4=20CustomerServiceImpl=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/customer/CustomerServiceImpl.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/service/customer/CustomerServiceImpl.java diff --git a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerServiceImpl.java b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerServiceImpl.java new file mode 100644 index 0000000000..97fae000fc --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerServiceImpl.java @@ -0,0 +1,31 @@ +package com.prgrms.springbootbasic.service.customer; + +import com.prgrms.springbootbasic.domain.customer.Customer; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import org.springframework.stereotype.Service; + +@Service +public class CustomerServiceImpl implements CustomerService { + + @Override + public void createCustomers(List customers) { + + } + + @Override + public Customer createCustomer(String email, String name) { + return null; + } + + @Override + public List getAllCustomers() { + return null; + } + + @Override + public Optional getCustomer(UUID customerId) { + return Optional.empty(); + } +} From 24d66a458758dbc0d53d7d7ff59f4127a7eb7136 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 19:58:01 +0900 Subject: [PATCH 031/157] =?UTF-8?q?refactor:Build.gradle=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81(Jdbc,?= =?UTF-8?q?=20mysql=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=B6=94=EA=B0=80,=20?= =?UTF-8?q?Text.io=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=82=AD=EC=A0=9C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 1c84189194..f08ec67ae9 100644 --- a/build.gradle +++ b/build.gradle @@ -22,8 +22,6 @@ repositories { } dependencies { - //Text.io 설정 - implementation 'org.beryx:text-io:3.3.0' implementation 'org.springframework.boot:spring-boot-starter' compileOnly 'org.projectlombok:lombok' @@ -32,6 +30,10 @@ dependencies { //Logback 설정 implementation 'ch.qos.logback:logback-classic:1.2.6' implementation 'ch.qos.logback:logback-core:1.2.6' + dependencies { + implementation 'org.springframework.boot:spring-boot-starter-jdbc' + testImplementation 'com.wix:wix-embedded-mysql:4.6.1' + } } tasks.named('test') { From 99261f60b45fb41447defeded3bad6a33ebd3975 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sat, 8 Jul 2023 23:47:29 +0900 Subject: [PATCH 032/157] =?UTF-8?q?refactor:Customer=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/customer/Customer.java | 25 +------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java b/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java index 9f2cbc03b0..45940ecb74 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java @@ -1,37 +1,14 @@ package com.prgrms.springbootbasic.domain.customer; -import java.time.LocalDateTime; import java.util.UUID; -import lombok.AllArgsConstructor; import lombok.Getter; -import lombok.NonNull; import lombok.RequiredArgsConstructor; @Getter @RequiredArgsConstructor -@AllArgsConstructor public class Customer { private final UUID customerId; - - @NonNull - private String name; - + private final String name; private final String email; - - private LocalDateTime lastLoginAt; - - private final LocalDateTime createAt; - - //이름 변경 - public void changeName(String name) { - validateName(name); - this.name = name; - } - - private void validateName(String name) { - if (name.isBlank()) { - throw new RuntimeException("이름란은 비워둘 수 없습니다!"); - } - } } From 3c1325c2e59f1bdfe1aba41c70c15edc7da97f27 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 00:04:31 +0900 Subject: [PATCH 033/157] =?UTF-8?q?feat:CustomerDto=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/dto/customer/CustomerDto.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java b/src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java new file mode 100644 index 0000000000..8f414881c6 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java @@ -0,0 +1,13 @@ +package com.prgrms.springbootbasic.dto.customer; + +import java.util.UUID; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +public class CustomerDto { + + private UUID customerId; + private String name; + private String email; + +} \ No newline at end of file From d8a26dc37eb76ea041bb2ef9f97a4f425ef4212b Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 00:35:54 +0900 Subject: [PATCH 034/157] =?UTF-8?q?rm:CustomerServiceImpl=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/customer/CustomerServiceImpl.java | 31 ------------------- 1 file changed, 31 deletions(-) delete mode 100644 src/main/java/com/prgrms/springbootbasic/service/customer/CustomerServiceImpl.java diff --git a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerServiceImpl.java b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerServiceImpl.java deleted file mode 100644 index 97fae000fc..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerServiceImpl.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.prgrms.springbootbasic.service.customer; - -import com.prgrms.springbootbasic.domain.customer.Customer; -import java.util.List; -import java.util.Optional; -import java.util.UUID; -import org.springframework.stereotype.Service; - -@Service -public class CustomerServiceImpl implements CustomerService { - - @Override - public void createCustomers(List customers) { - - } - - @Override - public Customer createCustomer(String email, String name) { - return null; - } - - @Override - public List getAllCustomers() { - return null; - } - - @Override - public Optional getCustomer(UUID customerId) { - return Optional.empty(); - } -} From 65aa986b5468eff23f055c3a037e738fdd935d4b Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 00:36:51 +0900 Subject: [PATCH 035/157] =?UTF-8?q?refactor:CustomerService=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/customer/CustomerService.java | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java index 9584b2ac00..f2e34b6fc3 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java @@ -1,17 +1,32 @@ package com.prgrms.springbootbasic.service.customer; -import com.prgrms.springbootbasic.domain.customer.Customer; -import java.util.List; -import java.util.Optional; -import java.util.UUID; +import com.prgrms.springbootbasic.dto.customer.CustomerDto; +import com.prgrms.springbootbasic.repository.customer.CustomerRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; -public interface CustomerService { +@Service +@RequiredArgsConstructor +public class CustomerService { - void createCustomers(List customers); + private CustomerRepository customerRepository; - Customer createCustomer(String email, String name); + //생성(update) + public CustomerDto create(CustomerDto create) { + return null; + } - List getAllCustomers(); + //조회(read - custmer의 모든 List를 조회하기) + public CustomerDto findAllCustomer() { + return null; + } - Optional getCustomer(UUID customerId); + //수정(update) + public CustomerDto update(CustomerDto update) { + return null; + } + + //삭제 + public void delete(String id) { + } } From 708d122a032740d59d4074522b5966b09d3e938b Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 00:37:47 +0900 Subject: [PATCH 036/157] =?UTF-8?q?refactor:=20CustomerRepository=20?= =?UTF-8?q?=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/customer/CustomerRepository.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java index 9b932f429b..56ed36f004 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java @@ -2,22 +2,18 @@ import com.prgrms.springbootbasic.domain.customer.Customer; import java.util.List; -import java.util.Optional; -import java.util.UUID; public interface CustomerRepository { + //생성(create) Customer insert(Customer customer); - Customer update(Customer customer); + //업데이트(update) + void update(Customer customer); + //조회(Read) - 리스트 출력 List findAll(); - Optional findById(UUID customerId); - - Optional findByName(String name); - - Optional findByEmail(String email); - + //customer 모두 삭제(Delete) void deleteAll(); } From c5fbc8ca43d487e8e02791e3882fc12e40ceb877 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 00:39:20 +0900 Subject: [PATCH 037/157] =?UTF-8?q?refactor:CustomerJdbcRepository=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../customer/CustomerJdbcRepository.java | 21 ++----------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java index f102665ad8..09553538b3 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java @@ -2,8 +2,6 @@ import com.prgrms.springbootbasic.domain.customer.Customer; import java.util.List; -import java.util.Optional; -import java.util.UUID; public class CustomerJdbcRepository implements CustomerRepository { @@ -13,8 +11,8 @@ public Customer insert(Customer customer) { } @Override - public Customer update(Customer customer) { - return null; + public void update(Customer customer) { + } @Override @@ -22,21 +20,6 @@ public List findAll() { return null; } - @Override - public Optional findById(UUID customerId) { - return Optional.empty(); - } - - @Override - public Optional findByName(String name) { - return Optional.empty(); - } - - @Override - public Optional findByEmail(String email) { - return Optional.empty(); - } - @Override public void deleteAll() { From 3bcd69d484858a3dbbf4f0e25fe167d37f5bade2 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 00:46:45 +0900 Subject: [PATCH 038/157] =?UTF-8?q?feat:VoucherDto=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/dto/voucher/VoucherDto.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/dto/voucher/VoucherDto.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/VoucherDto.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/VoucherDto.java new file mode 100644 index 0000000000..4c5300c09e --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/dto/voucher/VoucherDto.java @@ -0,0 +1,15 @@ +package com.prgrms.springbootbasic.dto.voucher; + +import com.prgrms.springbootbasic.enums.VoucherType; +import java.util.UUID; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public class VoucherDto { + + private final UUID id; + private final VoucherType type; + private final long discount; +} From c3ebd7817e0df6a0b92eeb7a399d25f6c4b8c91e Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 00:58:13 +0900 Subject: [PATCH 039/157] =?UTF-8?q?refactor:VocherController=EC=97=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=ED=95=A0=20=EB=A9=94=EC=86=8C=EB=93=9C=20?= =?UTF-8?q?=EB=AA=85=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/voucher/VoucherController.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java index 22e6f2a655..59384169db 100644 --- a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java +++ b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java @@ -14,11 +14,33 @@ public class VoucherController { private final VoucherService voucherService; + //(Create)바우처 생성 public void createVoucher(VoucherType type, long discount) { voucherService.createVoucher(type, discount); } + //(Read) 바우처의 모든 리스트 출력 public Map printVoucherList() { return voucherService.fetchAllVouchers(); } + + //(Read) 특정 바우처 id의 내용을 출력 + public void findVoucherByid() { + + } + + //(Update) 생성된 바우처 수정 + public void updateVoucher() { + + } + + //(Delete) 특정 바우처를 찾아 삭제 + public void deleteVoucherByid() { + + } + + //(Delete) 모든 바우처의 내용 삭제 + public void deleteVoucherAll() { + + } } From 7692e6ea77b33fe4cb75c343b3ff2cc8c02cf6d0 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 00:58:38 +0900 Subject: [PATCH 040/157] =?UTF-8?q?refactor:VoucherService=EC=97=90=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=ED=95=A0=20task=EB=AA=85=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/voucher/VoucherService.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java index 7e41cf5135..569d61bd5c 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java @@ -18,6 +18,7 @@ public VoucherService(VoucherRepository voucherRepository) { this.voucherRepository = voucherRepository; } + //생성(create) public Voucher createVoucher(VoucherType type, long discount) { try { isValidDiscount(type, discount); @@ -47,7 +48,28 @@ public void isValidDiscount(VoucherType type, long discount) { } } + //조회(Read) - 생성된 모든 Voucher리스트 조회 public Map fetchAllVouchers() { return voucherRepository.getAllVouchersList(); } + + //조회(Read) - id를 통해서 조회 + public void findById() { + + } + + //수정(Update) + public void updetVoucher() { + + } + + //삭제(Delete) -id + public void deleteById() { + + } + + //삭제(Delete) + public void deleteAllVoucher() { + + } } From 5b01135c986e60a1e96b9d49fc4726bc3dbe06aa Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 13:58:55 +0900 Subject: [PATCH 041/157] =?UTF-8?q?refactor:CustomerDto=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/dto/customer/CustomerDto.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java b/src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java index 8f414881c6..6d069ade7b 100644 --- a/src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java +++ b/src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java @@ -1,13 +1,17 @@ package com.prgrms.springbootbasic.dto.customer; +import java.time.LocalDateTime; import java.util.UUID; +import lombok.Getter; import lombok.RequiredArgsConstructor; +@Getter @RequiredArgsConstructor public class CustomerDto { - private UUID customerId; - private String name; - private String email; + private final UUID customerId; + private final String name; + private final String email; + private final LocalDateTime localDateTime; } \ No newline at end of file From ca676523185e4617b6f5f8f112f60e76bc22e6a7 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 13:59:35 +0900 Subject: [PATCH 042/157] =?UTF-8?q?refactor:VoucherController=20Task=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 --- .../controller/voucher/VoucherController.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java index 59384169db..47dedddf54 100644 --- a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java +++ b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java @@ -15,32 +15,42 @@ public class VoucherController { private final VoucherService voucherService; //(Create)바우처 생성 - public void createVoucher(VoucherType type, long discount) { + public void create(VoucherType type, long discount) { voucherService.createVoucher(type, discount); } //(Read) 바우처의 모든 리스트 출력 - public Map printVoucherList() { + public Map findAllList() { return voucherService.fetchAllVouchers(); } //(Read) 특정 바우처 id의 내용을 출력 - public void findVoucherByid() { + public void findByid() { + + } + + //(Read) 바우처 타입 내용을 출력 + public void findByType() { + + } + + //(Read) 바우처 생성기간 출력 + public void findByCreateAt() { } //(Update) 생성된 바우처 수정 - public void updateVoucher() { + public void update() { } //(Delete) 특정 바우처를 찾아 삭제 - public void deleteVoucherByid() { + public void deleteByid() { } //(Delete) 모든 바우처의 내용 삭제 - public void deleteVoucherAll() { + public void deleteAll() { } } From d2ec5ed7816409510b17a9f0c2318aaff70604ae Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 14:12:23 +0900 Subject: [PATCH 043/157] =?UTF-8?q?refactor:VoucherService=EC=9D=98=20?= =?UTF-8?q?=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/voucher/VoucherService.java | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java index 7e41cf5135..2cedf98901 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java @@ -20,7 +20,6 @@ public VoucherService(VoucherRepository voucherRepository) { public Voucher createVoucher(VoucherType type, long discount) { try { - isValidDiscount(type, discount); Voucher voucher = switch (type) { case FIXED -> new FixedDiscountVoucher(discount); case PERCENT -> new PercentDiscountVoucher(discount); @@ -32,21 +31,6 @@ public Voucher createVoucher(VoucherType type, long discount) { } } - public void isValidDiscount(VoucherType type, long discount) { - switch (type) { - case FIXED: - if (discount <= 0) { - throw new IllegalArgumentException("고정 할인 바우처의 입력 금액은 0 이하를 입력할 수 없습니다."); - } - break; - case PERCENT: - if (discount < 1 || discount > 99) { - throw new IllegalArgumentException("퍼센트 할인 바우처의 할인 퍼센트는 1 ~ 99까지의 숫자를 입력해야 합니다."); - } - break; - } - } - public Map fetchAllVouchers() { return voucherRepository.getAllVouchersList(); } From f4cabf6c02f2e498622a3ba329376b7808856ea8 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 14:12:49 +0900 Subject: [PATCH 044/157] =?UTF-8?q?refactor:Voucher=20=EC=9D=B8=ED=84=B0?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/prgrms/springbootbasic/domain/voucher/Voucher.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java index d38d0c7dac..17233e8662 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java @@ -1,6 +1,7 @@ package com.prgrms.springbootbasic.domain.voucher; import com.prgrms.springbootbasic.enums.VoucherType; +import java.time.LocalDateTime; import java.util.UUID; public interface Voucher { @@ -10,4 +11,6 @@ public interface Voucher { long getDiscount(); VoucherType getVoucherType(); + + LocalDateTime getcreatedAt(); } From f2b76ec9572d65295748a87034598ff1ef20d9a7 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 14:13:35 +0900 Subject: [PATCH 045/157] =?UTF-8?q?refactor:=20FixedDiscountVoucher=20?= =?UTF-8?q?=EB=8F=84=EB=A9=94=EC=9D=B8=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81=20&=20=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/voucher/FixedDiscountVoucher.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java index 50921b26bb..6e2f191658 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java @@ -1,6 +1,7 @@ package com.prgrms.springbootbasic.domain.voucher; import com.prgrms.springbootbasic.enums.VoucherType; +import java.time.LocalDateTime; import java.util.UUID; import lombok.Getter; @@ -9,14 +10,31 @@ public class FixedDiscountVoucher implements Voucher { private final UUID voucherId; private final long discount; + private final LocalDateTime createAt; + private final VoucherType type; public FixedDiscountVoucher(long discount) { this.voucherId = UUID.randomUUID(); - this.discount = discount; + this.discount = ValidDiscount(discount); + this.createAt = getcreatedAt(); + this.type = getVoucherType(); } - + + + public long ValidDiscount(long discount) { + if (discount <= 0) { + throw new IllegalArgumentException("고정 할인 바우처의 입력 금액은 0 이하를 입력할 수 없습니다."); + } + return discount; + } + @Override public VoucherType getVoucherType() { return VoucherType.FIXED; } + + @Override + public LocalDateTime getcreatedAt() { + return createAt; + } } From 9fe22dff25409e84af47af0069d356167f15cb73 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 9 Jul 2023 14:13:53 +0900 Subject: [PATCH 046/157] =?UTF-8?q?refactor:=20PercentDiscountVoucher=20?= =?UTF-8?q?=EB=8F=84=EB=A9=94=EC=9D=B8=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81=20&=20=EA=B2=80=EC=A6=9D=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/PercentDiscountVoucher.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java index 950cedf6cc..68da39d783 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java @@ -1,6 +1,7 @@ package com.prgrms.springbootbasic.domain.voucher; import com.prgrms.springbootbasic.enums.VoucherType; +import java.time.LocalDateTime; import java.util.UUID; import lombok.Getter; @@ -9,14 +10,31 @@ public class PercentDiscountVoucher implements Voucher { private final UUID voucherId; private final long discount; + private final LocalDateTime createAt; + private final VoucherType type; public PercentDiscountVoucher(long discount) { this.voucherId = UUID.randomUUID(); - this.discount = discount; + this.discount = ValidDiscount(discount); + this.createAt = getcreatedAt(); + this.type = getVoucherType(); + } + + public long ValidDiscount(long discount) { + if (discount < 1 || discount > 99) { + throw new IllegalArgumentException("퍼센트 할인 바우처의 할인 퍼센트는 1 ~ 99까지의 숫자를 입력해야 합니다."); + } + return discount; } @Override public VoucherType getVoucherType() { return VoucherType.PERCENT; } + + + @Override + public LocalDateTime getcreatedAt() { + return createAt; + } } From b8c325911b6dccd99dc81aa1ac47f608e771e436 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 11 Jul 2023 00:01:25 +0900 Subject: [PATCH 047/157] =?UTF-8?q?refactor:=20FixedDiscountVoucher=20?= =?UTF-8?q?=EA=B8=88=EC=95=A1=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/domain/voucher/FixedDiscountVoucher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java index 6e2f191658..49a9f80b80 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java @@ -9,7 +9,7 @@ public class FixedDiscountVoucher implements Voucher { private final UUID voucherId; - private final long discount; + private long discount; private final LocalDateTime createAt; private final VoucherType type; From 3c52213cc16c32f743755798d3ff4b0b3b44489f Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 11 Jul 2023 00:02:16 +0900 Subject: [PATCH 048/157] =?UTF-8?q?refactor:=20PercentDiscountVoucher=20di?= =?UTF-8?q?scount=20=ED=95=84=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/domain/voucher/PercentDiscountVoucher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java index 68da39d783..2f6f2d0a95 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java @@ -9,7 +9,7 @@ public class PercentDiscountVoucher implements Voucher { private final UUID voucherId; - private final long discount; + private long discount; private final LocalDateTime createAt; private final VoucherType type; From 8eb2131a6c28fe02b7e9e1c66dfd0e4ec0a31c4a Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 11 Jul 2023 00:03:58 +0900 Subject: [PATCH 049/157] =?UTF-8?q?feat:CreateRequsetDto=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/voucher/request/VoucherCreateRequest.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherCreateRequest.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherCreateRequest.java index 5af4e17a3a..ef542ab588 100644 --- a/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherCreateRequest.java +++ b/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherCreateRequest.java @@ -2,16 +2,14 @@ import com.prgrms.springbootbasic.enums.VoucherType; import java.time.LocalDateTime; -import java.util.UUID; +import lombok.AllArgsConstructor; import lombok.Getter; -import lombok.RequiredArgsConstructor; @Getter -@RequiredArgsConstructor +@AllArgsConstructor public class VoucherCreateRequest { - private final UUID id; - private final VoucherType type; - private final long discount; - private final LocalDateTime createAt; + private long discount; + private VoucherType type; + private LocalDateTime createAt; } \ No newline at end of file From 2f63b1482045004d07f1274b859a2170d181a4c9 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 11 Jul 2023 00:04:17 +0900 Subject: [PATCH 050/157] =?UTF-8?q?feat:VoucherUpdate=20Dto=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/voucher/request/VoucherUpdateRequest.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherUpdateRequest.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherUpdateRequest.java index 81c1da937a..296e6f3e45 100644 --- a/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherUpdateRequest.java +++ b/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherUpdateRequest.java @@ -1,11 +1,15 @@ package com.prgrms.springbootbasic.dto.voucher.request; +import com.prgrms.springbootbasic.enums.VoucherType; +import java.util.UUID; +import lombok.AllArgsConstructor; import lombok.Getter; -import lombok.RequiredArgsConstructor; @Getter -@RequiredArgsConstructor +@AllArgsConstructor public class VoucherUpdateRequest { - private final long discount; -} + private UUID voucherId; + private long discount; + private VoucherType type; +} \ No newline at end of file From adbe06640f83e905900d730c057cde231a0248e2 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 11 Jul 2023 00:07:15 +0900 Subject: [PATCH 051/157] =?UTF-8?q?feat:=20Voucher=20List=20=EC=9D=91?= =?UTF-8?q?=EB=8B=B5=20Dto=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/voucher/response/VoucherListResponse.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherListResponse.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherListResponse.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherListResponse.java new file mode 100644 index 0000000000..0bc6f9c320 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherListResponse.java @@ -0,0 +1,12 @@ +package com.prgrms.springbootbasic.dto.voucher.response; + +import java.util.List; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public class VoucherListResponse { + + private final List voucherResponseList; +} From 00486b78b2f1f7640dbfa3c0d4d06b98beb12cbe Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 11 Jul 2023 00:07:51 +0900 Subject: [PATCH 052/157] =?UTF-8?q?feat:=20Voucher=20=EC=9D=91=EB=8B=B5=20?= =?UTF-8?q?Dto=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/voucher/response/VoucherResponse.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java new file mode 100644 index 0000000000..0ebe45bf0c --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java @@ -0,0 +1,17 @@ +package com.prgrms.springbootbasic.dto.voucher.response; + +import com.prgrms.springbootbasic.enums.VoucherType; +import java.time.LocalDateTime; +import java.util.UUID; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class VoucherResponse { + + private final UUID voucherId; + private long discount; + private VoucherType type; + private final LocalDateTime createAt; +} \ No newline at end of file From be89fea0c69ffd01fe985bab378afd7a1c228a56 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 11 Jul 2023 00:14:02 +0900 Subject: [PATCH 053/157] =?UTF-8?q?refactor:=20VoucherController=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/voucher/VoucherController.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java index 47dedddf54..970daac54e 100644 --- a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java +++ b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java @@ -1,8 +1,12 @@ package com.prgrms.springbootbasic.controller.voucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; import com.prgrms.springbootbasic.enums.VoucherType; import com.prgrms.springbootbasic.service.voucher.VoucherService; +import java.time.LocalDateTime; import java.util.Map; import java.util.UUID; import lombok.AllArgsConstructor; @@ -15,42 +19,43 @@ public class VoucherController { private final VoucherService voucherService; //(Create)바우처 생성 - public void create(VoucherType type, long discount) { - voucherService.createVoucher(type, discount); + public void create(VoucherCreateRequest voucherCreateRequest) { + voucherService.createVoucher(voucherCreateRequest); } + //(Read) 바우처의 모든 리스트 출력 public Map findAllList() { return voucherService.fetchAllVouchers(); } //(Read) 특정 바우처 id의 내용을 출력 - public void findByid() { - + public VoucherResponse findByid(UUID voucherId) { + return voucherService.findById(voucherId); } //(Read) 바우처 타입 내용을 출력 - public void findByType() { - + public VoucherResponse findByType(VoucherType voucherType) { + return voucherService.finByType(VoucherType); } //(Read) 바우처 생성기간 출력 - public void findByCreateAt() { - + public VoucherResponse findByCreateAt(LocalDateTime createAt) { + return voucherService.findByCreateAt(createAt); } //(Update) 생성된 바우처 수정 - public void update() { - + public void update(VoucherUpdateRequest voucherUpdateRequest) { + voucherService.update(voucherUpdateRequest); } //(Delete) 특정 바우처를 찾아 삭제 public void deleteByid() { - + voucherService.deleteById(); } //(Delete) 모든 바우처의 내용 삭제 public void deleteAll() { - + voucherService.deleteAllVoucher(); } } From 610d29d05794f590069b2dedadf0cb2a4a5f5625 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 11 Jul 2023 01:05:38 +0900 Subject: [PATCH 054/157] =?UTF-8?q?refactor:VoucherRepository=20=EC=9D=B8?= =?UTF-8?q?=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EB=A6=AC=ED=8C=A9?= =?UTF-8?q?=ED=86=A0=EB=A7=81(Read,=20Update,Delete=20=EC=B6=94=EA=B0=80)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/voucher/VoucherRepository.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java index 68ac898c7d..f1e3fc1eb8 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java @@ -1,12 +1,27 @@ package com.prgrms.springbootbasic.repository.voucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; -import java.util.Map; +import java.time.LocalDateTime; +import java.util.List; import java.util.UUID; public interface VoucherRepository { - Voucher insert(Voucher voucher); + //create + Voucher create(Voucher voucher); - Map getAllVouchersList(); + //read + Voucher findById(UUID voucherId); + + Voucher findByCreatedAt(LocalDateTime createAt); + + List findAll(); + + //update + void update(Voucher voucher); + + //delete + void deleteById(UUID voucherId); + + void deleteAll(); } From 32ef993bfea1c15a39cd9e3f476e6e17a0000646 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 14:41:18 +0900 Subject: [PATCH 055/157] =?UTF-8?q?remove:=20=EB=B3=80=EA=B2=BD=EC=A0=84?= =?UTF-8?q?=20VoucherDTO=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/response/VoucherListRequest.java | 17 ----------------- .../voucher/response/VoucherfindResponse.java | 17 ----------------- 2 files changed, 34 deletions(-) delete mode 100644 src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherListRequest.java delete mode 100644 src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherfindResponse.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherListRequest.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherListRequest.java deleted file mode 100644 index 13914bac3f..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherListRequest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.prgrms.springbootbasic.dto.voucher.response; - -import com.prgrms.springbootbasic.enums.VoucherType; -import java.time.LocalDateTime; -import java.util.UUID; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -@Getter -@RequiredArgsConstructor -public class VoucherListRequest { - - private final UUID id; - private final VoucherType type; - private final long discount; - private final LocalDateTime createAt; -} diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherfindResponse.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherfindResponse.java deleted file mode 100644 index 1d4e4539f2..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherfindResponse.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.prgrms.springbootbasic.dto.voucher.response; - -import com.prgrms.springbootbasic.enums.VoucherType; -import java.time.LocalDateTime; -import java.util.UUID; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -@Getter -@RequiredArgsConstructor -public class VoucherfindResponse { - - private final UUID id; - private final VoucherType type; - private final long discount; - private final LocalDateTime createAt; -} \ No newline at end of file From 32f5bc9b027e47f4a395a8cda66c9893b316bc9b Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 14:41:42 +0900 Subject: [PATCH 056/157] =?UTF-8?q?refactor:=20Custeor=20domain=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/domain/customer/Customer.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java b/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java index 45940ecb74..413c29b3e2 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java @@ -1,14 +1,21 @@ package com.prgrms.springbootbasic.domain.customer; +import java.time.LocalDateTime; import java.util.UUID; import lombok.Getter; -import lombok.RequiredArgsConstructor; @Getter -@RequiredArgsConstructor public class Customer { private final UUID customerId; private final String name; private final String email; + private LocalDateTime createAt; + + public Customer(UUID customerId, String name, String email, LocalDateTime createAt) { + this.customerId = customerId; + this.name = name; + this.email = email; + this.createAt = createAt; + } } From 78ae65af10fcf49f1ca6ccbddf4f2b3e1c159a56 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 14:42:06 +0900 Subject: [PATCH 057/157] =?UTF-8?q?remove:=20=EB=B3=80=EA=B2=BD=EC=A0=84?= =?UTF-8?q?=20VoucherDto=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/dto/voucher/VoucherDto.java | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 src/main/java/com/prgrms/springbootbasic/dto/voucher/VoucherDto.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/VoucherDto.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/VoucherDto.java deleted file mode 100644 index 4c5300c09e..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/dto/voucher/VoucherDto.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.prgrms.springbootbasic.dto.voucher; - -import com.prgrms.springbootbasic.enums.VoucherType; -import java.util.UUID; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -@Getter -@RequiredArgsConstructor -public class VoucherDto { - - private final UUID id; - private final VoucherType type; - private final long discount; -} From eb37421b70d7c2e0af4e27e11b00f8636889f2fc Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 14:42:27 +0900 Subject: [PATCH 058/157] =?UTF-8?q?refactor:=20VoucherServie=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/voucher/VoucherService.java | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java index c1bc13d93e..0c7e0a1c04 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java @@ -3,6 +3,7 @@ import com.prgrms.springbootbasic.domain.voucher.FixedDiscountVoucher; import com.prgrms.springbootbasic.domain.voucher.PercentDiscountVoucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; import com.prgrms.springbootbasic.enums.VoucherType; import com.prgrms.springbootbasic.repository.voucher.VoucherRepository; import java.util.Map; @@ -37,22 +38,23 @@ public Map fetchAllVouchers() { } //조회(Read) - id를 통해서 조회 - public void findById() { + public void findById(UUID voucherId) { + Voucher voucher = VoucherRepository.findById(voucherId); } //수정(Update) - public void updetVoucher() { + public void updateVoucher(VoucherUpdateRequest voucherUpdateRequest) { } //삭제(Delete) -id - public void deleteById() { - + public void deleteById(UUID voucherId) { + VoucherRepository.deleteById(voucherId); } //삭제(Delete) public void deleteAllVoucher() { - + VoucherRepository.delteAll(); } } From 9f8cb2e3f728147e1d1526f62405fa71ef013031 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 14:42:52 +0900 Subject: [PATCH 059/157] =?UTF-8?q?refactor:VoucherRepository=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/MemoryVoucherRepository.java | 37 ++++++++++++++--- .../voucher/VoucherJdbcRepository.java | 41 ++++++++++++++++++- 2 files changed, 71 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java index 1a05353948..b7ad4fa1b9 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java @@ -1,8 +1,9 @@ package com.prgrms.springbootbasic.repository.voucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; -import java.util.Collections; +import java.time.LocalDateTime; import java.util.LinkedHashMap; +import java.util.List; import java.util.Map; import java.util.UUID; import org.springframework.stereotype.Repository; @@ -13,13 +14,37 @@ public class MemoryVoucherRepository implements VoucherRepository { private final Map storage = new LinkedHashMap<>(); @Override - public Voucher insert(Voucher voucher) { - storage.put(voucher.getVoucherId(), voucher); - return voucher; + public Voucher create(Voucher voucher) { + return null; } @Override - public Map getAllVouchersList() { - return Collections.unmodifiableMap(storage); + public Voucher findById(UUID voucherId) { + return null; + } + + @Override + public Voucher findByCreatedAt(LocalDateTime createAt) { + return null; + } + + @Override + public List findAll() { + return null; + } + + @Override + public void update(Voucher voucher) { + + } + + @Override + public void deleteById(UUID voucherId) { + + } + + @Override + public void deleteAll() { + } } diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java index 8ef826db67..d2bb01a1a7 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java @@ -1,5 +1,44 @@ package com.prgrms.springbootbasic.repository.voucher; -public class VoucherJdbcRepository { +import com.prgrms.springbootbasic.domain.voucher.Voucher; +import java.time.LocalDateTime; +import java.util.List; +import java.util.UUID; +public class VoucherJdbcRepository implements VoucherRepository { + + @Override + public Voucher create(Voucher voucher) { + return null; + } + + @Override + public Voucher findById(UUID voucherId) { + return null; + } + + @Override + public Voucher findByCreatedAt(LocalDateTime createAt) { + return null; + } + + @Override + public List findAll() { + return null; + } + + @Override + public void update(Voucher voucher) { + + } + + @Override + public void deleteById(UUID voucherId) { + + } + + @Override + public void deleteAll() { + + } } From 0ae3b88e1982a8e1fdd883961f5762b4834d914c Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 14:50:53 +0900 Subject: [PATCH 060/157] =?UTF-8?q?refactor:Voucher=20=EB=A6=AC=ED=8C=A9?= =?UTF-8?q?=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prgrms/springbootbasic/domain/voucher/Voucher.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java index 17233e8662..89f16afe85 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java @@ -6,11 +6,11 @@ public interface Voucher { - UUID getVoucherId(); + UUID VoucherId(); - long getDiscount(); + long Discount(); - VoucherType getVoucherType(); + VoucherType VoucherType(); - LocalDateTime getcreatedAt(); + LocalDateTime createdAt(); } From ef5f7fcd4103abc88d3107a111e7577298ec88b2 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 15:02:33 +0900 Subject: [PATCH 061/157] =?UTF-8?q?refactor:Voucher=20=EC=9D=B8=ED=84=B0?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/prgrms/springbootbasic/domain/voucher/Voucher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java index 89f16afe85..57b630c07d 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java @@ -8,7 +8,7 @@ public interface Voucher { UUID VoucherId(); - long Discount(); + long discount(); VoucherType VoucherType(); From 80d6da675d25cd53950e322c81ee738c9aa9301b Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 15:30:31 +0900 Subject: [PATCH 062/157] =?UTF-8?q?rename:FixedDiscountVoucher=20->=20Fixe?= =?UTF-8?q?dVoucher=EB=A1=9C=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=AA=85=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...xedDiscountVoucher.java => FixedVoucher.java} | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) rename src/main/java/com/prgrms/springbootbasic/domain/voucher/{FixedDiscountVoucher.java => FixedVoucher.java} (76%) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java similarity index 76% rename from src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java rename to src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java index 49a9f80b80..fe24529132 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedDiscountVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java @@ -3,38 +3,42 @@ import com.prgrms.springbootbasic.enums.VoucherType; import java.time.LocalDateTime; import java.util.UUID; -import lombok.Getter; -@Getter -public class FixedDiscountVoucher implements Voucher { +public class FixedVoucher implements Voucher { private final UUID voucherId; private long discount; private final LocalDateTime createAt; private final VoucherType type; - public FixedDiscountVoucher(long discount) { + public FixedVoucher(long discount) { this.voucherId = UUID.randomUUID(); this.discount = ValidDiscount(discount); - this.createAt = getcreatedAt(); + this.createAt = getCreatedAt(); this.type = getVoucherType(); } public long ValidDiscount(long discount) { + if (discount <= 0) { throw new IllegalArgumentException("고정 할인 바우처의 입력 금액은 0 이하를 입력할 수 없습니다."); } return discount; } + @Override + public UUID getVoucherId() { + return voucherId; + } + @Override public VoucherType getVoucherType() { return VoucherType.FIXED; } @Override - public LocalDateTime getcreatedAt() { + public LocalDateTime getCreatedAt() { return createAt; } } From 0a5b530ad609edfb15546711610c4cbce173225e Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 15:31:05 +0900 Subject: [PATCH 063/157] =?UTF-8?q?rename:PercentDiscountVoucher->=20RateV?= =?UTF-8?q?oucher=EB=A1=9C=20=ED=81=B4=EB=9E=98=EC=8A=A4=EB=AA=85=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...centDiscountVoucher.java => RateVoucher.java} | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) rename src/main/java/com/prgrms/springbootbasic/domain/voucher/{PercentDiscountVoucher.java => RateVoucher.java} (77%) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java similarity index 77% rename from src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java rename to src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java index 2f6f2d0a95..ba68d38989 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/PercentDiscountVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java @@ -3,20 +3,18 @@ import com.prgrms.springbootbasic.enums.VoucherType; import java.time.LocalDateTime; import java.util.UUID; -import lombok.Getter; -@Getter -public class PercentDiscountVoucher implements Voucher { +public class RateVoucher implements Voucher { private final UUID voucherId; private long discount; private final LocalDateTime createAt; private final VoucherType type; - public PercentDiscountVoucher(long discount) { + public RateVoucher(long discount) { this.voucherId = UUID.randomUUID(); this.discount = ValidDiscount(discount); - this.createAt = getcreatedAt(); + this.createAt = getCreatedAt(); this.type = getVoucherType(); } @@ -27,14 +25,18 @@ public long ValidDiscount(long discount) { return discount; } + @Override + public UUID getVoucherId() { + return voucherId; + } + @Override public VoucherType getVoucherType() { return VoucherType.PERCENT; } - @Override - public LocalDateTime getcreatedAt() { + public LocalDateTime getCreatedAt() { return createAt; } } From 782d1ff49174deea6f8687a90863bd22c49bbad3 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 15:31:18 +0900 Subject: [PATCH 064/157] =?UTF-8?q?refactor:Voucher=20=EB=A6=AC=ED=8C=A9?= =?UTF-8?q?=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prgrms/springbootbasic/domain/voucher/Voucher.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java index 57b630c07d..6568afae68 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java @@ -6,11 +6,11 @@ public interface Voucher { - UUID VoucherId(); + UUID getVoucherId(); - long discount(); + long getDiscount(); - VoucherType VoucherType(); + VoucherType getVoucherType(); - LocalDateTime createdAt(); + LocalDateTime getCreatedAt(); } From 57fc4f8af3c79ca051d5d56bbe54776c8052e198 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 15:33:05 +0900 Subject: [PATCH 065/157] =?UTF-8?q?feat:=20FixedVoucher=EC=9D=98=20getDisc?= =?UTF-8?q?ount=EB=A9=94=EC=86=8C=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prgrms/springbootbasic/domain/voucher/FixedVoucher.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java index fe24529132..4f76820383 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java @@ -32,6 +32,11 @@ public UUID getVoucherId() { return voucherId; } + @Override + public long getDiscount() { + return discount; + } + @Override public VoucherType getVoucherType() { return VoucherType.FIXED; From ef200db52f1b82cc32f9a6f52b779fdad70d3be3 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 15:38:40 +0900 Subject: [PATCH 066/157] =?UTF-8?q?feat:=20RateVoucher=EC=9D=98=20getDisco?= =?UTF-8?q?unt=EB=A9=94=EC=86=8C=EB=93=9C=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prgrms/springbootbasic/domain/voucher/RateVoucher.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java index ba68d38989..b7412c7ab3 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java @@ -30,6 +30,11 @@ public UUID getVoucherId() { return voucherId; } + @Override + public long getDiscount() { + return discount; + } + @Override public VoucherType getVoucherType() { return VoucherType.PERCENT; From 4f0e1537c7b50c5f9dca8fc3c867d9486bb5b5ad Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 15:41:10 +0900 Subject: [PATCH 067/157] =?UTF-8?q?refactor:=20VoucherReposponse=20?= =?UTF-8?q?=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/dto/voucher/response/VoucherResponse.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java index 0ebe45bf0c..cf15866d5b 100644 --- a/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java +++ b/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java @@ -12,6 +12,6 @@ public class VoucherResponse { private final UUID voucherId; private long discount; - private VoucherType type; + private final VoucherType type; private final LocalDateTime createAt; } \ No newline at end of file From efe50a5df8002f2b5afc188697562418c624d5ec Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 16:18:58 +0900 Subject: [PATCH 068/157] refactor:VoucherRepository interface refactoring --- .../repository/voucher/VoucherRepository.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java index f1e3fc1eb8..928a0abada 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java @@ -3,6 +3,7 @@ import com.prgrms.springbootbasic.domain.voucher.Voucher; import java.time.LocalDateTime; import java.util.List; +import java.util.Optional; import java.util.UUID; public interface VoucherRepository { @@ -10,18 +11,22 @@ public interface VoucherRepository { //create Voucher create(Voucher voucher); - //read - Voucher findById(UUID voucherId); + //read - id + Optional findById(UUID voucherId); - Voucher findByCreatedAt(LocalDateTime createAt); + //read - create at + Optional findByCreatedAt(LocalDateTime createAt); - List findAll(); + //read - all + List findAll(Voucher voucher); //update - void update(Voucher voucher); + Optional update(Voucher voucher); - //delete - void deleteById(UUID voucherId); + //delete - id + Optional deleteById(UUID voucherId); + + //delete - all void deleteAll(); } From f9bbf307b83739ceefa77c4d9b77f9427d998b2c Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 16:19:26 +0900 Subject: [PATCH 069/157] refactor: MemoryVoucherRepository refactoring --- .../voucher/MemoryVoucherRepository.java | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java index b7ad4fa1b9..f6e56f4ae5 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java @@ -2,49 +2,63 @@ import com.prgrms.springbootbasic.domain.voucher.Voucher; import java.time.LocalDateTime; -import java.util.LinkedHashMap; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.UUID; +import java.util.concurrent.ConcurrentHashMap; import org.springframework.stereotype.Repository; @Repository public class MemoryVoucherRepository implements VoucherRepository { - private final Map storage = new LinkedHashMap<>(); + private final Map storage = new ConcurrentHashMap<>(); @Override public Voucher create(Voucher voucher) { - return null; + storage.put(voucher.getVoucherId(), voucher); + return voucher; } @Override - public Voucher findById(UUID voucherId) { - return null; + public Optional findById(UUID voucherId) { + Voucher voucher = storage.get(voucherId); + return Optional.ofNullable(voucher); } @Override - public Voucher findByCreatedAt(LocalDateTime createAt) { - return null; + public Optional findByCreatedAt(LocalDateTime createAt) { + Optional findVoucher = storage.values().stream() + .filter(voucher -> voucher.getCreatedAt().equals(createAt)) + .findFirst(); + return findVoucher; } @Override public List findAll() { - return null; + return new ArrayList<>(storage.values()); } @Override - public void update(Voucher voucher) { - + public Optional update(Voucher voucher) { + UUID voucherId = voucher.getVoucherId(); + if (storage.containsKey(voucherId)) { + storage.put(voucherId, voucher); + return Optional.of(voucher); + } else { + return Optional.empty(); + } } @Override - public void deleteById(UUID voucherId) { - + public Optional deleteById(UUID voucherId) { + Voucher removeVoucher = storage.remove(voucherId); + return Optional.ofNullable(removeVoucher); } @Override public void deleteAll() { - + storage.clear(); } } From 39c05b6901638c28a2de8487385583e7f84a2119 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 16:22:06 +0900 Subject: [PATCH 070/157] refactor:MemoryVoucherRepository refactoring --- .../repository/voucher/MemoryVoucherRepository.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java index f6e56f4ae5..a21da62a69 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java @@ -36,7 +36,7 @@ public Optional findByCreatedAt(LocalDateTime createAt) { } @Override - public List findAll() { + public List findAll(Voucher voucher) { return new ArrayList<>(storage.values()); } From 62829f2358fde755286032d748e15e2a01c76c84 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 17:32:33 +0900 Subject: [PATCH 071/157] refactor: VoucherRepository rectoring --- .../repository/voucher/VoucherRepository.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java index 928a0abada..4614c6a597 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java @@ -9,7 +9,7 @@ public interface VoucherRepository { //create - Voucher create(Voucher voucher); + Voucher save(Voucher voucher); //read - id Optional findById(UUID voucherId); @@ -18,7 +18,8 @@ public interface VoucherRepository { Optional findByCreatedAt(LocalDateTime createAt); //read - all - List findAll(Voucher voucher); + List findAll(); + //update Optional update(Voucher voucher); From a2819daa7b391f67fffbaa1e05ed258ebb4f1c9c Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 17:33:02 +0900 Subject: [PATCH 072/157] refactor:MemoryVoucherRepository refactoring --- .../repository/voucher/MemoryVoucherRepository.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java index a21da62a69..6b81a6d5be 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java @@ -16,7 +16,7 @@ public class MemoryVoucherRepository implements VoucherRepository { private final Map storage = new ConcurrentHashMap<>(); @Override - public Voucher create(Voucher voucher) { + public Voucher save(Voucher voucher) { storage.put(voucher.getVoucherId(), voucher); return voucher; } @@ -36,7 +36,7 @@ public Optional findByCreatedAt(LocalDateTime createAt) { } @Override - public List findAll(Voucher voucher) { + public List findAll() { return new ArrayList<>(storage.values()); } From 2fc6c310a641ed84ac68d813bd330f85b42cf4ee Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 17:34:47 +0900 Subject: [PATCH 073/157] feat:VoucherService CRUD functional implementation --- .../service/voucher/VoucherService.java | 68 ++++++++++++++----- 1 file changed, 50 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java index 0c7e0a1c04..c4e09c948c 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java @@ -1,60 +1,92 @@ package com.prgrms.springbootbasic.service.voucher; -import com.prgrms.springbootbasic.domain.voucher.FixedDiscountVoucher; -import com.prgrms.springbootbasic.domain.voucher.PercentDiscountVoucher; +import com.prgrms.springbootbasic.domain.voucher.FixedVoucher; +import com.prgrms.springbootbasic.domain.voucher.RateVoucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; import com.prgrms.springbootbasic.enums.VoucherType; import com.prgrms.springbootbasic.repository.voucher.VoucherRepository; -import java.util.Map; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; import java.util.UUID; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service +@RequiredArgsConstructor public class VoucherService { private final VoucherRepository voucherRepository; - public VoucherService(VoucherRepository voucherRepository) { - this.voucherRepository = voucherRepository; - } - //생성(create) - public Voucher createVoucher(VoucherType type, long discount) { + public Voucher createVoucher(VoucherCreateRequest voucherCreateRequest) { try { + long discount = voucherCreateRequest.getDiscount(); + VoucherType type = voucherCreateRequest.getType(); + LocalDateTime createAt = voucherCreateRequest.getCreateAt() == null ? LocalDateTime.now() : voucherCreateRequest.getCreateAt(); + Voucher voucher = switch (type) { - case FIXED -> new FixedDiscountVoucher(discount); - case PERCENT -> new PercentDiscountVoucher(discount); + case FIXED -> new FixedVoucher(discount); + case PERCENT -> new RateVoucher(discount); }; - return voucherRepository.insert(voucher); + return voucherRepository.save(voucher); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); throw e; } } - public Map fetchAllVouchers() { - return voucherRepository.getAllVouchersList(); + //조회(Read) - id를 통해서 조회 + public VoucherResponse findById(UUID voucherId) { + Voucher voucher = voucherRepository.findById(voucherId) + .orElseThrow(() -> new IllegalArgumentException("조회하시는 Voucher는 존재하지 않습니다.")); + + return new VoucherResponse(voucher.getVoucherId(), voucher.getDiscount(), voucher.getVoucherType(), voucher.getCreatedAt()); } - //조회(Read) - id를 통해서 조회 - public void findById(UUID voucherId) { - Voucher voucher = VoucherRepository.findById(voucherId); + //조회(Read) - 생성일을 통해서 조회 + public VoucherResponse findByCreateAt(LocalDateTime createAt) { + Voucher voucher = voucherRepository.findByCreatedAt(createAt) + .orElseThrow(() -> new IllegalArgumentException("조회하시는 Voucher는 존재하지 않습니다.")); + return new VoucherResponse(voucher.getVoucherId(), voucher.getDiscount(), voucher.getVoucherType(), voucher.getCreatedAt()); + } + + //조회(Read) -모든 바우처의 목록을 조회 + public VoucherListResponse findAllVouchers() { + List vouchers = voucherRepository.findAll(); + List voucherResponseList = vouchers.stream() + .map(voucher -> new VoucherResponse(voucher.getVoucherId(), voucher.getDiscount(), + voucher.getVoucherType(), voucher.getCreatedAt())) + .collect(Collectors.toList()); + return new VoucherListResponse(voucherResponseList); } //수정(Update) public void updateVoucher(VoucherUpdateRequest voucherUpdateRequest) { + UUID voucherId = voucherUpdateRequest.getVoucherId(); + Optional storegedVoucher = voucherRepository.findById(voucherId); + + Voucher voucher = storegedVoucher.orElseThrow(() -> new IllegalArgumentException("해당 바우처는 존재하지 않습니다.")); + + voucherRepository.update(voucher); + } //삭제(Delete) -id public void deleteById(UUID voucherId) { - VoucherRepository.deleteById(voucherId); + Optional deleteByIdVoucher = voucherRepository.deleteById(voucherId); + deleteByIdVoucher.orElseThrow(() -> new IllegalArgumentException("해당 바우처는 존재하지 않습니다.")); } //삭제(Delete) public void deleteAllVoucher() { - VoucherRepository.delteAll(); + voucherRepository.deleteAll(); } } From 0b3dddbc8ecddee21a43d3b58b0cbf6f632e24a4 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 17:53:17 +0900 Subject: [PATCH 074/157] =?UTF-8?q?feat:VoucherType=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/repository/voucher/VoucherRepository.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java index 4614c6a597..799223fbe3 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java @@ -1,6 +1,7 @@ package com.prgrms.springbootbasic.repository.voucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.enums.VoucherType; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @@ -17,6 +18,8 @@ public interface VoucherRepository { //read - create at Optional findByCreatedAt(LocalDateTime createAt); + List findByType(VoucherType type); + //read - all List findAll(); From 242de2ec9f35bcd7437420ab3615e777dbcf45ba Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 17:53:55 +0900 Subject: [PATCH 075/157] =?UTF-8?q?feat:VoucherType=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/voucher/MemoryVoucherRepository.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java index 6b81a6d5be..4b3db94084 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java @@ -1,6 +1,7 @@ package com.prgrms.springbootbasic.repository.voucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.enums.VoucherType; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -8,6 +9,7 @@ import java.util.Optional; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; import org.springframework.stereotype.Repository; @Repository @@ -35,6 +37,13 @@ public Optional findByCreatedAt(LocalDateTime createAt) { return findVoucher; } + @Override + public List findByType(VoucherType type) { + return storage.values().stream() + .filter(voucher -> voucher.getVoucherType().equals(type)) + .collect(Collectors.toList()); + } + @Override public List findAll() { return new ArrayList<>(storage.values()); From 823a26e6119778835c63ee3de6515a328d7720b3 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 17:54:27 +0900 Subject: [PATCH 076/157] =?UTF-8?q?feat:Voucher=20=ED=83=80=EC=9E=85?= =?UTF-8?q?=EB=B3=84=20=EC=A1=B0=ED=9A=8C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/voucher/VoucherService.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java index c4e09c948c..0800fcfebf 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java @@ -56,6 +56,17 @@ public VoucherResponse findByCreateAt(LocalDateTime createAt) { return new VoucherResponse(voucher.getVoucherId(), voucher.getDiscount(), voucher.getVoucherType(), voucher.getCreatedAt()); } + //조회(Read) - 바우처 타입별로 조회 + + public VoucherListResponse findByType(VoucherType type) { + List ListVoucherType = voucherRepository.findByType(type); + List voucherResponseList = ListVoucherType.stream() + .map(voucher -> new VoucherResponse(voucher.getVoucherId(), voucher.getDiscount(), + voucher.getVoucherType(), voucher.getCreatedAt())) + .collect(Collectors.toList()); + return new VoucherListResponse(voucherResponseList); + } + //조회(Read) -모든 바우처의 목록을 조회 public VoucherListResponse findAllVouchers() { List vouchers = voucherRepository.findAll(); From 47767650980080d663a3122b4d7e366083d8f641 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 17:55:14 +0900 Subject: [PATCH 077/157] =?UTF-8?q?refactor:=EB=B0=94=EC=9A=B0=EC=B2=98=20?= =?UTF-8?q?Controller=20refactoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/voucher/VoucherController.java | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java index 970daac54e..dd757ab038 100644 --- a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java +++ b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java @@ -1,13 +1,12 @@ package com.prgrms.springbootbasic.controller.voucher; -import com.prgrms.springbootbasic.domain.voucher.Voucher; import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; import com.prgrms.springbootbasic.enums.VoucherType; import com.prgrms.springbootbasic.service.voucher.VoucherService; import java.time.LocalDateTime; -import java.util.Map; import java.util.UUID; import lombok.AllArgsConstructor; import org.springframework.stereotype.Controller; @@ -25,33 +24,33 @@ public void create(VoucherCreateRequest voucherCreateRequest) { //(Read) 바우처의 모든 리스트 출력 - public Map findAllList() { - return voucherService.fetchAllVouchers(); + public VoucherListResponse findAllList() { + return voucherService.findAllVouchers(); } //(Read) 특정 바우처 id의 내용을 출력 - public VoucherResponse findByid(UUID voucherId) { + public VoucherResponse findById(UUID voucherId) { return voucherService.findById(voucherId); } - //(Read) 바우처 타입 내용을 출력 - public VoucherResponse findByType(VoucherType voucherType) { - return voucherService.finByType(VoucherType); - } - //(Read) 바우처 생성기간 출력 public VoucherResponse findByCreateAt(LocalDateTime createAt) { return voucherService.findByCreateAt(createAt); } + //(Read) 바우처 타입별 리스트 출력 + public VoucherListResponse findByType(VoucherType type) { + return voucherService.findByType(type); + } + //(Update) 생성된 바우처 수정 public void update(VoucherUpdateRequest voucherUpdateRequest) { - voucherService.update(voucherUpdateRequest); + voucherService.updateVoucher(voucherUpdateRequest); } //(Delete) 특정 바우처를 찾아 삭제 - public void deleteByid() { - voucherService.deleteById(); + public void deleteById(UUID voucherId) { + voucherService.deleteById(voucherId); } //(Delete) 모든 바우처의 내용 삭제 From 0cabf00ff88f0db7dabb972b83e11069d03c4ca0 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 21:05:26 +0900 Subject: [PATCH 078/157] refactor: VoucherService refactoring --- .../springbootbasic/service/voucher/VoucherService.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java index 0800fcfebf..66d5083d15 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java @@ -14,14 +14,16 @@ import java.util.Optional; import java.util.UUID; import java.util.stream.Collectors; +import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor +@AllArgsConstructor public class VoucherService { - private final VoucherRepository voucherRepository; + private VoucherRepository voucherRepository; //생성(create) public Voucher createVoucher(VoucherCreateRequest voucherCreateRequest) { From 7ecf182ba615e9e545a67bf712115c43ead3cfb9 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 21:05:56 +0900 Subject: [PATCH 079/157] feat:VoucherJdbcRepository --- .../voucher/VoucherJdbcRepository.java | 132 ++++++++++++++++-- 1 file changed, 123 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java index d2bb01a1a7..dd5acb07af 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java @@ -1,44 +1,158 @@ package com.prgrms.springbootbasic.repository.voucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.enums.VoucherType; import java.time.LocalDateTime; import java.util.List; +import java.util.Optional; import java.util.UUID; +import javax.sql.DataSource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.jdbc.core.namedparam.SqlParameterSource; +import org.springframework.stereotype.Repository; + +@Repository +@Slf4j +@Primary public class VoucherJdbcRepository implements VoucherRepository { + private final NamedParameterJdbcTemplate template; + + public VoucherJdbcRepository(DataSource dataSource) { + this.template = new NamedParameterJdbcTemplate(dataSource); + } + @Override - public Voucher create(Voucher voucher) { - return null; + public Voucher save(Voucher voucher) { + String sql = "insert into vouchers values(:voucherId, :discountAmount, :voucherType, :createAt)"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("voucherId", voucher.getVoucherId()) + .addValue("discount", voucher.getDiscount()) + .addValue("voucherType", voucher.getVoucherType().toString()) + .addValue("createAt", voucher.getCreatedAt()); + + template.update(sql, param); + return voucher; } @Override - public Voucher findById(UUID voucherId) { - return null; + public Optional findById(UUID voucherId) { + String sql = "select * from vouchers where voucher_id = :voucherId"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("voucherId", voucherId); + + Voucher voucher = template.queryForObject(sql, param, voucherRowMapper()); + return Optional.ofNullable(voucher); + } + + @Override + public Optional findByCreatedAt(LocalDateTime createAt) { + String sql = "select * from vouchers where create_at = :createAt"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("createAt", createAt); + + Voucher voucher = template.queryForObject(sql, param, voucherRowMapper()); + return Optional.ofNullable(voucher); } @Override - public Voucher findByCreatedAt(LocalDateTime createAt) { - return null; + public List findByType(VoucherType type) { + String sql = "select * from vouchers where voucher_type = :voucherType"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("voucherType", type.toString()); + + List vouchers = template.query(sql, param, voucherRowMapper()); + return vouchers; } @Override public List findAll() { - return null; + String sql = "select * from vouchers"; + + List vouchers = template.query(sql, voucherRowMapper()); + return vouchers; } @Override - public void update(Voucher voucher) { + public Optional update(Voucher voucher) { + String sql = "update vouchers set discount_amount = :discountAmount, voucher_type = :voucherType where voucher_id = :voucherId"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("discountAmount", voucher.getDiscount()) + .addValue("voucherType", voucher.getVoucherType().toString()) + .addValue("voucherId", voucher.getVoucherId()); + int rows = template.update(sql, param); + if (rows == 1) { + return Optional.of(voucher); + } else { + return Optional.empty(); + } } @Override - public void deleteById(UUID voucherId) { + public Optional deleteById(UUID voucherId) { + String sql = "delete from vouchers where voucher_id = :voucherId"; + SqlParameterSource param = new MapSqlParameterSource() + .addValue("voucherId", voucherId); + + int deletedRows = template.update(sql, param); + if (deletedRows == 1) { + return Optional.of(null); + } else { + return Optional.empty(); + } } @Override public void deleteAll() { + String sql = "delete from vouchers"; + + SqlParameterSource param = new MapSqlParameterSource(); + + template.update(sql, param); + } + + private RowMapper voucherRowMapper() { + RowMapper voucherRowMapper = (resultSet, rowMap) -> { + UUID voucherId = UUID.fromString(resultSet.getString("voucher_id")); + long discount = Long.parseLong(resultSet.getString("voucher_discount")); + VoucherType voucherType = VoucherType.valueOf(resultSet.getString("Voucher_type").toUpperCase()); + LocalDateTime createdAt = resultSet.getTimestamp("voucher_createdAt").toLocalDateTime(); + + return new Voucher() { + @Override + public UUID getVoucherId() { + return voucherId; + } + + @Override + public long getDiscount() { + return discount; + } + + @Override + public VoucherType getVoucherType() { + return voucherType; + } + + @Override + public LocalDateTime getCreatedAt() { + return createdAt; + } + }; + }; + return voucherRowMapper; } } From 0408b1b995afcd841195c8f6732e58698516dfec Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 21:07:07 +0900 Subject: [PATCH 080/157] refactor: build.gralde refactoring --- build.gradle | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index f08ec67ae9..7a9bee2cfa 100644 --- a/build.gradle +++ b/build.gradle @@ -30,10 +30,12 @@ dependencies { //Logback 설정 implementation 'ch.qos.logback:logback-classic:1.2.6' implementation 'ch.qos.logback:logback-core:1.2.6' - dependencies { - implementation 'org.springframework.boot:spring-boot-starter-jdbc' - testImplementation 'com.wix:wix-embedded-mysql:4.6.1' - } + + + implementation 'org.springframework.boot:spring-boot-starter-jdbc' + runtimeOnly 'com.h2database:h2' + + } tasks.named('test') { From ef16d6e4e154fc30ee79d394dd7bff539e01c847 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 21:08:41 +0900 Subject: [PATCH 081/157] =?UTF-8?q?feat:Voucher=20shema=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/schema.sql | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/main/resources/schema.sql diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql new file mode 100644 index 0000000000..a96dbd6adf --- /dev/null +++ b/src/main/resources/schema.sql @@ -0,0 +1,9 @@ +drop table if exists vouchers; +use vouchers; +create table vouchers +( + voucher_id varchar(50) primary key, + discount int not null, + voucher_type varchar(30) not null, + voucher_createdAt TIMESTAMP not null +) From 5dbff208e378f2a9c36e632d62a48f9e9645eaf8 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 21:11:41 +0900 Subject: [PATCH 082/157] =?UTF-8?q?refactor:VoucherType=20Perenct=20->=20R?= =?UTF-8?q?ATE=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java b/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java index ec690a8455..59e497974d 100644 --- a/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java +++ b/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java @@ -2,7 +2,7 @@ public enum VoucherType { FIXED, - PERCENT; + RATE; public static VoucherType of(String voucherType) { From 086aa43862561a4f32d19413b2e13160e4eae183 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 21:12:16 +0900 Subject: [PATCH 083/157] =?UTF-8?q?refactor:VoucherType=20=20enum=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/prgrms/springbootbasic/domain/voucher/RateVoucher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java index b7412c7ab3..172e807d63 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java @@ -37,7 +37,7 @@ public long getDiscount() { @Override public VoucherType getVoucherType() { - return VoucherType.PERCENT; + return VoucherType.RATE; } @Override From b367cff9c236684a816448b08fefb4420c558d75 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 21:29:30 +0900 Subject: [PATCH 084/157] refactor:FixedVoucher domain refactoring --- .../com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java index 4f76820383..96b7907417 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java @@ -14,7 +14,7 @@ public class FixedVoucher implements Voucher { public FixedVoucher(long discount) { this.voucherId = UUID.randomUUID(); this.discount = ValidDiscount(discount); - this.createAt = getCreatedAt(); + this.createAt = LocalDateTime.now(); this.type = getVoucherType(); } From ed1dab1a04dd9fe8ae671403d8b4f35f79a5a2ba Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 21:30:03 +0900 Subject: [PATCH 085/157] refactor:RateVoucher refactoring --- .../com/prgrms/springbootbasic/domain/voucher/RateVoucher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java index 172e807d63..600d8de719 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java @@ -14,7 +14,7 @@ public class RateVoucher implements Voucher { public RateVoucher(long discount) { this.voucherId = UUID.randomUUID(); this.discount = ValidDiscount(discount); - this.createAt = getCreatedAt(); + this.createAt = LocalDateTime.now(); this.type = getVoucherType(); } From 11c9919eaf24f23c403003dad55598272896fa2c Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 21:33:47 +0900 Subject: [PATCH 086/157] =?UTF-8?q?=20test:fixedVoucher=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EC=9D=98=20=EB=AA=A8=EB=93=A0=20=EB=A9=94?= =?UTF-8?q?=EC=86=8C=EB=93=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/voucher/FixedVoucherTest.java | 79 +++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java new file mode 100644 index 0000000000..fa781c3b63 --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java @@ -0,0 +1,79 @@ +package com.prgrms.springbootbasic.domain.voucher; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import com.prgrms.springbootbasic.enums.VoucherType; +import java.time.LocalDateTime; +import java.util.UUID; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class FixedVoucherTest { + + //FixedVoucher 클래스의 메소드 테스트 + @Test + @DisplayName("Fixed Voucher 금액 생성 확인 테스트") + void validDiscount() { + //given + long validDiscount = 10000; + + //when + FixedVoucher fixedVoucher = new FixedVoucher(validDiscount); + + //then + assertEquals(validDiscount, fixedVoucher.getDiscount()); + + } + + @Test + @DisplayName("바우처 생성 시 ID값이 null이 아닌지 테스트") + void getVoucherId() { + //given + FixedVoucher fixedVoucher = new FixedVoucher(10000); + + //when + UUID voucherId = fixedVoucher.getVoucherId(); + + //then + assertNotNull(voucherId); + } + + @Test + @DisplayName("0이하의 금액이 입력될 경우 테스트") + void getDiscount() { + //given + long invalidDiscount = 0; + + //when + + //then + assertThrows(IllegalArgumentException.class, () -> new FixedVoucher(invalidDiscount)); + } + + @Test + @DisplayName("바우처 생성 시 Type이 정상적으로 FIXED로 분류되는지 테스트") + void getVoucherType() { + //given + FixedVoucher fixedVoucher = new FixedVoucher(10000); + + //when + + //then + assertEquals(VoucherType.FIXED, fixedVoucher.getVoucherType()); + } + + @Test + @DisplayName("바우처 생성 시 CreateAt이 정상적으로 생성되는지 테스트") + void getCreatedAt() { + //given + FixedVoucher fixedVoucher = new FixedVoucher(10000); + + //when + LocalDateTime createdAt = fixedVoucher.getCreatedAt(); + + //then + assertNotNull(createdAt); + } +} \ No newline at end of file From 1e466a2562dac2111819341c1dded36eb8a568e2 Mon Sep 17 00:00:00 2001 From: jay-so Date: Wed, 12 Jul 2023 21:34:43 +0900 Subject: [PATCH 087/157] =?UTF-8?q?test:RateVoucher=20=EB=8F=84=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=EC=9D=98=20=EB=AA=A8=EB=93=A0=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/voucher/RateVoucherTest.java | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java new file mode 100644 index 0000000000..7f7d2dc118 --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java @@ -0,0 +1,78 @@ +package com.prgrms.springbootbasic.domain.voucher; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import com.prgrms.springbootbasic.enums.VoucherType; +import java.time.LocalDateTime; +import java.util.UUID; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class RateVoucherTest { + + //RateVoucher 클래스의 모든 메소드 테스트 + @Test + @DisplayName("Rate Voucher 퍼센트 생성 확인 테스트") + void validDiscount() { + //given + long validDiscount = 60; + + //when + RateVoucher rateVoucher = new RateVoucher(validDiscount); + + //then + assertEquals(validDiscount, rateVoucher.getDiscount()); + } + + @Test + @DisplayName("바우처 생성 시 ID값이 null이 아닌지 테스트") + void getVoucherId() { + //given + RateVoucher rateVoucher = new RateVoucher(60); + + //when + UUID voucherId = rateVoucher.getVoucherId(); + + //then + assertNotNull(voucherId); + } + + @Test + @DisplayName("0이하의 퍼센트가 입력될 경우 테스트") + void getDiscount() { + //given + long invalidDiscount = 0; + + //when + + //then + assertThrows(IllegalArgumentException.class, () -> new RateVoucher(invalidDiscount)); + } + + @Test + @DisplayName("바우처 생성 시 Type이 정상적으로 RATE로 분류되는지 테스트") + void getVoucherType() { + //given + RateVoucher rateVoucher = new RateVoucher(60); + + //when + + //then + assertEquals(VoucherType.RATE, rateVoucher.getVoucherType()); + } + + @Test + @DisplayName("바우처 생성 시 CreateAt이 정상적으로 생성되는지 테스트") + void getCreatedAt() { + //given + RateVoucher rateVoucher = new RateVoucher(60); + + //when + LocalDateTime createdAt = rateVoucher.getCreatedAt(); + + //then + assertNotNull(createdAt); + } +} \ No newline at end of file From 7c26f432674b25e7a1c9be4bd436657cf21ab8d9 Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:05:07 +0900 Subject: [PATCH 088/157] =?UTF-8?q?refactor:=20Voucher=20=EB=8F=84?= =?UTF-8?q?=EB=A9=94=EC=9D=B8=20refactoring(@Setter=20add)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java | 2 ++ .../com/prgrms/springbootbasic/domain/voucher/RateVoucher.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java index 96b7907417..1b16344a9d 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java @@ -3,7 +3,9 @@ import com.prgrms.springbootbasic.enums.VoucherType; import java.time.LocalDateTime; import java.util.UUID; +import lombok.Setter; +@Setter public class FixedVoucher implements Voucher { private final UUID voucherId; diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java index 600d8de719..c3adbb7ca1 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java @@ -3,7 +3,9 @@ import com.prgrms.springbootbasic.enums.VoucherType; import java.time.LocalDateTime; import java.util.UUID; +import lombok.Setter; +@Setter public class RateVoucher implements Voucher { private final UUID voucherId; From 01850cec6e37afc7fd8638f0b9afaf8bebe79aa8 Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:05:53 +0900 Subject: [PATCH 089/157] refactor:Customer domain find Member refactoring(final keyword remove) --- .../prgrms/springbootbasic/domain/customer/Customer.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java b/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java index 413c29b3e2..d00ac8e828 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java @@ -3,14 +3,16 @@ import java.time.LocalDateTime; import java.util.UUID; import lombok.Getter; +import lombok.Setter; @Getter +@Setter public class Customer { private final UUID customerId; - private final String name; - private final String email; - private LocalDateTime createAt; + private String name; + private String email; + private final LocalDateTime createAt; public Customer(UUID customerId, String name, String email, LocalDateTime createAt) { this.customerId = customerId; From c40da75b3598c8d5f5d41eac0ffe439b5454cb4d Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:06:36 +0900 Subject: [PATCH 090/157] refactor:VoucherJdbcRepository update method refactoring --- .../repository/voucher/VoucherJdbcRepository.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java index dd5acb07af..045644337f 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java @@ -87,9 +87,7 @@ public Optional update(Voucher voucher) { String sql = "update vouchers set discount_amount = :discountAmount, voucher_type = :voucherType where voucher_id = :voucherId"; SqlParameterSource param = new MapSqlParameterSource() - .addValue("discountAmount", voucher.getDiscount()) - .addValue("voucherType", voucher.getVoucherType().toString()) - .addValue("voucherId", voucher.getVoucherId()); + .addValue("discountAmount", voucher.getDiscount()); int rows = template.update(sql, param); if (rows == 1) { @@ -152,7 +150,6 @@ public LocalDateTime getCreatedAt() { } }; }; - return voucherRowMapper; } } From f5b3d233db2f7cedf2f697cfe17e357c63f9ec84 Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:07:13 +0900 Subject: [PATCH 091/157] remove:CustomerDto remove --- .../dto/customer/CustomerDto.java | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java b/src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java deleted file mode 100644 index 6d069ade7b..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/dto/customer/CustomerDto.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.prgrms.springbootbasic.dto.customer; - -import java.time.LocalDateTime; -import java.util.UUID; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -@Getter -@RequiredArgsConstructor -public class CustomerDto { - - private final UUID customerId; - private final String name; - private final String email; - private final LocalDateTime localDateTime; - -} \ No newline at end of file From 50d0a70d36db771803363ef9a7c820460ccc3bfb Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:07:39 +0900 Subject: [PATCH 092/157] feat: CustomerCreateRequest Dto add --- .../customer/request/CustomerCreateRequest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/dto/customer/request/CustomerCreateRequest.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/customer/request/CustomerCreateRequest.java b/src/main/java/com/prgrms/springbootbasic/dto/customer/request/CustomerCreateRequest.java new file mode 100644 index 0000000000..d109039a58 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/dto/customer/request/CustomerCreateRequest.java @@ -0,0 +1,14 @@ +package com.prgrms.springbootbasic.dto.customer.request; + +import java.time.LocalDateTime; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class CustomerCreateRequest { + + private String name; + private String email; + private LocalDateTime createAt; +} From fb882c6e3278809083f61fed038b5166cdc9312f Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:08:01 +0900 Subject: [PATCH 093/157] feat: CustomerUpdateRequestDto add --- .../customer/request/CustomerUpdateRequest.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/dto/customer/request/CustomerUpdateRequest.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/customer/request/CustomerUpdateRequest.java b/src/main/java/com/prgrms/springbootbasic/dto/customer/request/CustomerUpdateRequest.java new file mode 100644 index 0000000000..616c2bc6c7 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/dto/customer/request/CustomerUpdateRequest.java @@ -0,0 +1,14 @@ +package com.prgrms.springbootbasic.dto.customer.request; + +import java.util.UUID; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class CustomerUpdateRequest { + + private UUID customerId; + private String customerName; + private String customerEmail; +} From d862fb2f320d9b3df243b4e4f3da0df43cd20257 Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:08:23 +0900 Subject: [PATCH 094/157] feat: CustomerListResponse Dto add --- .../dto/customer/response/CustomerListResponse.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerListResponse.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerListResponse.java b/src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerListResponse.java new file mode 100644 index 0000000000..c68f159188 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerListResponse.java @@ -0,0 +1,12 @@ +package com.prgrms.springbootbasic.dto.customer.response; + +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class CustomerListResponse { + + private final List customerList; +} From a3a21dbd26cfb365e3321c369754503e0def4c3e Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:08:54 +0900 Subject: [PATCH 095/157] feat: CustomerResponse Dto add --- .../dto/customer/response/CustomerResponse.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerResponse.java diff --git a/src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerResponse.java b/src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerResponse.java new file mode 100644 index 0000000000..60e9ad97d9 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerResponse.java @@ -0,0 +1,16 @@ +package com.prgrms.springbootbasic.dto.customer.response; + +import java.time.LocalDateTime; +import java.util.UUID; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class CustomerResponse { + + private UUID customerId; + private String customerName; + private String customerEmail; + private LocalDateTime createAt; +} From db6bae138da851655d929f5510295898d6009cb9 Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:10:04 +0900 Subject: [PATCH 096/157] refactor: CustomerRepository interface refactoring(find - Id,crateAt, all, update Method add) --- .../customer/CustomerRepository.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java index 56ed36f004..f99e7b0c00 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java @@ -1,19 +1,32 @@ package com.prgrms.springbootbasic.repository.customer; import com.prgrms.springbootbasic.domain.customer.Customer; +import java.time.LocalDateTime; import java.util.List; +import java.util.Optional; +import java.util.UUID; public interface CustomerRepository { //생성(create) - Customer insert(Customer customer); + Customer save(Customer customer); - //업데이트(update) - void update(Customer customer); + //read-id + Optional findById(UUID customerId); + + //read-create at + Optional findByCreateAt(LocalDateTime createAt); - //조회(Read) - 리스트 출력 + //조회(Read) - all List findAll(); + //업데이트(update) + Optional update(Customer customer); + + //delete-id + Optional deleteById(UUID customerId); + + //customer 모두 삭제(Delete) void deleteAll(); } From b597e239926a8f05f54f499b798a6ff979198797 Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:10:39 +0900 Subject: [PATCH 097/157] refactor: VoucherService refacotring(update Method divide Voucher Type) --- .../service/voucher/VoucherService.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java index 66d5083d15..3575f65a27 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java @@ -34,7 +34,7 @@ public Voucher createVoucher(VoucherCreateRequest voucherCreateRequest) { Voucher voucher = switch (type) { case FIXED -> new FixedVoucher(discount); - case PERCENT -> new RateVoucher(discount); + case RATE -> new RateVoucher(discount); }; return voucherRepository.save(voucher); } catch (IllegalArgumentException e) { @@ -87,9 +87,15 @@ public void updateVoucher(VoucherUpdateRequest voucherUpdateRequest) { Voucher voucher = storegedVoucher.orElseThrow(() -> new IllegalArgumentException("해당 바우처는 존재하지 않습니다.")); - voucherRepository.update(voucher); - + if (voucher.getVoucherType() == VoucherType.FIXED) { + FixedVoucher fixedVoucher = (FixedVoucher) voucher; + fixedVoucher.setDiscount(voucherUpdateRequest.getDiscount()); + } else if (voucher.getVoucherType() == VoucherType.RATE) { + RateVoucher rateVoucher = (RateVoucher) voucher; + rateVoucher.setDiscount(voucherUpdateRequest.getDiscount()); + } + voucherRepository.update(voucher); } //삭제(Delete) -id From fced138b6fe64de9d3a8886e42927cfdf9460ff3 Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:11:41 +0900 Subject: [PATCH 098/157] refactor: CustomerService refactoring(crate,update, find - id, crateAt, Delete-id, all) --- .../service/customer/CustomerService.java | 77 ++++++++++++++++--- 1 file changed, 66 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java index f2e34b6fc3..32f7288898 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java @@ -1,7 +1,16 @@ package com.prgrms.springbootbasic.service.customer; -import com.prgrms.springbootbasic.dto.customer.CustomerDto; +import com.prgrms.springbootbasic.domain.customer.Customer; +import com.prgrms.springbootbasic.dto.customer.request.CustomerCreateRequest; +import com.prgrms.springbootbasic.dto.customer.request.CustomerUpdateRequest; +import com.prgrms.springbootbasic.dto.customer.response.CustomerListResponse; +import com.prgrms.springbootbasic.dto.customer.response.CustomerResponse; import com.prgrms.springbootbasic.repository.customer.CustomerRepository; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -11,22 +20,68 @@ public class CustomerService { private CustomerRepository customerRepository; - //생성(update) - public CustomerDto create(CustomerDto create) { - return null; + //생성(create) + public Customer createCustomer(CustomerCreateRequest customerCreateRequest) { + String name = customerCreateRequest.getName(); + String email = customerCreateRequest.getEmail(); + LocalDateTime createAt = customerCreateRequest.getCreateAt() == null ? LocalDateTime.now() : customerCreateRequest.getCreateAt(); + + Customer customer = new Customer(UUID.randomUUID(), name, email, createAt); + return customerRepository.save(customer); + } + + //조회(Read) - id를 통해서 조회 + public CustomerResponse findById(UUID customerId) { + Customer customer = customerRepository.findById(customerId) + .orElseThrow(() -> new IllegalArgumentException("조회하시는 고객은 존재하지 않습니다.")); + + return new CustomerResponse(customer.getCustomerId(), customer.getName(), customer.getEmail(), customer.getCreateAt()); } + //조회(read - custmer의 모든 List를 조회하기) - public CustomerDto findAllCustomer() { - return null; + public CustomerListResponse findAllCustomers() { + List customers = customerRepository.findAll(); + List customerResponseList = customers.stream() + .map(customer -> new CustomerResponse( + customer.getCustomerId(), + customer.getName(), + customer.getEmail(), + customer.getCreateAt())) + .collect(Collectors.toList()); + + return new CustomerListResponse(customerResponseList); + } + + + //조회(Read) - 생성일을 통해서 조회 + public CustomerResponse findByCreateAt(LocalDateTime createAt) { + Customer customer = customerRepository.findByCreateAt(createAt) + .orElseThrow(() -> new IllegalArgumentException("조회하시는 고객은 존재하지 않습니다.")); + return new CustomerResponse(customer.getCustomerId(), customer.getName(), customer.getEmail(), customer.getCreateAt()); + } + + //수정(Update) + public void updateCustomer(CustomerUpdateRequest customerUpdateRequest) { + UUID customerId = customerUpdateRequest.getCustomerId(); + Optional storedCustomer = customerRepository.findById(customerId); + + Customer customer = storedCustomer.orElseThrow(() -> new IllegalArgumentException("해당 고객은 존재하지 않습니다.")); + + customer.setName(customerUpdateRequest.getCustomerName()); + customer.setEmail(customerUpdateRequest.getCustomerEmail()); + + customerRepository.update(customer); } - //수정(update) - public CustomerDto update(CustomerDto update) { - return null; + //삭제(Delete) -id + public void deleteById(UUID voucherId) { + Optional deleteByIdCustomer = customerRepository.deleteById(customerId); + deleteByIdCustomer.orElseThrow(() -> new IllegalArgumentException("해당 고객은 존재하지 않습니다.")); } - //삭제 - public void delete(String id) { + //삭제(Delete) + public void deleteAllCustomer() { + customerRepository.deleteAll(); } } From 60d1d0a7d8d08d49c01e96b754e02b96976be897 Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:13:04 +0900 Subject: [PATCH 099/157] refactor: CustomerJdbcRepository refactoring(save, find - id, crateAt, all, update, delete - id, all Method) --- .../customer/CustomerJdbcRepository.java | 104 +++++++++++++++++- 1 file changed, 100 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java index 09553538b3..a5baf8078e 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java @@ -1,27 +1,123 @@ package com.prgrms.springbootbasic.repository.customer; import com.prgrms.springbootbasic.domain.customer.Customer; +import java.time.LocalDateTime; import java.util.List; +import java.util.Optional; +import java.util.UUID; +import javax.sql.DataSource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.jdbc.core.namedparam.SqlParameterSource; +import org.springframework.stereotype.Repository; +@Repository +@Slf4j +@Primary public class CustomerJdbcRepository implements CustomerRepository { + private final NamedParameterJdbcTemplate template; + + public CustomerJdbcRepository(DataSource dataSource) { + this.template = new NamedParameterJdbcTemplate(dataSource); + } + + @Override + public Customer save(Customer customer) { + String sql = "insert into customers values(:customerId, :customerName, :customerEmail, :customerCreateAt)"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("customerId", customer.getCustomerId()) + .addValue("customerName", customer.getName()) + .addValue("customerEmail", customer.getEmail()) + .addValue("customerCreateAt", customer.getCreateAt()); + + template.update(sql, param); + return customer; + } + @Override - public Customer insert(Customer customer) { - return null; + public Optional findById(UUID customerId) { + String sql = "select * from customer where customer_id = :customerId"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("customerId", customerId); + + Customer customer = template.queryForObject(sql, param, customerRowMapper()); + return Optional.ofNullable(customer); } @Override - public void update(Customer customer) { + public Optional findByCreateAt(LocalDateTime createAt) { + String sql = "select * from customers where create_at = :createAt"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("createAt", createAt); + Customer customer = template.queryForObject(sql, param, customerRowMapper()); + return Optional.ofNullable(customer); } @Override public List findAll() { - return null; + String sql = "select * from customers"; + + List customers = template.query(sql, customerRowMapper()); + return customers; } + @Override + public Optional update(Customer customer) { + String sql = "update customers set customerName = :customerName, customerEmail = :customerEmail where customer_id = :customerId"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("cutomerName", customer.getName()) + .addValue("customerEmail", customer.getEmail()); + + int rows = template.update(sql, param); + if (rows == 1) { + return Optional.of(customer); + } else { + return Optional.empty(); + } + } + + @Override + public Optional deleteById(UUID customerId) { + String sql = "delete from customers where customer_id = :customerId"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("customerId", customerId); + + int deletedRows = template.update(sql, param); + if (deletedRows == 1) { + return Optional.of(null); + } else { + return Optional.empty(); + } + } + + @Override public void deleteAll() { + String sql = "delete from customers"; + + SqlParameterSource param = new MapSqlParameterSource(); + + template.update(sql, param); + } + + private RowMapper customerRowMapper() { + return (resultSet, rowMap) -> { + UUID customerId = UUID.fromString(resultSet.getString("customer_id")); + String name = resultSet.getString("customer_name"); + String email = resultSet.getString("customer_email"); + LocalDateTime createAt = resultSet.getTimestamp("customer_createAt").toLocalDateTime(); + return new Customer(customerId, name, email, createAt); + }; } } From 7c47aa9d9bb473fec9d05f63ad554ae5f7a4bdae Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:14:41 +0900 Subject: [PATCH 100/157] refactor: schema.sql refacotring(add customer table) --- src/main/resources/schema.sql | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index a96dbd6adf..c25e84b73a 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -1,9 +1,17 @@ -drop table if exists vouchers; -use vouchers; +use springboot_basic; +# drop table if exists vouchers; create table vouchers ( voucher_id varchar(50) primary key, discount int not null, voucher_type varchar(30) not null, voucher_createdAt TIMESTAMP not null +); +# drop table if exists customers; +create table customers +( + customer_id varchar(50) primary key, + customer_name varchar(50) not null, + customer_email varchar(100) not null, + customer_createAt TIMESTAMP not null ) From 4a273f66b6c0f786bb0b9e8b4d79f6c9fc0db0e6 Mon Sep 17 00:00:00 2001 From: jay-so Date: Thu, 13 Jul 2023 22:15:14 +0900 Subject: [PATCH 101/157] feat:CustomerController(Create,Update,Read,Delete) --- .../customer/CustomerController.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java b/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java index 051cf19dde..79c2e14386 100644 --- a/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java +++ b/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java @@ -1,8 +1,50 @@ package com.prgrms.springbootbasic.controller.customer; +import com.prgrms.springbootbasic.dto.customer.request.CustomerCreateRequest; +import com.prgrms.springbootbasic.dto.customer.request.CustomerUpdateRequest; +import com.prgrms.springbootbasic.dto.customer.response.CustomerListResponse; +import com.prgrms.springbootbasic.dto.customer.response.CustomerResponse; +import com.prgrms.springbootbasic.service.customer.CustomerService; +import java.time.LocalDateTime; +import java.util.UUID; +import lombok.AllArgsConstructor; import org.springframework.stereotype.Controller; @Controller +@AllArgsConstructor public class CustomerController { + private final CustomerService customerService; + + + //(Create)고객 생성 + public void create(CustomerCreateRequest customerCreateRequest) { + customerService.createCustomer(customerCreateRequest); + } + + + //(Read) 고객의 모든 리스트 출력 + public CustomerListResponse findAllList() { + return customerService.findAllCustomers(); + } + + //(Read) 고객 생성기간 출력 + public CustomerResponse findByCreateAt(LocalDateTime createAt) { + return customerService.findByCreateAt(createAt); + } + + //(Update) 고객 수정 + public void update(CustomerUpdateRequest customerUpdateRequset) { + customerService.updateCustomer(customerUpdateRequset); + } + + //(Delete) 특정 고객을 찾아 삭제 + public void deleteById(UUID customerId) { + customerService.deleteById(customerId); + } + + //(Delete) 모든 고객 내용 삭제 + public void deleteAll() { + customerService.deleteAllCustomer(); + } } From 42f649b2a8b2587800bc25bf1210f95a18dbd1eb Mon Sep 17 00:00:00 2001 From: jay-so Date: Fri, 14 Jul 2023 15:01:58 +0900 Subject: [PATCH 102/157] refactor:InputView refactoring --- .../prgrms/springbootbasic/view/Input.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/view/Input.java b/src/main/java/com/prgrms/springbootbasic/view/Input.java index 7a30cbd055..7edb713429 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Input.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Input.java @@ -1,10 +1,30 @@ package com.prgrms.springbootbasic.view; +import com.prgrms.springbootbasic.dto.customer.request.CustomerCreateRequest; +import com.prgrms.springbootbasic.dto.customer.request.CustomerUpdateRequest; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; +import com.prgrms.springbootbasic.enums.VoucherType; +import java.util.UUID; + public interface Input { + //콘솔 명령어 입력 String inputCommand(); - String inputVoucherType(); + //바우처 생성(Create) + VoucherCreateRequest voucherCrateMessage(VoucherType type); + + //바우처 변경(Update) + VoucherUpdateRequest voucherUpdateMessage(UUID voucherId); + + //고객 생성(Create) + CustomerCreateRequest customerCreateMessage(); + + //고객 변경(Update) + CustomerUpdateRequest customerUpdateMessage(UUID cusomterId); + + //ID값 입력 + UUID inputUUID(); - long inputVoucherDiscount(); } From 1ee50423ef91a39f072a8829aeb07082dc110db1 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:16:50 +0900 Subject: [PATCH 103/157] refactor: InputView refactoring --- .../java/com/prgrms/springbootbasic/view/Input.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/view/Input.java b/src/main/java/com/prgrms/springbootbasic/view/Input.java index 7edb713429..2a93d7bbc5 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Input.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Input.java @@ -13,18 +13,17 @@ public interface Input { String inputCommand(); //바우처 생성(Create) - VoucherCreateRequest voucherCrateMessage(VoucherType type); + VoucherCreateRequest inputVoucherCrateMessage(VoucherType type); //바우처 변경(Update) - VoucherUpdateRequest voucherUpdateMessage(UUID voucherId); + VoucherUpdateRequest inputVoucherUpdateMessage(UUID voucherId); //고객 생성(Create) - CustomerCreateRequest customerCreateMessage(); + CustomerCreateRequest inputCustomerCreateMessage(); //고객 변경(Update) - CustomerUpdateRequest customerUpdateMessage(UUID cusomterId); + CustomerUpdateRequest inputCustomerUpdateMessage(UUID cusomterId); //ID값 입력 UUID inputUUID(); - -} +} \ No newline at end of file From f662eedc7e8f7ae8e1b3f246a29231544ed76181 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:17:18 +0900 Subject: [PATCH 104/157] refactor:Output refactoring --- .../prgrms/springbootbasic/view/Output.java | 58 +++++++++++++++++-- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/view/Output.java b/src/main/java/com/prgrms/springbootbasic/view/Output.java index d79cdb5f96..f5d47f559b 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Output.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Output.java @@ -1,12 +1,60 @@ package com.prgrms.springbootbasic.view; -import com.prgrms.springbootbasic.domain.voucher.Voucher; -import java.util.Map; -import java.util.UUID; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; public interface Output { - void printMessage(String message); + void printConsoleMenu(); + + //바우처 관련 + void printVoucherMenu(); + + //바우처 생성 - 타입 + void printVoucherCreateTypeMenu(); + + //바우처 생성 - 금액 + void printVoucherCreateDiscountMenu(); + + //바우처 조회 - 메뉴 + void printVoucherSelectMenu(); + + //바우처 조회 - 모든 + void printVoucherSelectAll(VoucherListResponse voucherListResponse); + + //바우처 조회 - 타입별 + void printVoucherSelectTypeList(VoucherListResponse voucherListResponse); + + void printVoucherSelectType(); + + //바우처 조회 - ID조회 + + void printVoucherSelectId(); + + //바우처 조회 - 생성기간 + void printVoucherSelectCreateAt(); + + //바우처 변경 - 메뉴 + void printVoucherUpdateMenu(); + + //바우처 변경 - Id + void printVoucherUpdateId(); + + //바우처 삭제 - ID + void printVoucherDeleteMenu(); + + //바우처 삭제 - 모든 바우처 삭제 + void printVoucherDeleteAll(); + + //고객 관련 + void printCustomerMenu(); + + //Exit시 출력문 + void printExitMessage(); + + //에러 메시지 출력문 + void printErrorMessage(String message); + + //작업 완료문 + void printCompleteMessage(); - void printlnVoucherList(Map voucherMap); } From d7b413c65feb31e21b7db6e386f9777dd3acb1e6 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:18:10 +0900 Subject: [PATCH 105/157] =?UTF-8?q?Chore:=20mysql=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 --- build.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 7a9bee2cfa..675eaf39e9 100644 --- a/build.gradle +++ b/build.gradle @@ -30,10 +30,13 @@ dependencies { //Logback 설정 implementation 'ch.qos.logback:logback-classic:1.2.6' implementation 'ch.qos.logback:logback-core:1.2.6' + //mysql연결 + implementation 'mysql:mysql-connector-java:8.0.26' + implementation 'org.springframework.boot:spring-boot-starter-jdbc' - runtimeOnly 'com.h2database:h2' +// runtimeOnly 'com.h2database:h2' } From c938213471a0e5b1561410cd29475273572bdf04 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:18:57 +0900 Subject: [PATCH 106/157] refactor: VoucherType refactoring --- .../java/com/prgrms/springbootbasic/enums/VoucherType.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java b/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java index 59e497974d..fac5ca01ef 100644 --- a/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java +++ b/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java @@ -4,12 +4,11 @@ public enum VoucherType { FIXED, RATE; - public static VoucherType of(String voucherType) { try { return VoucherType.valueOf(voucherType.toUpperCase()); } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("잘못된 바우처 타입을 입력하셨습니다. 고정 할인 바우처(fixed) 또는 비율 할인 바우처(percent)를 선택해서 다시 입력해주세요!"); + throw new IllegalArgumentException("잘못된 바우처 타입을 입력하셨습니다. 고정 할인 바우처(Fixed) 또는 비율 할인 바우처(Rate)를 선택해서 다시 입력해주세요!"); } } -} +} \ No newline at end of file From 24b25fdc4a43aa6fafd9cbdea13fea46cf7a7294 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:19:57 +0900 Subject: [PATCH 107/157] =?UTF-8?q?feat:=20Console=20Menu=20enum=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prgrms/springbootbasic/enums/ConsoleMenu.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/enums/ConsoleMenu.java diff --git a/src/main/java/com/prgrms/springbootbasic/enums/ConsoleMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/ConsoleMenu.java new file mode 100644 index 0000000000..08747b12f9 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/enums/ConsoleMenu.java @@ -0,0 +1,15 @@ +package com.prgrms.springbootbasic.enums; + +public enum ConsoleMenu { + CUSTOMER, + VOUCHER, + EXIT; + + public static ConsoleMenu of(String consoleMenu) { + try { + return ConsoleMenu.valueOf(consoleMenu.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 프로그램의 메뉴를 확인 해주세요!"); + } + } +} From 6bee80e2931d1ad1e834b59d569056148cfde4cb Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:20:30 +0900 Subject: [PATCH 108/157] =?UTF-8?q?feat:=20VoucherMenu(CRUD)=20enum=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/enums/VoucherMenu.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/enums/VoucherMenu.java diff --git a/src/main/java/com/prgrms/springbootbasic/enums/VoucherMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/VoucherMenu.java new file mode 100644 index 0000000000..4acba89351 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/enums/VoucherMenu.java @@ -0,0 +1,16 @@ +package com.prgrms.springbootbasic.enums; + +public enum VoucherMenu { + CREATE, + UPDATE, + DELETE, + SELECT; + + public static VoucherMenu of(String menu) { + try { + return valueOf(menu.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 바우처 메뉴를 다시 확인해주세요!"); + } + } +} From b591334c9173415cf539a3f9f70f98fa3ead46df Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:22:56 +0900 Subject: [PATCH 109/157] =?UTF-8?q?feat:=20Voucher=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EB=A9=94=EB=89=B4(all,=20type,=20ID,=20createdAt)=20enum=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/VoucherSelectMenu.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/enums/VoucherSelectMenu.java diff --git a/src/main/java/com/prgrms/springbootbasic/enums/VoucherSelectMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/VoucherSelectMenu.java new file mode 100644 index 0000000000..dbb3b6d3ec --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/enums/VoucherSelectMenu.java @@ -0,0 +1,17 @@ +package com.prgrms.springbootbasic.enums; + +//모든 바우처를 조회하려면 All,타입별로 조회를 하려면 Type, ID로 조회하려면 ID, 생성일로 조회하려면 CreateAt을 입력해주세요 +public enum VoucherSelectMenu { + ID, + TYPE, + CREATEAT, + ALL; + + public static VoucherSelectMenu of(String readMenu) { + try { + return valueOf(readMenu.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 바우처 명령어를 다시 확인 해주세요!"); + } + } +} From 59f070d20a72a752c9e4f5481f7dc3931e78957a Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:25:10 +0900 Subject: [PATCH 110/157] =?UTF-8?q?feat:=20voucherDelete=20Menu=20enum=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/enums/VoucherDeleteMenu.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/enums/VoucherDeleteMenu.java diff --git a/src/main/java/com/prgrms/springbootbasic/enums/VoucherDeleteMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/VoucherDeleteMenu.java new file mode 100644 index 0000000000..624a55a344 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/enums/VoucherDeleteMenu.java @@ -0,0 +1,14 @@ +package com.prgrms.springbootbasic.enums; + +public enum VoucherDeleteMenu { + ID, + ALL; + + public static VoucherDeleteMenu of(String deleteMenu) { + try { + return valueOf(deleteMenu.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 바우처 명령어를 다시 확인 해주세요!"); + } + } +} \ No newline at end of file From 59e49884308e6f17531d40cabb66091666daa7f3 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:26:25 +0900 Subject: [PATCH 111/157] =?UTF-8?q?refactoring:=20=EB=B0=94=EC=9A=B0?= =?UTF-8?q?=EC=B2=98=EC=99=80=20=EA=B4=80=EB=A0=A8=EB=90=9C=20Console=20Vi?= =?UTF-8?q?ew=20refactoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../prgrms/springbootbasic/view/Console.java | 222 ++++++++++++++++-- 1 file changed, 196 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/view/Console.java b/src/main/java/com/prgrms/springbootbasic/view/Console.java index b0ca39c720..42bf7da74d 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Console.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Console.java @@ -1,56 +1,226 @@ package com.prgrms.springbootbasic.view; -import com.prgrms.springbootbasic.domain.voucher.Voucher; -import java.util.Map; +import com.prgrms.springbootbasic.dto.customer.request.CustomerCreateRequest; +import com.prgrms.springbootbasic.dto.customer.request.CustomerUpdateRequest; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; +import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.exception.Validator; +import java.time.LocalDateTime; import java.util.Scanner; import java.util.UUID; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +@Slf4j @Component public class Console implements Input, Output { private static final Scanner input = new Scanner(System.in); - public void consoleMenu() { - System.out.println("=== Voucher Program ==="); - System.out.println("Type **exit** to exit the program."); - System.out.println("Type **create** to create a new voucher."); - System.out.println("Type **list** to list all vouchers."); - } - + //Input @Override public String inputCommand() { - System.out.print("명령어를 입력해주세요.(exit,create,list) :"); return input.nextLine(); } + //바우처 생성(Create) @Override - public String inputVoucherType() { - System.out.print("생성할 voucher의 종류를 입력해주세요.(fixed(고정 할인 바우처) , percent(퍼센트 할인 바우처) : "); - return input.nextLine(); + public VoucherCreateRequest inputVoucherCrateMessage(VoucherType type) { + String inputDiscount = input.nextLine(); + + Validator.validateCreateVoucher(type, inputDiscount); + return new VoucherCreateRequest(Long.parseLong(inputDiscount), type, LocalDateTime.now()); + } + + //바우처 변경(Update) + @Override + public VoucherUpdateRequest inputVoucherUpdateMessage(UUID voucherId) { + String updateDiscount = input.nextLine(); + + Validator.validateUpdateVoucher(updateDiscount); + VoucherType voucherType = VoucherType.valueOf(input.nextLine()); + + return new VoucherUpdateRequest(voucherId, Long.parseLong(updateDiscount), voucherType); + } + + @Override + public CustomerCreateRequest inputCustomerCreateMessage() { + return null; + } + + @Override + public CustomerUpdateRequest inputCustomerUpdateMessage(UUID cusomterId) { + return null; + } + + @Override + public UUID inputUUID() { + + try { + return UUID.fromString(input.nextLine()); + } catch (IllegalArgumentException e) { + log.error("입력된 값은 UUID 형식이 아닐 수 있습니다. 다시 한 번 확인해보세요. {}", e.getMessage()); + throw new IllegalArgumentException("입력된 값은 UUID 형식이 아닐 수 있습니다. 다시 한 번 확인해보세요."); + } } + + //Output @Override - public long inputVoucherDiscount() { - System.out.println("생성할 voucher의 금액을 입력해주세요!"); - System.out.print("Discount : "); - return Long.parseLong(input.nextLine()); + public void printConsoleMenu() { + System.out.println("==== Voucher Program ===="); + System.out.println(" 다음 아래의 3개의 프로그램 명령 중 하나를 선택해주세요."); + System.out.println("Voucher : 바우처 관련 프로그램 시작"); + System.out.println("Customer : 고객 관련 프로그램 시작"); + System.out.println("Exit: 프로그램 종료"); + System.out.print("input : "); } @Override - public void printMessage(String message) { - System.out.println(message); + public void printVoucherMenu() { + System.out.println("==== Voucher Program ===="); + System.out.println("바우처 관련 프로그램을 시작합니다."); + System.out.println("다음의 명령어 Create, Select, Update, Delete 중 하나를 입력해주세요."); + System.out.println("바우처 생성: Create"); + System.out.println("바우처 조회: Select"); + System.out.println("바우처 변경: Update"); + System.out.println("바우처 삭제: Delete"); + System.out.print("input : "); } @Override - public void printlnVoucherList(Map voucherMap) { - if (voucherMap.isEmpty()) { - System.out.println("생성된 voucher가 없습니다."); - return; + public void printVoucherCreateTypeMenu() { + System.out.println("==== Voucher 생성 작업 ===="); + System.out.println("생성 가능한 바우처의 타입을 확인 후, 입력해 주세요!"); + System.out.println("정액 할인 바우처(고정 금액 할인)는 fixed를 입력해주세요."); + System.out.println("정률 할인 바우처(비율 금액 할인)는 Rate를 입력해주세요."); + System.out.print("input : "); + } + + @Override + public void printVoucherCreateDiscountMenu() { + System.out.println("==== Voucher 생성 작업 ==== "); + System.out.println("생성할 바우처의 종류에 따른 입력 금액을 확인 후, 입력해 주세요!"); + System.out.println("정액 할인 바우처(고정 금액 할인)의 경우, 0이하의 숫자를 제외한 금액을 입력할 수 있습니다."); + System.out.println("정률 할인 바우처(비율 금액 할인)의 경우, 1 ~ 99까지의 비율을 입력할 수 있습니다."); + System.out.print("input : "); + } + + @Override + public void printVoucherSelectMenu() { + System.out.println("==== Voucher 조회 작업 ==== "); + System.out.println("바우처의 다음의 조회 방법에 대해서 확인 후, 입력해 주세요! "); + System.out.println("All : 모든 바우처를 조회"); + System.out.println("ID : 바우처의 ID로 조회"); + System.out.println("Type: 바우처의 타입별로 조회"); + System.out.println("CreatedAt : 바우처의 생성일 순으로 조회 "); + System.out.print("input: "); + } + + @Override + public void printVoucherSelectAll(VoucherListResponse voucherListResponse) { + for (VoucherResponse voucherResponse : voucherListResponse.getVoucherResponseList()) { + System.out.println("==== Voucher 조회 작업 ==== "); + System.out.println("저장된 모든 바우처를 조회를 수행합니다."); + System.out.println("바우처 ID : " + voucherResponse.getVoucherId()); + System.out.println("할인 금액 : " + voucherResponse.getDiscount()); + System.out.println("바우처 타입 : " + voucherResponse.getType()); + System.out.println("바우처 생성일 :" + voucherResponse.getCreateAt()); + System.out.println(); } - System.out.println("생성된 Voucher의 목록은 다음과 같습니다."); - for (Voucher voucher : voucherMap.values()) { - System.out.println("Voucher Type: " + voucher.getVoucherType() + ", 해당 Voucher의 Discount: " + voucher.getDiscount() + " 입니다."); + } + + @Override + public void printVoucherSelectTypeList(VoucherListResponse voucherListResponse) { + for (VoucherResponse voucherResponse : voucherListResponse.getVoucherResponseList()) { + System.out.println("==== Voucher 조회 작업 ==== "); + System.out.println(" 저장된 바우처를 타입별 조회를 수행합니다."); + System.out.println(); + System.out.println("바우처 ID : " + voucherResponse.getVoucherId()); + System.out.println("할인 금액 : " + voucherResponse.getDiscount()); + System.out.println("바우처 타입 : " + voucherResponse.getType()); + System.out.println("바우처 생성일 :" + voucherResponse.getCreateAt()); + System.out.println(); } } + + @Override + public void printVoucherSelectType() { + System.out.println("==== Voucher 조회 작업 ==== "); + System.out.println("조회할 바우처의 Type을 입력해주세요!"); + System.out.println("fixed : 정액 할인 바우처(고정 금액 할인)"); + System.out.println("rate : 정률 할인 바우처(비율 금액 할인)"); + System.out.print("input : "); + } + + @Override + public void printVoucherSelectId() { + System.out.println("==== Voucher 조회 작업 ==== "); + System.out.println("조회할 바우처의 ID를 입력해주세요!"); + System.out.print("input : "); + } + + + @Override + public void printVoucherSelectCreateAt() { + System.out.println("==== Voucher 조회 작업 ==== "); + System.out.println("바우처를 생성일순으로 조회합니다."); + System.out.println(); + } + + @Override + public void printVoucherUpdateMenu() { + System.out.println("==== Voucher 수정 작업 ==== "); + System.out.println("바우처 수정을 선택하셨습니다."); + } + + @Override + public void printVoucherUpdateId() { + System.out.println("수정할 바우처의 ID를 입력해주세요."); + System.out.print("input : "); + } + + @Override + public void printVoucherDeleteMenu() { + System.out.println("==== Voucher 삭제 작업 ==== "); + System.out.println("바우처 삭제를 작업을 선택하셨습니다."); + System.out.println(); + System.out.println("ID: 바우처의 ID를 통해 해당 바우처 삭제"); + System.out.println("ALL : 모든 바우처들을 삭제 "); + System.out.print("input : "); + } + + @Override + public void printVoucherDeleteAll() { + System.out.println("==== Voucher 삭제 작업 ==== "); + System.out.println("모든 바우처들을 삭제를 선택하셨습니다!"); + } + + @Override + public void printCustomerMenu() { + System.out.println("고객 관련 프로그램 메뉴입니다."); + System.out.println("아래의 명령어(Create,Read,Update,Delete) 중 하나를 입력해주세요"); + System.out.println("고객 생성: Create"); + System.out.println("고객 조회: Read"); + System.out.println("고객 변경: Update"); + System.out.println("고객 삭제: Delete"); + } + + @Override + public void printExitMessage() { + System.out.println("프로그램이 종료됩니다."); + } + + @Override + public void printErrorMessage(String message) { + System.out.println(message.toString()); + } + + @Override + public void printCompleteMessage() { + System.out.println("정상적으로 해당 작업이 완료되었습니다!"); + } } From 14a424adfbf178bf27ea11c1b3b2450fa1fb0e0d Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:27:18 +0900 Subject: [PATCH 112/157] =?UTF-8?q?feat:=20Voucher=EC=99=80=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=EB=90=9C=20Console=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/ConsoleVoucher.java | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java b/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java new file mode 100644 index 0000000000..161461e882 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java @@ -0,0 +1,136 @@ +package com.prgrms.springbootbasic; + +import com.prgrms.springbootbasic.controller.voucher.VoucherController; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; +import com.prgrms.springbootbasic.enums.VoucherDeleteMenu; +import com.prgrms.springbootbasic.enums.VoucherMenu; +import com.prgrms.springbootbasic.enums.VoucherSelectMenu; +import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.view.Console; +import java.util.UUID; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +@RequiredArgsConstructor +public class ConsoleVoucher { + + private final VoucherController voucherController; + private final Console console; + + public void menu() { + console.printVoucherMenu(); + + switch (VoucherMenu.of(console.inputCommand())) { + case CREATE -> createVoucher(); + case UPDATE -> updateVoucher(); + case SELECT -> selectVoucher(); + case DELETE -> deleteVoucher(); + } + } + + + //생성(Create) + private void createVoucher() { + console.printVoucherCreateTypeMenu(); + VoucherType type = VoucherType.of(console.inputCommand()); + + console.printVoucherCreateDiscountMenu(); + VoucherCreateRequest createRequest = console.inputVoucherCrateMessage(type); + + voucherController.create(createRequest); + console.printCompleteMessage(); + } + + //변경(Update) + private void updateVoucher() { + console.printVoucherUpdateMenu(); + console.printVoucherUpdateId(); + console.inputUUID(); + UUID voucherId = console.inputUUID(); + VoucherUpdateRequest updateRequest = console.inputVoucherUpdateMessage(voucherId); + + voucherController.update(updateRequest); + console.printCompleteMessage(); + } + + + //읽기(Read) - 모든 바우처를 조회하려면 All,타입별로 조회를 하려면 Type, ID로 조회하려면 ID, 생성일별로 조회하려면 CreateAt을 입력 + private void selectVoucher() { + console.printVoucherSelectMenu(); + //선택 - Id, Type, CreateAt, All + switch (VoucherSelectMenu.of(console.inputCommand())) { + case ID -> { + console.printVoucherSelectId(); + UUID voucherId = console.inputUUID(); + + if (!voucherController.checkVoucherId(voucherId)) { + console.printErrorMessage("해당 ID를 가진 Voucher를 찾을 수 없습니다."); + } + } + //바우처 타입 + case TYPE -> { + console.printVoucherSelectType(); + VoucherType voucherType = VoucherType.of(console.inputCommand()); + VoucherListResponse vouchersByType = voucherController.findByType(voucherType); + if (!vouchersByType.getVoucherResponseList().isEmpty()) { + console.printVoucherSelectTypeList(vouchersByType); + } else { + console.printErrorMessage("해당 타입의 바우처가 존재하지 않습니다."); + } + } + //생성일 순으로 조회 + case CREATEAT -> { + console.printVoucherSelectCreateAt(); + VoucherListResponse voucherListResponse = voucherController.findByCreateAt(); + if (!voucherListResponse.getVoucherResponseList().isEmpty()) { + console.printVoucherSelectAll(voucherListResponse); + } else { + console.printErrorMessage("현재 저장된 바우처가 존재하지 않습니다."); + } + } + //모든 리스트 조회 + case ALL -> { + VoucherListResponse voucherListResponse = voucherController.findAllList(); + if (!voucherListResponse.getVoucherResponseList().isEmpty()) { + console.printVoucherSelectAll(voucherListResponse); + } else { + console.printErrorMessage("현재 저장된 바우처가 없습니다."); + } + break; + } + default -> console.printErrorMessage("잘못된 voucherSelectMenu를 선택하셨습니다. 다시 확인해주세요."); + } + } + + //삭제(DELET)- id, all + private void deleteVoucher() { + console.printVoucherDeleteMenu(); + //선택 - id, all + switch (VoucherDeleteMenu.of(console.inputCommand())) { + case ID -> { + console.printVoucherSelectId(); + UUID voucherId = console.inputUUID(); + + if (!voucherController.checkVoucherId(voucherId)) { + console.printErrorMessage("해당 Voucher의 ID인" + voucherId + "찾을 수 없습니다."); + return; + } + voucherController.deleteById(voucherId); + } + case ALL -> { + console.printVoucherDeleteAll(); + voucherController.deleteAll(); + } + default -> { + IllegalStateException e = new IllegalStateException("프로그램 삭제 명령어 오류"); + log.error("프로그램 삭제 명령어 오류", e); + throw e; + } + } + } +} From 324a8c58b020c40fa018b6a4efd4dc3ab0be99e9 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:42:52 +0900 Subject: [PATCH 113/157] =?UTF-8?q?refactor:=20Voucher=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=EA=B7=B8=EB=9E=A8=EA=B3=BC=20=EA=B4=80=EB=A0=A8?= =?UTF-8?q?=EB=90=9C=20enum=20=ED=8C=A8=ED=82=A4=EC=A7=80=EB=A5=BC=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20&=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/{ => voucher}/VoucherDeleteMenu.java | 4 ++-- .../springbootbasic/enums/{ => voucher}/VoucherMenu.java | 4 ++-- .../enums/{ => voucher}/VoucherSelectMenu.java | 4 ++-- .../springbootbasic/enums/{ => voucher}/VoucherType.java | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) rename src/main/java/com/prgrms/springbootbasic/enums/{ => voucher}/VoucherDeleteMenu.java (63%) rename src/main/java/com/prgrms/springbootbasic/enums/{ => voucher}/VoucherMenu.java (65%) rename src/main/java/com/prgrms/springbootbasic/enums/{ => voucher}/VoucherSelectMenu.java (74%) rename src/main/java/com/prgrms/springbootbasic/enums/{ => voucher}/VoucherType.java (90%) diff --git a/src/main/java/com/prgrms/springbootbasic/enums/VoucherDeleteMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherDeleteMenu.java similarity index 63% rename from src/main/java/com/prgrms/springbootbasic/enums/VoucherDeleteMenu.java rename to src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherDeleteMenu.java index 624a55a344..971d015180 100644 --- a/src/main/java/com/prgrms/springbootbasic/enums/VoucherDeleteMenu.java +++ b/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherDeleteMenu.java @@ -1,4 +1,4 @@ -package com.prgrms.springbootbasic.enums; +package com.prgrms.springbootbasic.enums.voucher; public enum VoucherDeleteMenu { ID, @@ -8,7 +8,7 @@ public static VoucherDeleteMenu of(String deleteMenu) { try { return valueOf(deleteMenu.toUpperCase()); } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 바우처 명령어를 다시 확인 해주세요!"); + throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 삭제하고자 하는 바우처 프로그램의 명령어를 다시 확인 해주세요!"); } } } \ No newline at end of file diff --git a/src/main/java/com/prgrms/springbootbasic/enums/VoucherMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherMenu.java similarity index 65% rename from src/main/java/com/prgrms/springbootbasic/enums/VoucherMenu.java rename to src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherMenu.java index 4acba89351..8998375b88 100644 --- a/src/main/java/com/prgrms/springbootbasic/enums/VoucherMenu.java +++ b/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherMenu.java @@ -1,4 +1,4 @@ -package com.prgrms.springbootbasic.enums; +package com.prgrms.springbootbasic.enums.voucher; public enum VoucherMenu { CREATE, @@ -10,7 +10,7 @@ public static VoucherMenu of(String menu) { try { return valueOf(menu.toUpperCase()); } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 바우처 메뉴를 다시 확인해주세요!"); + throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 바우처 프로그램의 메뉴를 다시 확인해주세요!"); } } } diff --git a/src/main/java/com/prgrms/springbootbasic/enums/VoucherSelectMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherSelectMenu.java similarity index 74% rename from src/main/java/com/prgrms/springbootbasic/enums/VoucherSelectMenu.java rename to src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherSelectMenu.java index dbb3b6d3ec..a5ff241ba0 100644 --- a/src/main/java/com/prgrms/springbootbasic/enums/VoucherSelectMenu.java +++ b/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherSelectMenu.java @@ -1,4 +1,4 @@ -package com.prgrms.springbootbasic.enums; +package com.prgrms.springbootbasic.enums.voucher; //모든 바우처를 조회하려면 All,타입별로 조회를 하려면 Type, ID로 조회하려면 ID, 생성일로 조회하려면 CreateAt을 입력해주세요 public enum VoucherSelectMenu { @@ -11,7 +11,7 @@ public static VoucherSelectMenu of(String readMenu) { try { return valueOf(readMenu.toUpperCase()); } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 바우처 명령어를 다시 확인 해주세요!"); + throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 바우처 프로그램의 명령어를 다시 확인 해주세요!"); } } } diff --git a/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java b/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherType.java similarity index 90% rename from src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java rename to src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherType.java index fac5ca01ef..292138b7ed 100644 --- a/src/main/java/com/prgrms/springbootbasic/enums/VoucherType.java +++ b/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherType.java @@ -1,4 +1,4 @@ -package com.prgrms.springbootbasic.enums; +package com.prgrms.springbootbasic.enums.voucher; public enum VoucherType { FIXED, From 0a97825c5171764202a7f9f668ec188b75387c05 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:44:07 +0900 Subject: [PATCH 114/157] =?UTF-8?q?feat:=20Customer=EC=99=80=20=EA=B4=80?= =?UTF-8?q?=EB=A0=A8=EB=90=9C=20enum=20(Menu,Select,=20Delete)=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enums/customer/CustomerDeleteMenu.java | 14 ++++++++++++++ .../enums/customer/CustomerMenu.java | 17 +++++++++++++++++ .../enums/customer/CustomerSelectMenu.java | 16 ++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerDeleteMenu.java create mode 100644 src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerMenu.java create mode 100644 src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerSelectMenu.java diff --git a/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerDeleteMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerDeleteMenu.java new file mode 100644 index 0000000000..190a4815fe --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerDeleteMenu.java @@ -0,0 +1,14 @@ +package com.prgrms.springbootbasic.enums.customer; + +public enum CustomerDeleteMenu { + ID, + ALL; + + public static CustomerDeleteMenu of(String deleteMenu) { + try { + return valueOf(deleteMenu.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 삭제하고자 하는 고객 프로그램의 명령어를 다시 확인 해주세요!"); + } + } +} diff --git a/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerMenu.java new file mode 100644 index 0000000000..ff1e2f4999 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerMenu.java @@ -0,0 +1,17 @@ +package com.prgrms.springbootbasic.enums.customer; + +public enum CustomerMenu { + CREATE, + UPDATE, + DELETE, + SELECT; + + public static CustomerMenu of(String menu) { + try { + return valueOf(menu.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 고객 프로그램의 메뉴를 다시 확인해주세요!"); + } + } + +} diff --git a/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerSelectMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerSelectMenu.java new file mode 100644 index 0000000000..8757651181 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerSelectMenu.java @@ -0,0 +1,16 @@ +package com.prgrms.springbootbasic.enums.customer; + +public enum CustomerSelectMenu { + ID, + TYPE, + CREATEAT, + ALL; + + public static CustomerSelectMenu of(String readMenu) { + try { + return valueOf(readMenu.toUpperCase()); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("잘못된 명령어를 입력하셨습니다! 실행하고자 하는 고객 프로그램의 명령어를 다시 확인 해주세요!"); + } + } +} From 67c521e5de5fbb656bb0cabd58f9998e4d1c4b92 Mon Sep 17 00:00:00 2001 From: jay-so Date: Sun, 16 Jul 2023 17:45:16 +0900 Subject: [PATCH 115/157] =?UTF-8?q?remove:=20Command=20enum=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/prgrms/springbootbasic/enums/Command.java | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 src/main/java/com/prgrms/springbootbasic/enums/Command.java diff --git a/src/main/java/com/prgrms/springbootbasic/enums/Command.java b/src/main/java/com/prgrms/springbootbasic/enums/Command.java deleted file mode 100644 index 6de5f2b858..0000000000 --- a/src/main/java/com/prgrms/springbootbasic/enums/Command.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.prgrms.springbootbasic.enums; - -public enum Command { - EXIT, - CREATE, - LIST; - - public static Command of(String inputCommand) { - try { - return Command.valueOf(inputCommand.toUpperCase()); - } catch (IllegalArgumentException e) { - throw new IllegalArgumentException("잘못된 명령어 입력입니다. 프로그램 종료(exit),바우처 생성(create), 바우처 목록 조회(list) 중 하나를 입력해주세요."); - } - } -} \ No newline at end of file From b5c9be82b2e5282a9d55af82926df1f2a2f429d8 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 21:38:40 +0900 Subject: [PATCH 116/157] =?UTF-8?q?feat:=20Voucher=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EB=9E=A8,=20Customer=20=ED=94=84=EB=A1=9C=EA=B7=B8?= =?UTF-8?q?=EB=9E=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springbootbasic/ConsoleApplication.java | 51 ++--- .../springbootbasic/ConsoleCustomer.java | 126 +++++++++++ .../springbootbasic/ConsoleVoucher.java | 52 +++-- .../customer/CustomerController.java | 26 ++- .../controller/voucher/VoucherController.java | 18 +- .../domain/customer/Customer.java | 28 ++- .../domain/voucher/FixedVoucher.java | 10 +- .../domain/voucher/RateVoucher.java | 10 +- .../domain/voucher/Voucher.java | 2 +- .../response/CustomerListResponse.java | 2 +- .../voucher/request/VoucherCreateRequest.java | 2 +- .../voucher/request/VoucherUpdateRequest.java | 2 - .../dto/voucher/response/VoucherResponse.java | 2 +- .../enums/customer/CustomerSelectMenu.java | 3 +- .../enums/voucher/VoucherSelectMenu.java | 2 +- .../customer/CustomerJdbcRepository.java | 64 +++--- .../customer/CustomerRepository.java | 11 +- .../voucher/MemoryVoucherRepository.java | 37 ++-- .../voucher/VoucherJdbcRepository.java | 80 +++---- .../repository/voucher/VoucherRepository.java | 16 +- .../service/customer/CustomerService.java | 30 ++- .../service/voucher/VoucherService.java | 42 ++-- .../prgrms/springbootbasic/view/Console.java | 195 +++++++++++++++--- .../prgrms/springbootbasic/view/Input.java | 4 +- .../prgrms/springbootbasic/view/Output.java | 54 ++++- src/main/resources/application.properties | 5 +- src/main/resources/logback.xml | 4 +- src/main/resources/schema.sql | 4 +- 28 files changed, 623 insertions(+), 259 deletions(-) create mode 100644 src/main/java/com/prgrms/springbootbasic/ConsoleCustomer.java diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java index 1f863ec328..d75ca60e67 100644 --- a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java @@ -1,12 +1,7 @@ package com.prgrms.springbootbasic; -import com.prgrms.springbootbasic.controller.voucher.VoucherController; -import com.prgrms.springbootbasic.domain.voucher.Voucher; -import com.prgrms.springbootbasic.enums.Command; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.enums.ConsoleMenu; import com.prgrms.springbootbasic.view.Console; -import java.util.Map; -import java.util.UUID; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.CommandLineRunner; @@ -17,50 +12,34 @@ @RequiredArgsConstructor public class ConsoleApplication implements CommandLineRunner { + private final ConsoleVoucher consoleVoucher; + private final ConsoleCustomer consoleCustomer; private final Console console; - private final VoucherController voucherController; @Override public void run(String... args) throws Exception { - console.consoleMenu(); - while (true) { + console.printConsoleMenu(); try { - String command = console.inputCommand(); - Command inputCommand = Command.of(command); + ConsoleMenu inputMenu = ConsoleMenu.of(console.inputCommand()); - switch (inputCommand) { - case CREATE -> createVoucher(); - case LIST -> getVoucherList(); + switch (inputMenu) { + case CUSTOMER -> consoleCustomer.menu(); + case VOUCHER -> consoleVoucher.menu(); case EXIT -> { - console.printMessage("프로그램을 종료합니다."); + console.printExitMessage(); return; } } } catch (IllegalArgumentException e) { - log.error("명령어가 잘못 입력되었습니다. ", e.getMessage()); + log.error("명령어가 잘못 입력되었습니다.", e); + log.error("에러 메시지: {}", e.getMessage()); + log.error("Stack Trace: ", e); } catch (Exception e) { - log.error("프로그램에서 오류가 발생하였습니다.", e.getMessage()); + log.error("프로그램에서 오류가 발생하였습니다.", e); + log.error("에러 메시지: {}", e.getMessage()); + log.error("Stack Trace: ", e); } } } - - public void createVoucher() { - String voucherTypeInput = console.inputVoucherType(); - VoucherType voucherType = VoucherType.of(voucherTypeInput); - - long voucherDiscount = console.inputVoucherDiscount(); - - try { - voucherController.createVoucher(voucherType, voucherDiscount); - console.printMessage("바우처가 생성되었습니다!"); - } catch (IllegalArgumentException e) { - console.printMessage("생성할 바우처의 금액의 범위를 다시 한번 확인해주세요!"); - } - } - - public void getVoucherList() { - Map voucherMap = voucherController.printVoucherList(); - console.printlnVoucherList(voucherMap); - } } \ No newline at end of file diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleCustomer.java b/src/main/java/com/prgrms/springbootbasic/ConsoleCustomer.java new file mode 100644 index 0000000000..83d4c5f7f7 --- /dev/null +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleCustomer.java @@ -0,0 +1,126 @@ +package com.prgrms.springbootbasic; + +import com.prgrms.springbootbasic.controller.customer.CustomerController; +import com.prgrms.springbootbasic.dto.customer.request.CustomerCreateRequest; +import com.prgrms.springbootbasic.dto.customer.request.CustomerUpdateRequest; +import com.prgrms.springbootbasic.dto.customer.response.CustomerListResponse; +import com.prgrms.springbootbasic.dto.customer.response.CustomerResponse; +import com.prgrms.springbootbasic.enums.customer.CustomerDeleteMenu; +import com.prgrms.springbootbasic.enums.customer.CustomerMenu; +import com.prgrms.springbootbasic.enums.customer.CustomerSelectMenu; +import com.prgrms.springbootbasic.view.Console; +import java.util.UUID; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +@RequiredArgsConstructor +public class ConsoleCustomer { + + private final CustomerController customerController; + private final Console console; + + public void menu() { + console.printCustomerMenu(); + switch (CustomerMenu.of(console.inputCommand())) { + case CREATE -> createCustomer(); + case UPDATE -> updateCustomer(); + case SELECT -> selectCustomer(); + case DELETE -> deleteCustomer(); + } + } + + //생성(Create) + + private void createCustomer() { + console.printCustomerCreateMenu(); + + CustomerCreateRequest createRequest = console.inputCustomerCreateMessage(); + + customerController.create(createRequest); + console.printCompleteMessage(); + } + + //변경 + private void updateCustomer() { + console.printCustomerUpdateByID(); + UUID customerId = console.inputUUID(); + CustomerUpdateRequest updateRequest = console.inputCustomerUpdateMessage(customerId); + + customerController.update(updateRequest); + console.printCompleteMessage(); + } + + + private void selectCustomer() { + console.printCustomerSelectMenu(); + //선택 - Id, CreateAt, All + switch (CustomerSelectMenu.of(console.inputCommand())) { + case ID -> { + console.printCustomerSelectById(); + UUID customerId = console.inputUUID(); + + if (!customerController.checkCustomerId(customerId)) { + console.printErrorMessage("해당 ID를 가진 고객을 찾을 수 없습니다."); + } else { + CustomerResponse customerResponse = customerController.findById(customerId); + System.out.println("해당 고객의 ID: " + customerResponse.getCustomerId()); + System.out.println("해당 고객의 이름: " + customerResponse.getCustomerName()); + System.out.println("해당 고객의 이메일: " + customerResponse.getCustomerEmail()); + System.out.println("해당 고객의 생성일: " + customerResponse.getCreateAt()); + } + } + //생성일 순으로 조회 - 오류 + case CREATEDAT -> { + console.printCutomerSelectByCreatedAt(); + CustomerListResponse customerListResponse = customerController.findByCreateAt(); + if (!customerListResponse.getCustomerResponseList().isEmpty()) { + console.printCustomerSelectByCreatedAt(customerListResponse); + } else { + console.printErrorMessage("현재 저장된 고객이 존재하지 않습니다."); + } + } + //모든 리스트 조회 + case ALL -> { + CustomerListResponse customerListResponse = customerController.findAllList(); + if (!customerListResponse.getCustomerResponseList().isEmpty()) { + console.printCustomerSelectAll(customerListResponse); + } else { + console.printErrorMessage("현재 저장된 고객이 없습니다."); + } + } + default -> console.printErrorMessage("잘못된 Customer SelectMenu를 선택하셨습니다. 다시 확인해주세요."); + } + } + + + private void deleteCustomer() { + console.printCustomerDeleteMenu(); + //선택 - id, all + switch (CustomerDeleteMenu.of(console.inputCommand())) { + case ID -> { + console.printCustomerDeleteByID(); + UUID customerId = console.inputUUID(); + + if (!customerController.checkCustomerId(customerId)) { + console.printErrorMessage(customerId + "찾을 고객이 존재하지 않습니다."); + return; + } + if (customerController.deleteById(customerId) == 0) { + console.printErrorMessage(customerId + " 삭제하려는 고객이 저장되어있지 않아 삭제할 수 없습니다."); + } + } + case ALL -> { + console.printCustomerDeleteByAll(); + customerController.deleteAll(); + } + default -> { + IllegalStateException e = new IllegalStateException("프로그램 삭제 명령어 오류"); + log.error("프로그램 삭제 명령어 오류", e); + throw e; + } + } + } +} \ No newline at end of file diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java b/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java index 161461e882..e8b7eca1f5 100644 --- a/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java @@ -4,10 +4,11 @@ import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; -import com.prgrms.springbootbasic.enums.VoucherDeleteMenu; -import com.prgrms.springbootbasic.enums.VoucherMenu; -import com.prgrms.springbootbasic.enums.VoucherSelectMenu; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; +import com.prgrms.springbootbasic.enums.voucher.VoucherDeleteMenu; +import com.prgrms.springbootbasic.enums.voucher.VoucherMenu; +import com.prgrms.springbootbasic.enums.voucher.VoucherSelectMenu; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import com.prgrms.springbootbasic.view.Console; import java.util.UUID; import lombok.RequiredArgsConstructor; @@ -49,12 +50,12 @@ private void createVoucher() { //변경(Update) private void updateVoucher() { console.printVoucherUpdateMenu(); - console.printVoucherUpdateId(); - console.inputUUID(); + console.printVoucherUpdateById(); UUID voucherId = console.inputUUID(); VoucherUpdateRequest updateRequest = console.inputVoucherUpdateMessage(voucherId); voucherController.update(updateRequest); + System.out.println("변경 후 금액 : " + updateRequest.getDiscount()); console.printCompleteMessage(); } @@ -65,43 +66,53 @@ private void selectVoucher() { //선택 - Id, Type, CreateAt, All switch (VoucherSelectMenu.of(console.inputCommand())) { case ID -> { - console.printVoucherSelectId(); + console.printVoucherSelectById(); UUID voucherId = console.inputUUID(); if (!voucherController.checkVoucherId(voucherId)) { console.printErrorMessage("해당 ID를 가진 Voucher를 찾을 수 없습니다."); + } else { + VoucherResponse voucherResponse = voucherController.findById(voucherId); + System.out.println("해당 바우처의 ID: " + voucherResponse.getVoucherId()); + System.out.println("해당 바우처의 금액: " + voucherResponse.getDiscount()); + System.out.println("해당 바우처의 타입: " + voucherResponse.getType()); + System.out.println("해당 바우처의 생성일:" + voucherResponse.getCreateAt()); } } //바우처 타입 case TYPE -> { - console.printVoucherSelectType(); + console.printVoucherSelectByType(); VoucherType voucherType = VoucherType.of(console.inputCommand()); VoucherListResponse vouchersByType = voucherController.findByType(voucherType); if (!vouchersByType.getVoucherResponseList().isEmpty()) { - console.printVoucherSelectTypeList(vouchersByType); + console.printVoucherSelectByTypeList(vouchersByType); } else { console.printErrorMessage("해당 타입의 바우처가 존재하지 않습니다."); } } //생성일 순으로 조회 - case CREATEAT -> { - console.printVoucherSelectCreateAt(); - VoucherListResponse voucherListResponse = voucherController.findByCreateAt(); + case CREATEDAT -> { + VoucherListResponse voucherListResponse = voucherController.findByCreatedAt(); if (!voucherListResponse.getVoucherResponseList().isEmpty()) { - console.printVoucherSelectAll(voucherListResponse); + console.printVoucherSelectByCreateAt(voucherListResponse); } else { console.printErrorMessage("현재 저장된 바우처가 존재하지 않습니다."); } + if (!voucherListResponse.getVoucherResponseList().isEmpty()) { + console.printVoucherSelectBYAll(voucherListResponse); + } else { + + } + } //모든 리스트 조회 case ALL -> { VoucherListResponse voucherListResponse = voucherController.findAllList(); if (!voucherListResponse.getVoucherResponseList().isEmpty()) { - console.printVoucherSelectAll(voucherListResponse); + console.printVoucherSelectBYAll(voucherListResponse); } else { console.printErrorMessage("현재 저장된 바우처가 없습니다."); } - break; } default -> console.printErrorMessage("잘못된 voucherSelectMenu를 선택하셨습니다. 다시 확인해주세요."); } @@ -113,18 +124,19 @@ private void deleteVoucher() { //선택 - id, all switch (VoucherDeleteMenu.of(console.inputCommand())) { case ID -> { - console.printVoucherSelectId(); + console.printVoucherDeleteById(); UUID voucherId = console.inputUUID(); - if (!voucherController.checkVoucherId(voucherId)) { - console.printErrorMessage("해당 Voucher의 ID인" + voucherId + "찾을 수 없습니다."); + if (voucherController.deleteById(voucherId) == 0) { + console.printErrorMessage(voucherId + " 삭제하려는 바우처가 저장되어있지 않아 삭제할 수 없습니다."); return; } - voucherController.deleteById(voucherId); + console.printCompleteMessage(); } case ALL -> { console.printVoucherDeleteAll(); voucherController.deleteAll(); + console.printCompleteMessage(); } default -> { IllegalStateException e = new IllegalStateException("프로그램 삭제 명령어 오류"); @@ -133,4 +145,4 @@ private void deleteVoucher() { } } } -} +} \ No newline at end of file diff --git a/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java b/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java index 79c2e14386..964408f1f1 100644 --- a/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java +++ b/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java @@ -5,7 +5,6 @@ import com.prgrms.springbootbasic.dto.customer.response.CustomerListResponse; import com.prgrms.springbootbasic.dto.customer.response.CustomerResponse; import com.prgrms.springbootbasic.service.customer.CustomerService; -import java.time.LocalDateTime; import java.util.UUID; import lombok.AllArgsConstructor; import org.springframework.stereotype.Controller; @@ -16,35 +15,44 @@ public class CustomerController { private final CustomerService customerService; - //(Create)고객 생성 public void create(CustomerCreateRequest customerCreateRequest) { customerService.createCustomer(customerCreateRequest); } - //(Read) 고객의 모든 리스트 출력 public CustomerListResponse findAllList() { return customerService.findAllCustomers(); } + //(Read) - UUID를 통해서 검색 + public CustomerResponse findById(UUID customerId) { + return customerService.findById(customerId); + } + + //(Read) 고객 생성기간 출력 - public CustomerResponse findByCreateAt(LocalDateTime createAt) { - return customerService.findByCreateAt(createAt); + public CustomerListResponse findByCreateAt() { + return customerService.findByCreateAt(); } + //(Update) 고객 수정 public void update(CustomerUpdateRequest customerUpdateRequset) { customerService.updateCustomer(customerUpdateRequset); } //(Delete) 특정 고객을 찾아 삭제 - public void deleteById(UUID customerId) { - customerService.deleteById(customerId); + public int deleteById(UUID customerId) { + return customerService.deleteById(customerId); } - + //(Delete) 모든 고객 내용 삭제 public void deleteAll() { customerService.deleteAllCustomer(); } -} + + public boolean checkCustomerId(UUID voucherId) { + return customerService.checkCustomerId(voucherId); + } +} \ No newline at end of file diff --git a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java index dd757ab038..6a24d41366 100644 --- a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java +++ b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java @@ -4,9 +4,8 @@ import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import com.prgrms.springbootbasic.service.voucher.VoucherService; -import java.time.LocalDateTime; import java.util.UUID; import lombok.AllArgsConstructor; import org.springframework.stereotype.Controller; @@ -22,7 +21,6 @@ public void create(VoucherCreateRequest voucherCreateRequest) { voucherService.createVoucher(voucherCreateRequest); } - //(Read) 바우처의 모든 리스트 출력 public VoucherListResponse findAllList() { return voucherService.findAllVouchers(); @@ -33,9 +31,9 @@ public VoucherResponse findById(UUID voucherId) { return voucherService.findById(voucherId); } - //(Read) 바우처 생성기간 출력 - public VoucherResponse findByCreateAt(LocalDateTime createAt) { - return voucherService.findByCreateAt(createAt); + //(Read) 바우처 생성기간별 출력 + public VoucherListResponse findByCreatedAt() { + return voucherService.findByCreateAt(); } //(Read) 바우처 타입별 리스트 출력 @@ -49,12 +47,16 @@ public void update(VoucherUpdateRequest voucherUpdateRequest) { } //(Delete) 특정 바우처를 찾아 삭제 - public void deleteById(UUID voucherId) { - voucherService.deleteById(voucherId); + public int deleteById(UUID voucherId) { + return voucherService.deleteById(voucherId); } //(Delete) 모든 바우처의 내용 삭제 public void deleteAll() { voucherService.deleteAllVoucher(); } + + public boolean checkVoucherId(UUID voucherId) { + return voucherService.checkVoucherId(voucherId); + } } diff --git a/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java b/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java index d00ac8e828..e6d7d65898 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/customer/Customer.java @@ -2,6 +2,8 @@ import java.time.LocalDateTime; import java.util.UUID; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import lombok.Getter; import lombok.Setter; @@ -9,6 +11,9 @@ @Setter public class Customer { + private static final Pattern ENGLISH_PATTERN = Pattern.compile("^[a-zA-Z]*$"); + private static final Pattern EMAIL_PATTERN = Pattern.compile("^[_a-zA-Z0-9-\\.]+@[\\.a-zA-Z0-9-]+\\.[a-zA-Z]+$"); + private final UUID customerId; private String name; private String email; @@ -16,8 +21,27 @@ public class Customer { public Customer(UUID customerId, String name, String email, LocalDateTime createAt) { this.customerId = customerId; - this.name = name; - this.email = email; + this.name = validateName(name); + this.email = validateEmail(email); this.createAt = createAt; } + + public String validateName(String name) { + Matcher match = ENGLISH_PATTERN.matcher(name); + + if (!match.matches()) { + throw new IllegalArgumentException("영어 입력이 아니여서 에러가 납니다.!"); + } + return name; + } + + public String validateEmail(String email) { + Matcher match = EMAIL_PATTERN.matcher(email); + + if (!match.matches()) { + throw new IllegalArgumentException("이메일 형식이 아니여서 에러가 납니다.!"); + } + return email; + } } + diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java index 1b16344a9d..1ad299ac74 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucher.java @@ -1,11 +1,12 @@ package com.prgrms.springbootbasic.domain.voucher; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import java.time.LocalDateTime; import java.util.UUID; import lombok.Setter; @Setter + public class FixedVoucher implements Voucher { private final UUID voucherId; @@ -20,6 +21,13 @@ public FixedVoucher(long discount) { this.type = getVoucherType(); } + public FixedVoucher(UUID voucherId, long discount, LocalDateTime createdAt) { + this.voucherId = voucherId; + this.discount = discount; + this.createAt = createdAt; + this.type = getVoucherType(); + } + public long ValidDiscount(long discount) { diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java index c3adbb7ca1..b889dc6752 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/RateVoucher.java @@ -1,6 +1,6 @@ package com.prgrms.springbootbasic.domain.voucher; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import java.time.LocalDateTime; import java.util.UUID; import lombok.Setter; @@ -20,9 +20,17 @@ public RateVoucher(long discount) { this.type = getVoucherType(); } + public RateVoucher(UUID voucherId, long discount, LocalDateTime createdAt) { + this.voucherId = voucherId; + this.discount = discount; + this.createAt = createdAt; + this.type = getVoucherType(); + } + public long ValidDiscount(long discount) { if (discount < 1 || discount > 99) { throw new IllegalArgumentException("퍼센트 할인 바우처의 할인 퍼센트는 1 ~ 99까지의 숫자를 입력해야 합니다."); + } return discount; } diff --git a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java index 6568afae68..46362d536b 100644 --- a/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java +++ b/src/main/java/com/prgrms/springbootbasic/domain/voucher/Voucher.java @@ -1,6 +1,6 @@ package com.prgrms.springbootbasic.domain.voucher; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import java.time.LocalDateTime; import java.util.UUID; diff --git a/src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerListResponse.java b/src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerListResponse.java index c68f159188..14bd6fde32 100644 --- a/src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerListResponse.java +++ b/src/main/java/com/prgrms/springbootbasic/dto/customer/response/CustomerListResponse.java @@ -8,5 +8,5 @@ @AllArgsConstructor public class CustomerListResponse { - private final List customerList; + private final List customerResponseList; } diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherCreateRequest.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherCreateRequest.java index ef542ab588..a4e21b1344 100644 --- a/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherCreateRequest.java +++ b/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherCreateRequest.java @@ -1,6 +1,6 @@ package com.prgrms.springbootbasic.dto.voucher.request; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import java.time.LocalDateTime; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherUpdateRequest.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherUpdateRequest.java index 296e6f3e45..5eb0d1435e 100644 --- a/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherUpdateRequest.java +++ b/src/main/java/com/prgrms/springbootbasic/dto/voucher/request/VoucherUpdateRequest.java @@ -1,6 +1,5 @@ package com.prgrms.springbootbasic.dto.voucher.request; -import com.prgrms.springbootbasic.enums.VoucherType; import java.util.UUID; import lombok.AllArgsConstructor; import lombok.Getter; @@ -11,5 +10,4 @@ public class VoucherUpdateRequest { private UUID voucherId; private long discount; - private VoucherType type; } \ No newline at end of file diff --git a/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java b/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java index cf15866d5b..1c22d83e81 100644 --- a/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java +++ b/src/main/java/com/prgrms/springbootbasic/dto/voucher/response/VoucherResponse.java @@ -1,6 +1,6 @@ package com.prgrms.springbootbasic.dto.voucher.response; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import java.time.LocalDateTime; import java.util.UUID; import lombok.AllArgsConstructor; diff --git a/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerSelectMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerSelectMenu.java index 8757651181..54479fbd5a 100644 --- a/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerSelectMenu.java +++ b/src/main/java/com/prgrms/springbootbasic/enums/customer/CustomerSelectMenu.java @@ -2,8 +2,7 @@ public enum CustomerSelectMenu { ID, - TYPE, - CREATEAT, + CREATEDAT, ALL; public static CustomerSelectMenu of(String readMenu) { diff --git a/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherSelectMenu.java b/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherSelectMenu.java index a5ff241ba0..193c27e1ba 100644 --- a/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherSelectMenu.java +++ b/src/main/java/com/prgrms/springbootbasic/enums/voucher/VoucherSelectMenu.java @@ -4,7 +4,7 @@ public enum VoucherSelectMenu { ID, TYPE, - CREATEAT, + CREATEDAT, ALL; public static VoucherSelectMenu of(String readMenu) { diff --git a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java index a5baf8078e..97f7f8f8be 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java @@ -8,6 +8,7 @@ import javax.sql.DataSource; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Primary; +import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @@ -17,6 +18,7 @@ @Repository @Slf4j @Primary +//@Profile({"local", "test"}) public class CustomerJdbcRepository implements CustomerRepository { private final NamedParameterJdbcTemplate template; @@ -30,7 +32,7 @@ public Customer save(Customer customer) { String sql = "insert into customers values(:customerId, :customerName, :customerEmail, :customerCreateAt)"; SqlParameterSource param = new MapSqlParameterSource() - .addValue("customerId", customer.getCustomerId()) + .addValue("customerId", customer.getCustomerId().toString()) .addValue("customerName", customer.getName()) .addValue("customerEmail", customer.getEmail()) .addValue("customerCreateAt", customer.getCreateAt()); @@ -41,63 +43,64 @@ public Customer save(Customer customer) { @Override public Optional findById(UUID customerId) { - String sql = "select * from customer where customer_id = :customerId"; + String sql = "select * from customers where customer_id = :customerId"; SqlParameterSource param = new MapSqlParameterSource() - .addValue("customerId", customerId); + .addValue("customerId", customerId.toString()); Customer customer = template.queryForObject(sql, param, customerRowMapper()); return Optional.ofNullable(customer); } @Override - public Optional findByCreateAt(LocalDateTime createAt) { - String sql = "select * from customers where create_at = :createAt"; - - SqlParameterSource param = new MapSqlParameterSource() - .addValue("createAt", createAt); + public List findAll() { + String sql = "select * from customers"; - Customer customer = template.queryForObject(sql, param, customerRowMapper()); - return Optional.ofNullable(customer); + List customers = template.query(sql, customerRowMapper()); + return customers; } @Override - public List findAll() { - String sql = "select * from customers"; + public List findByCreatedAt() { + String sql = "select * from customers ORDER BY customer_createAt ASC"; List customers = template.query(sql, customerRowMapper()); return customers; } @Override - public Optional update(Customer customer) { - String sql = "update customers set customerName = :customerName, customerEmail = :customerEmail where customer_id = :customerId"; + public void update(Customer customer) { + String sql = "update customers set customer_Name = :customerName, customer_Email = :customerEmail where customer_id = :customerId"; SqlParameterSource param = new MapSqlParameterSource() - .addValue("cutomerName", customer.getName()) + .addValue("customerId", customer.getCustomerId().toString()) + .addValue("customerName", customer.getName()) .addValue("customerEmail", customer.getEmail()); + template.update(sql, param); + } + + + @Override + public boolean checkCustomerId(UUID customerId) { + String sql = "select * from customers where customer_id = :customerId"; - int rows = template.update(sql, param); - if (rows == 1) { - return Optional.of(customer); - } else { - return Optional.empty(); + SqlParameterSource param = new MapSqlParameterSource() + .addValue("customerId", customerId.toString()); + try { + template.queryForObject(sql, param, customerRowMapper()); + return true; + } catch (EmptyResultDataAccessException e) { + log.warn("고객의 ID가 존재하는지 체크했으나 없어서 예외 발생함", e.getMessage()); + return false; } } @Override - public Optional deleteById(UUID customerId) { + public int deleteById(UUID customerId) { String sql = "delete from customers where customer_id = :customerId"; - SqlParameterSource param = new MapSqlParameterSource() - .addValue("customerId", customerId); - - int deletedRows = template.update(sql, param); - if (deletedRows == 1) { - return Optional.of(null); - } else { - return Optional.empty(); - } + .addValue("customerId", customerId.toString()); + return template.update(sql, param); } @@ -110,6 +113,7 @@ public void deleteAll() { template.update(sql, param); } + private RowMapper customerRowMapper() { return (resultSet, rowMap) -> { UUID customerId = UUID.fromString(resultSet.getString("customer_id")); diff --git a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java index f99e7b0c00..da51e0c968 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerRepository.java @@ -1,7 +1,6 @@ package com.prgrms.springbootbasic.repository.customer; import com.prgrms.springbootbasic.domain.customer.Customer; -import java.time.LocalDateTime; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -15,18 +14,22 @@ public interface CustomerRepository { Optional findById(UUID customerId); //read-create at - Optional findByCreateAt(LocalDateTime createAt); + public List findByCreatedAt(); + //조회(Read) - all List findAll(); //업데이트(update) - Optional update(Customer customer); + void update(Customer customer); //delete-id - Optional deleteById(UUID customerId); + int deleteById(UUID customerId); //customer 모두 삭제(Delete) void deleteAll(); + + boolean checkCustomerId(UUID customerId); + } diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java index 4b3db94084..d334c3bd70 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java @@ -1,8 +1,7 @@ package com.prgrms.springbootbasic.repository.voucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; -import com.prgrms.springbootbasic.enums.VoucherType; -import java.time.LocalDateTime; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -10,9 +9,11 @@ import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; -import org.springframework.stereotype.Repository; +import lombok.extern.slf4j.Slf4j; + +//@Repository +@Slf4j -@Repository public class MemoryVoucherRepository implements VoucherRepository { private final Map storage = new ConcurrentHashMap<>(); @@ -30,13 +31,11 @@ public Optional findById(UUID voucherId) { } @Override - public Optional findByCreatedAt(LocalDateTime createAt) { - Optional findVoucher = storage.values().stream() - .filter(voucher -> voucher.getCreatedAt().equals(createAt)) - .findFirst(); - return findVoucher; + public List findByCreatedAt() { + return new ArrayList<>(storage.values()); } + @Override public List findByType(VoucherType type) { return storage.values().stream() @@ -50,24 +49,32 @@ public List findAll() { } @Override - public Optional update(Voucher voucher) { + public void update(Voucher voucher) { UUID voucherId = voucher.getVoucherId(); if (storage.containsKey(voucherId)) { storage.put(voucherId, voucher); - return Optional.of(voucher); } else { - return Optional.empty(); + log.error("업테이트 시 오류가 발생했습니다."); } } @Override - public Optional deleteById(UUID voucherId) { - Voucher removeVoucher = storage.remove(voucherId); - return Optional.ofNullable(removeVoucher); + public int deleteById(UUID voucherId) { + try { + storage.remove(voucherId); + return 1; + } catch (NullPointerException e) { + return 0; + } } @Override public void deleteAll() { storage.clear(); } + + @Override + public boolean checkVoucherId(UUID voucherId) { + return false; + } } diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java index 045644337f..0610956196 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java @@ -1,7 +1,7 @@ package com.prgrms.springbootbasic.repository.voucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import java.time.LocalDateTime; import java.util.List; import java.util.Optional; @@ -9,6 +9,7 @@ import javax.sql.DataSource; import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Primary; +import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; @@ -19,6 +20,7 @@ @Repository @Slf4j @Primary +//@Profile({"local", "test"}) public class VoucherJdbcRepository implements VoucherRepository { private final NamedParameterJdbcTemplate template; @@ -29,13 +31,13 @@ public VoucherJdbcRepository(DataSource dataSource) { @Override public Voucher save(Voucher voucher) { - String sql = "insert into vouchers values(:voucherId, :discountAmount, :voucherType, :createAt)"; + String sql = "insert into vouchers values(:voucherId, :discount, :voucherType, :voucherCreatedAt)"; SqlParameterSource param = new MapSqlParameterSource() - .addValue("voucherId", voucher.getVoucherId()) + .addValue("voucherId", voucher.getVoucherId().toString()) .addValue("discount", voucher.getDiscount()) .addValue("voucherType", voucher.getVoucherType().toString()) - .addValue("createAt", voucher.getCreatedAt()); + .addValue("voucherCreatedAt", voucher.getCreatedAt()); template.update(sql, param); return voucher; @@ -46,21 +48,23 @@ public Optional findById(UUID voucherId) { String sql = "select * from vouchers where voucher_id = :voucherId"; SqlParameterSource param = new MapSqlParameterSource() - .addValue("voucherId", voucherId); + .addValue("voucherId", voucherId.toString()); - Voucher voucher = template.queryForObject(sql, param, voucherRowMapper()); - return Optional.ofNullable(voucher); + Voucher voucher; + try { + voucher = template.queryForObject(sql, param, voucherRowMapper()); + return Optional.of(voucher); + } catch (EmptyResultDataAccessException ex) { + return Optional.empty(); + } } @Override - public Optional findByCreatedAt(LocalDateTime createAt) { - String sql = "select * from vouchers where create_at = :createAt"; + public List findByCreatedAt() { + String sql = "select * from vouchers ORDER BY voucher_createdAt ASC"; - SqlParameterSource param = new MapSqlParameterSource() - .addValue("createAt", createAt); - - Voucher voucher = template.queryForObject(sql, param, voucherRowMapper()); - return Optional.ofNullable(voucher); + List vouchers = template.query(sql, voucherRowMapper()); + return vouchers; } @Override @@ -83,33 +87,22 @@ public List findAll() { } @Override - public Optional update(Voucher voucher) { - String sql = "update vouchers set discount_amount = :discountAmount, voucher_type = :voucherType where voucher_id = :voucherId"; + public void update(Voucher voucher) { + String sql = "update vouchers set discount = :discount where voucher_id = :voucherId"; - SqlParameterSource param = new MapSqlParameterSource() - .addValue("discountAmount", voucher.getDiscount()); + SqlParameterSource paramMap = new MapSqlParameterSource() + .addValue("voucherId", voucher.getVoucherId().toString()) + .addValue("discount", voucher.getDiscount()); - int rows = template.update(sql, param); - if (rows == 1) { - return Optional.of(voucher); - } else { - return Optional.empty(); - } + template.update(sql, paramMap); } @Override - public Optional deleteById(UUID voucherId) { + public int deleteById(UUID voucherId) { String sql = "delete from vouchers where voucher_id = :voucherId"; - SqlParameterSource param = new MapSqlParameterSource() - .addValue("voucherId", voucherId); - - int deletedRows = template.update(sql, param); - if (deletedRows == 1) { - return Optional.of(null); - } else { - return Optional.empty(); - } + .addValue("voucherId", voucherId.toString()); + return template.update(sql, param); } @Override @@ -121,11 +114,26 @@ public void deleteAll() { template.update(sql, param); } + @Override + public boolean checkVoucherId(UUID voucherId) { + String sql = "select * from vouchers where voucher_id = :voucherId"; + + SqlParameterSource param = new MapSqlParameterSource() + .addValue("voucherId", voucherId.toString()); + try { + template.queryForObject(sql, param, voucherRowMapper()); + return true; + } catch (EmptyResultDataAccessException e) { + log.error("바우처 ID가 없어서 예외 발생", e.getMessage()); + return false; + } + } + private RowMapper voucherRowMapper() { RowMapper voucherRowMapper = (resultSet, rowMap) -> { UUID voucherId = UUID.fromString(resultSet.getString("voucher_id")); - long discount = Long.parseLong(resultSet.getString("voucher_discount")); - VoucherType voucherType = VoucherType.valueOf(resultSet.getString("Voucher_type").toUpperCase()); + long discount = Long.parseLong(resultSet.getString("discount")); + VoucherType voucherType = VoucherType.valueOf(resultSet.getString("voucher_type").toUpperCase()); LocalDateTime createdAt = resultSet.getTimestamp("voucher_createdAt").toLocalDateTime(); return new Voucher() { diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java index 799223fbe3..9eb115e647 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherRepository.java @@ -1,8 +1,7 @@ package com.prgrms.springbootbasic.repository.voucher; import com.prgrms.springbootbasic.domain.voucher.Voucher; -import com.prgrms.springbootbasic.enums.VoucherType; -import java.time.LocalDateTime; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -15,22 +14,23 @@ public interface VoucherRepository { //read - id Optional findById(UUID voucherId); - //read - create at - Optional findByCreatedAt(LocalDateTime createAt); - List findByType(VoucherType type); //read - all List findAll(); + //read - create at + List findByCreatedAt(); //update - Optional update(Voucher voucher); + void update(Voucher voucher); //delete - id - - Optional deleteById(UUID voucherId); + int deleteById(UUID voucherId); //delete - all void deleteAll(); + + boolean checkVoucherId(UUID voucherId); + } diff --git a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java index 32f7288898..5a972fa4cf 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java @@ -8,14 +8,15 @@ import com.prgrms.springbootbasic.repository.customer.CustomerRepository; import java.time.LocalDateTime; import java.util.List; +import java.util.NoSuchElementException; import java.util.Optional; import java.util.UUID; import java.util.stream.Collectors; -import lombok.RequiredArgsConstructor; +import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; @Service -@RequiredArgsConstructor +@AllArgsConstructor public class CustomerService { private CustomerRepository customerRepository; @@ -53,12 +54,13 @@ public CustomerListResponse findAllCustomers() { return new CustomerListResponse(customerResponseList); } - //조회(Read) - 생성일을 통해서 조회 - public CustomerResponse findByCreateAt(LocalDateTime createAt) { - Customer customer = customerRepository.findByCreateAt(createAt) - .orElseThrow(() -> new IllegalArgumentException("조회하시는 고객은 존재하지 않습니다.")); - return new CustomerResponse(customer.getCustomerId(), customer.getName(), customer.getEmail(), customer.getCreateAt()); + public CustomerListResponse findByCreateAt() { + List customers = customerRepository.findByCreatedAt(); + List customerResponseList = customers.stream() + .map(customer -> new CustomerResponse(customer.getCustomerId(), customer.getName(), customer.getEmail(), customer.getCreateAt())) + .collect(Collectors.toList()); + return new CustomerListResponse(customerResponseList); } //수정(Update) @@ -73,15 +75,21 @@ public void updateCustomer(CustomerUpdateRequest customerUpdateRequest) { customerRepository.update(customer); } - + //삭제(Delete) -id - public void deleteById(UUID voucherId) { - Optional deleteByIdCustomer = customerRepository.deleteById(customerId); - deleteByIdCustomer.orElseThrow(() -> new IllegalArgumentException("해당 고객은 존재하지 않습니다.")); + public int deleteById(UUID customerId) { + if (!customerRepository.checkCustomerId(customerId)) { + throw new NoSuchElementException("삭제하려는 고객의 ID는 존재하지 않습니다. 다시 확인 후, 입력해주세요"); + } + return customerRepository.deleteById(customerId); } //삭제(Delete) public void deleteAllCustomer() { customerRepository.deleteAll(); } + + public boolean checkCustomerId(UUID customerId) { + return customerRepository.checkCustomerId(customerId); + } } diff --git a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java index 3575f65a27..4e810ed5f2 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java @@ -7,19 +7,18 @@ import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import com.prgrms.springbootbasic.repository.voucher.VoucherRepository; import java.time.LocalDateTime; import java.util.List; +import java.util.NoSuchElementException; import java.util.Optional; import java.util.UUID; import java.util.stream.Collectors; import lombok.AllArgsConstructor; -import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service -@RequiredArgsConstructor @AllArgsConstructor public class VoucherService { @@ -51,11 +50,13 @@ public VoucherResponse findById(UUID voucherId) { return new VoucherResponse(voucher.getVoucherId(), voucher.getDiscount(), voucher.getVoucherType(), voucher.getCreatedAt()); } - //조회(Read) - 생성일을 통해서 조회 - public VoucherResponse findByCreateAt(LocalDateTime createAt) { - Voucher voucher = voucherRepository.findByCreatedAt(createAt) - .orElseThrow(() -> new IllegalArgumentException("조회하시는 Voucher는 존재하지 않습니다.")); - return new VoucherResponse(voucher.getVoucherId(), voucher.getDiscount(), voucher.getVoucherType(), voucher.getCreatedAt()); + //조회(Read) - 생성일순으로 조회 + public VoucherListResponse findByCreateAt() { + List vouchers = voucherRepository.findByCreatedAt(); + List voucherResponseList = vouchers.stream() + .map(voucher -> new VoucherResponse(voucher.getVoucherId(), voucher.getDiscount(), voucher.getVoucherType(), voucher.getCreatedAt())) + .collect(Collectors.toList()); + return new VoucherListResponse(voucherResponseList); } //조회(Read) - 바우처 타입별로 조회 @@ -83,29 +84,32 @@ public VoucherListResponse findAllVouchers() { //수정(Update) public void updateVoucher(VoucherUpdateRequest voucherUpdateRequest) { UUID voucherId = voucherUpdateRequest.getVoucherId(); + Optional storegedVoucher = voucherRepository.findById(voucherId); Voucher voucher = storegedVoucher.orElseThrow(() -> new IllegalArgumentException("해당 바우처는 존재하지 않습니다.")); - if (voucher.getVoucherType() == VoucherType.FIXED) { - FixedVoucher fixedVoucher = (FixedVoucher) voucher; - fixedVoucher.setDiscount(voucherUpdateRequest.getDiscount()); - } else if (voucher.getVoucherType() == VoucherType.RATE) { - RateVoucher rateVoucher = (RateVoucher) voucher; - rateVoucher.setDiscount(voucherUpdateRequest.getDiscount()); - } - + voucher = switch (voucher.getVoucherType()) { + case FIXED -> new FixedVoucher(voucher.getVoucherId(), voucherUpdateRequest.getDiscount(), voucher.getCreatedAt()); + case RATE -> new RateVoucher(voucher.getVoucherId(), voucherUpdateRequest.getDiscount(), voucher.getCreatedAt()); + }; voucherRepository.update(voucher); } //삭제(Delete) -id - public void deleteById(UUID voucherId) { - Optional deleteByIdVoucher = voucherRepository.deleteById(voucherId); - deleteByIdVoucher.orElseThrow(() -> new IllegalArgumentException("해당 바우처는 존재하지 않습니다.")); + public int deleteById(UUID voucherId) { + if (!voucherRepository.checkVoucherId(voucherId)) { + throw new NoSuchElementException("삭제하려는 바우처의 ID는 존재하지 않습니다. 다시 확인 후, 입력해주세요"); + } + return voucherRepository.deleteById(voucherId); } //삭제(Delete) public void deleteAllVoucher() { voucherRepository.deleteAll(); } + + public boolean checkVoucherId(UUID voucherId) { + return voucherRepository.checkVoucherId(voucherId); + } } diff --git a/src/main/java/com/prgrms/springbootbasic/view/Console.java b/src/main/java/com/prgrms/springbootbasic/view/Console.java index 42bf7da74d..287b9f2b83 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Console.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Console.java @@ -2,12 +2,13 @@ import com.prgrms.springbootbasic.dto.customer.request.CustomerCreateRequest; import com.prgrms.springbootbasic.dto.customer.request.CustomerUpdateRequest; +import com.prgrms.springbootbasic.dto.customer.response.CustomerListResponse; +import com.prgrms.springbootbasic.dto.customer.response.CustomerResponse; import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; -import com.prgrms.springbootbasic.enums.VoucherType; -import com.prgrms.springbootbasic.exception.Validator; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import java.time.LocalDateTime; import java.util.Scanner; import java.util.UUID; @@ -30,47 +31,32 @@ public String inputCommand() { @Override public VoucherCreateRequest inputVoucherCrateMessage(VoucherType type) { String inputDiscount = input.nextLine(); - - Validator.validateCreateVoucher(type, inputDiscount); return new VoucherCreateRequest(Long.parseLong(inputDiscount), type, LocalDateTime.now()); } //바우처 변경(Update) @Override public VoucherUpdateRequest inputVoucherUpdateMessage(UUID voucherId) { + System.out.print("변경할 금액 : "); String updateDiscount = input.nextLine(); - Validator.validateUpdateVoucher(updateDiscount); - VoucherType voucherType = VoucherType.valueOf(input.nextLine()); - - return new VoucherUpdateRequest(voucherId, Long.parseLong(updateDiscount), voucherType); - } - - @Override - public CustomerCreateRequest inputCustomerCreateMessage() { - return null; - } - - @Override - public CustomerUpdateRequest inputCustomerUpdateMessage(UUID cusomterId) { - return null; + return new VoucherUpdateRequest(voucherId, Long.parseLong(updateDiscount)); } @Override public UUID inputUUID() { - try { return UUID.fromString(input.nextLine()); } catch (IllegalArgumentException e) { - log.error("입력된 값은 UUID 형식이 아닐 수 있습니다. 다시 한 번 확인해보세요. {}", e.getMessage()); - throw new IllegalArgumentException("입력된 값은 UUID 형식이 아닐 수 있습니다. 다시 한 번 확인해보세요."); + log.error("입력된 값은 UUID 형식이 아닙니다.", e.getMessage()); + throw new IllegalArgumentException("입력된 값은 UUID 형식이 아닙니다. 다시 한 번 확인해보세요."); } } - //Output @Override public void printConsoleMenu() { + System.out.println(); System.out.println("==== Voucher Program ===="); System.out.println(" 다음 아래의 3개의 프로그램 명령 중 하나를 선택해주세요."); System.out.println("Voucher : 바우처 관련 프로그램 시작"); @@ -81,6 +67,7 @@ public void printConsoleMenu() { @Override public void printVoucherMenu() { + System.out.println(); System.out.println("==== Voucher Program ===="); System.out.println("바우처 관련 프로그램을 시작합니다."); System.out.println("다음의 명령어 Create, Select, Update, Delete 중 하나를 입력해주세요."); @@ -102,6 +89,7 @@ public void printVoucherCreateTypeMenu() { @Override public void printVoucherCreateDiscountMenu() { + System.out.println(); System.out.println("==== Voucher 생성 작업 ==== "); System.out.println("생성할 바우처의 종류에 따른 입력 금액을 확인 후, 입력해 주세요!"); System.out.println("정액 할인 바우처(고정 금액 할인)의 경우, 0이하의 숫자를 제외한 금액을 입력할 수 있습니다."); @@ -111,6 +99,7 @@ public void printVoucherCreateDiscountMenu() { @Override public void printVoucherSelectMenu() { + System.out.println(); System.out.println("==== Voucher 조회 작업 ==== "); System.out.println("바우처의 다음의 조회 방법에 대해서 확인 후, 입력해 주세요! "); System.out.println("All : 모든 바우처를 조회"); @@ -121,8 +110,9 @@ public void printVoucherSelectMenu() { } @Override - public void printVoucherSelectAll(VoucherListResponse voucherListResponse) { + public void printVoucherSelectBYAll(VoucherListResponse voucherListResponse) { for (VoucherResponse voucherResponse : voucherListResponse.getVoucherResponseList()) { + System.out.println(); System.out.println("==== Voucher 조회 작업 ==== "); System.out.println("저장된 모든 바우처를 조회를 수행합니다."); System.out.println("바우처 ID : " + voucherResponse.getVoucherId()); @@ -134,8 +124,9 @@ public void printVoucherSelectAll(VoucherListResponse voucherListResponse) { } @Override - public void printVoucherSelectTypeList(VoucherListResponse voucherListResponse) { + public void printVoucherSelectByTypeList(VoucherListResponse voucherListResponse) { for (VoucherResponse voucherResponse : voucherListResponse.getVoucherResponseList()) { + System.out.println(); System.out.println("==== Voucher 조회 작업 ==== "); System.out.println(" 저장된 바우처를 타입별 조회를 수행합니다."); System.out.println(); @@ -148,7 +139,8 @@ public void printVoucherSelectTypeList(VoucherListResponse voucherListResponse) } @Override - public void printVoucherSelectType() { + public void printVoucherSelectByType() { + System.out.println(); System.out.println("==== Voucher 조회 작업 ==== "); System.out.println("조회할 바우처의 Type을 입력해주세요!"); System.out.println("fixed : 정액 할인 바우처(고정 금액 할인)"); @@ -157,15 +149,16 @@ public void printVoucherSelectType() { } @Override - public void printVoucherSelectId() { + public void printVoucherSelectById() { + System.out.println(); System.out.println("==== Voucher 조회 작업 ==== "); System.out.println("조회할 바우처의 ID를 입력해주세요!"); System.out.print("input : "); } - @Override - public void printVoucherSelectCreateAt() { + public void printVoucherSelectByCreateAt(VoucherListResponse voucherListResponse) { + System.out.println(); System.out.println("==== Voucher 조회 작업 ==== "); System.out.println("바우처를 생성일순으로 조회합니다."); System.out.println(); @@ -173,18 +166,21 @@ public void printVoucherSelectCreateAt() { @Override public void printVoucherUpdateMenu() { + System.out.println(); System.out.println("==== Voucher 수정 작업 ==== "); System.out.println("바우처 수정을 선택하셨습니다."); } @Override - public void printVoucherUpdateId() { + public void printVoucherUpdateById() { + System.out.println(); System.out.println("수정할 바우처의 ID를 입력해주세요."); System.out.print("input : "); } @Override public void printVoucherDeleteMenu() { + System.out.println(); System.out.println("==== Voucher 삭제 작업 ==== "); System.out.println("바우처 삭제를 작업을 선택하셨습니다."); System.out.println(); @@ -193,20 +189,130 @@ public void printVoucherDeleteMenu() { System.out.print("input : "); } + @Override + public void printVoucherDeleteById() { + System.out.println("삭제할 바우처의 ID를 입력해주세요."); + System.out.print("input: "); + } + @Override public void printVoucherDeleteAll() { - System.out.println("==== Voucher 삭제 작업 ==== "); System.out.println("모든 바우처들을 삭제를 선택하셨습니다!"); } + + //고객 관련 메뉴들 @Override public void printCustomerMenu() { - System.out.println("고객 관련 프로그램 메뉴입니다."); - System.out.println("아래의 명령어(Create,Read,Update,Delete) 중 하나를 입력해주세요"); + System.out.println(); + System.out.println("==== Customer 프로그램 작업 ==== "); + ; + System.out.println("아래의 명령어(Create,Select,Update,Delete) 중 하나를 입력해주세요"); System.out.println("고객 생성: Create"); - System.out.println("고객 조회: Read"); + System.out.println("고객 조회: Select"); System.out.println("고객 변경: Update"); System.out.println("고객 삭제: Delete"); + System.out.print("input : "); + } + + + @Override + public void printCustomerCreateMenu() { + System.out.println(); + System.out.println("==== Customer 생성 작업 ===="); + System.out.println("반드시 다음과 같은 순서로 입력해주세요!"); + System.out.println("1.고객 이름(Name)"); + System.out.println("2.고객 이메일(Email)"); + } + + @Override + public void printCustomerSelectMenu() { + System.out.println(); + System.out.println("==== Customer 조회 작업 ==== "); + System.out.println("고객 조회에 대해서 다음의 방법을 확인 후, 입력해 주세요! "); + System.out.println("ID : 고객의 ID로 조회"); + System.out.println("CreatedAt : 고객의 생성일 순으로 조회 "); + System.out.println("ALL: 모든 고객을 조회"); + System.out.print("input: "); + } + + @Override + public void printCustomerSelectAll(CustomerListResponse customerListResponse) { + for (CustomerResponse customerResponse : customerListResponse.getCustomerResponseList()) { + System.out.println(); + System.out.println("==== Customer 조회 작업 ==== "); + System.out.println("저장된 모든 고객을 조회를 수행합니다."); + System.out.println("고객 ID : " + customerResponse.getCustomerId()); + System.out.println("고객 Name : " + customerResponse.getCustomerName()); + System.out.println("고객 Email : " + customerResponse.getCustomerEmail()); + System.out.println("고객 생성일 :" + customerResponse.getCreateAt()); + System.out.println(); + } + } + + + @Override + public void printCustomerSelectById() { + System.out.println(); + System.out.println("==== Customer 조회 작업 ==== "); + System.out.println("조회할 고객의 ID를 입력해주세요!"); + System.out.print("input : "); + } + + @Override + public void printCutomerSelectByCreatedAt() { + System.out.println(); + System.out.println("==== Customer 조회 작업 ==== "); + System.out.println("고객을 생성일순으로 조회합니다."); + System.out.println(); + } + + + //고객 수정(Update) - 메뉴 + public CustomerUpdateRequest inputCustomerUpdateMessage(UUID customerId) { + System.out.print("변경할 이름 : "); + String updateCustomerName = input.nextLine(); + + System.out.print("변경할 이메일 : "); + String updateCustomerEmail = input.nextLine(); + + // 업데이트 요청 객체 반환 + return new CustomerUpdateRequest(customerId, updateCustomerName, updateCustomerEmail); + } + + @Override + public void printCustomerUpdateByID() { + System.out.println(); + System.out.println("수정햘 고객의 ID를 입력해주세요."); + System.out.print("input : "); + } + + //고객 - 삭제 메뉴 + @Override + public void printCustomerDeleteMenu() { + System.out.println(); + System.out.println("==== Customer 삭제 작업 ==== "); + System.out.println("고객 삭제 작업을 선택하셨습니다."); + System.out.println(); + System.out.println("ID: 고객의 ID를 통해 해당 바우처 삭제"); + System.out.println("ALL : 모든 고객을 삭제 "); + System.out.print("input : "); + } + + //고객 삭제 -ID + @Override + public void printCustomerDeleteByID() { + System.out.println(); + System.out.println("삭제할 고객의 ID를 입력해주세요."); + System.out.print("input : "); + } + + //고객 삭제 - All + @Override + public void printCustomerDeleteByAll() { + System.out.println(); + System.out.println("==== Customer 삭제 작업 ==== "); + System.out.println("모든 고객 삭제를 선택하셨습니다!"); } @Override @@ -223,4 +329,27 @@ public void printErrorMessage(String message) { public void printCompleteMessage() { System.out.println("정상적으로 해당 작업이 완료되었습니다!"); } + + public void printCustomerSelectByCreatedAt(CustomerListResponse customerListResponse) { + for (CustomerResponse customerResponse : customerListResponse.getCustomerResponseList()) { + System.out.println(); + System.out.println("==== 고객 조회 작업(생성일 순) ==== "); + System.out.println("저장된 모든 고객를 조회를 수행합니다."); + System.out.println("고객 ID : " + customerResponse.getCustomerId()); + System.out.println("고객 이름 : " + customerResponse.getCustomerName()); + System.out.println("고객 이메일 : " + customerResponse.getCustomerEmail()); + System.out.println("고객 생성일 :" + customerResponse.getCreateAt()); + System.out.println(); + } + } + + @Override + public CustomerCreateRequest inputCustomerCreateMessage() { + System.out.print("input(이름) : "); + String inputCustomerName = input.nextLine(); + + System.out.print("input(Email) : "); + String inputCustomerEmail = input.nextLine(); + return new CustomerCreateRequest(inputCustomerName, inputCustomerEmail, LocalDateTime.now()); + } } diff --git a/src/main/java/com/prgrms/springbootbasic/view/Input.java b/src/main/java/com/prgrms/springbootbasic/view/Input.java index 2a93d7bbc5..cf1396ea99 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Input.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Input.java @@ -4,7 +4,7 @@ import com.prgrms.springbootbasic.dto.customer.request.CustomerUpdateRequest; import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; -import com.prgrms.springbootbasic.enums.VoucherType; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; import java.util.UUID; public interface Input { @@ -20,7 +20,7 @@ public interface Input { //고객 생성(Create) CustomerCreateRequest inputCustomerCreateMessage(); - + //고객 변경(Update) CustomerUpdateRequest inputCustomerUpdateMessage(UUID cusomterId); diff --git a/src/main/java/com/prgrms/springbootbasic/view/Output.java b/src/main/java/com/prgrms/springbootbasic/view/Output.java index f5d47f559b..9a75fa5230 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Output.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Output.java @@ -1,12 +1,13 @@ package com.prgrms.springbootbasic.view; +import com.prgrms.springbootbasic.dto.customer.response.CustomerListResponse; import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; public interface Output { void printConsoleMenu(); - //바우처 관련 + //바우처 관련 메뉴 void printVoucherMenu(); //바우처 생성 - 타입 @@ -19,35 +20,69 @@ public interface Output { void printVoucherSelectMenu(); //바우처 조회 - 모든 - void printVoucherSelectAll(VoucherListResponse voucherListResponse); + void printVoucherSelectBYAll(VoucherListResponse voucherListResponse); //바우처 조회 - 타입별 - void printVoucherSelectTypeList(VoucherListResponse voucherListResponse); + void printVoucherSelectByTypeList(VoucherListResponse voucherListResponse); - void printVoucherSelectType(); + void printVoucherSelectByType(); //바우처 조회 - ID조회 - void printVoucherSelectId(); + void printVoucherSelectById(); //바우처 조회 - 생성기간 - void printVoucherSelectCreateAt(); + void printVoucherSelectByCreateAt(VoucherListResponse voucherListResponse); //바우처 변경 - 메뉴 void printVoucherUpdateMenu(); //바우처 변경 - Id - void printVoucherUpdateId(); + void printVoucherUpdateById(); - //바우처 삭제 - ID + //바우처 삭제 - 메뉴 void printVoucherDeleteMenu(); + //바우처 삭제 - ID + void printVoucherDeleteById(); + //바우처 삭제 - 모든 바우처 삭제 void printVoucherDeleteAll(); - //고객 관련 + //고객 관련 작업 메뉴 void printCustomerMenu(); + //고객 생성 - 안내 + void printCustomerCreateMenu(); + + //고객 조회 - 메뉴 + void printCustomerSelectMenu(); + + //고객 조회 - 모든 + void printCustomerSelectAll(CustomerListResponse customerListResponse); + + //고객 조회 - ID + void printCustomerSelectById(); + + //고객 조회 - 생성일 + void printCutomerSelectByCreatedAt(); + + //고객 변경 - 메뉴 +// void printCustomerUpdateMenu(); + + //고객 변경 - ID + void printCustomerUpdateByID(); + + //고객 삭제 - 메뉴 + void printCustomerDeleteMenu(); + + //고객 삭제 - ID + void printCustomerDeleteByID(); + + //고객 삭제 - ALL + void printCustomerDeleteByAll(); + + //Exit시 출력문 void printExitMessage(); @@ -56,5 +91,4 @@ public interface Output { //작업 완료문 void printCompleteMessage(); - } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b13789179..95be6f9412 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,4 @@ - +spring.datasource.url=jdbc:mysql://localhost:3306/springboot_basic +spring.datasource.username=root +spring.datasource.password=sohjaehoon1 +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml index 12e7eee709..65769a7367 100644 --- a/src/main/resources/logback.xml +++ b/src/main/resources/logback.xml @@ -12,11 +12,11 @@ - + - + diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index c25e84b73a..1c84009b14 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -1,5 +1,5 @@ use springboot_basic; -# drop table if exists vouchers; +#drop table if exists vouchers; create table vouchers ( voucher_id varchar(50) primary key, @@ -7,7 +7,7 @@ create table vouchers voucher_type varchar(30) not null, voucher_createdAt TIMESTAMP not null ); -# drop table if exists customers; +#drop table if exists customers; create table customers ( customer_id varchar(50) primary key, From cd1819392066f53783c39334b6264e78ea9c01cf Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:17:56 +0900 Subject: [PATCH 117/157] =?UTF-8?q?Chore:=20h2=20DB=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=B6=94=EA=B0=80,=20mysql=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 675eaf39e9..1e653b37f4 100644 --- a/build.gradle +++ b/build.gradle @@ -31,12 +31,12 @@ dependencies { implementation 'ch.qos.logback:logback-classic:1.2.6' implementation 'ch.qos.logback:logback-core:1.2.6' //mysql연결 - implementation 'mysql:mysql-connector-java:8.0.26' + //implementation 'mysql:mysql-connector-java:8.0.26' implementation 'org.springframework.boot:spring-boot-starter-jdbc' -// runtimeOnly 'com.h2database:h2' + runtimeOnly 'com.h2database:h2' } From a68efd6db466acd5b36c778443abe2db9f460731 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:18:51 +0900 Subject: [PATCH 118/157] =?UTF-8?q?rm:=20application.properties=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.properties | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 src/main/resources/application.properties diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties deleted file mode 100644 index 95be6f9412..0000000000 --- a/src/main/resources/application.properties +++ /dev/null @@ -1,4 +0,0 @@ -spring.datasource.url=jdbc:mysql://localhost:3306/springboot_basic -spring.datasource.username=root -spring.datasource.password=sohjaehoon1 -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver From 8d01a64e5287dfeeb10b49ecddb0d5cf7caa6505 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:19:06 +0900 Subject: [PATCH 119/157] =?UTF-8?q?feat:=20application.yaml=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/main/resources/application.yaml diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml new file mode 100644 index 0000000000..c5360cce9f --- /dev/null +++ b/src/main/resources/application.yaml @@ -0,0 +1,9 @@ +spring: + datasource: + driver-class-name: org.h2.Driver + url: jdbc:h2:mem:springboot_basic; + username: sa + password: + sql: + init: + mode: always From 7f1413ddb58d3c88fde6011609d3d61926a66f00 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:19:36 +0900 Subject: [PATCH 120/157] =?UTF-8?q?refactoring:CustomerController=EC=9D=98?= =?UTF-8?q?=20create=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/customer/CustomerController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java b/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java index 964408f1f1..6c338b8fcc 100644 --- a/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java +++ b/src/main/java/com/prgrms/springbootbasic/controller/customer/CustomerController.java @@ -16,8 +16,8 @@ public class CustomerController { private final CustomerService customerService; //(Create)고객 생성 - public void create(CustomerCreateRequest customerCreateRequest) { - customerService.createCustomer(customerCreateRequest); + public CustomerResponse create(CustomerCreateRequest customerCreateRequest) { + return customerService.createCustomer(customerCreateRequest); } //(Read) 고객의 모든 리스트 출력 @@ -46,13 +46,13 @@ public void update(CustomerUpdateRequest customerUpdateRequset) { public int deleteById(UUID customerId) { return customerService.deleteById(customerId); } - + //(Delete) 모든 고객 내용 삭제 public void deleteAll() { customerService.deleteAllCustomer(); } public boolean checkCustomerId(UUID voucherId) { - return customerService.checkCustomerId(voucherId); + return customerService.existById(voucherId); } } \ No newline at end of file From 417a24fcbc70b6d69d84f65e5105d2a434c2c886 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:20:11 +0900 Subject: [PATCH 121/157] =?UTF-8?q?refactor:=20VoucherController=EC=9D=98?= =?UTF-8?q?=20create=EB=A9=94=EC=86=8C=EB=93=9C=20refactoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/voucher/VoucherController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java index 6a24d41366..17f320d58e 100644 --- a/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java +++ b/src/main/java/com/prgrms/springbootbasic/controller/voucher/VoucherController.java @@ -17,8 +17,8 @@ public class VoucherController { private final VoucherService voucherService; //(Create)바우처 생성 - public void create(VoucherCreateRequest voucherCreateRequest) { - voucherService.createVoucher(voucherCreateRequest); + public VoucherResponse create(VoucherCreateRequest voucherCreateRequest) { + return voucherService.createVoucher(voucherCreateRequest); } //(Read) 바우처의 모든 리스트 출력 @@ -57,6 +57,6 @@ public void deleteAll() { } public boolean checkVoucherId(UUID voucherId) { - return voucherService.checkVoucherId(voucherId); + return voucherService.existById(voucherId); } } From 8391d8d47e02217877236a6b3e1a9d0dbada81b3 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:22:14 +0900 Subject: [PATCH 122/157] =?UTF-8?q?refactor:=20CustomerService=EC=9D=98=20?= =?UTF-8?q?create=EB=A9=94=EC=86=8C=EB=93=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/customer/CustomerService.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java index 5a972fa4cf..559c3a242f 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/customer/CustomerService.java @@ -22,13 +22,14 @@ public class CustomerService { private CustomerRepository customerRepository; //생성(create) - public Customer createCustomer(CustomerCreateRequest customerCreateRequest) { + public CustomerResponse createCustomer(CustomerCreateRequest customerCreateRequest) { String name = customerCreateRequest.getName(); String email = customerCreateRequest.getEmail(); LocalDateTime createAt = customerCreateRequest.getCreateAt() == null ? LocalDateTime.now() : customerCreateRequest.getCreateAt(); Customer customer = new Customer(UUID.randomUUID(), name, email, createAt); - return customerRepository.save(customer); + Customer savedCustomer = customerRepository.save(customer); + return new CustomerResponse(savedCustomer.getCustomerId(), savedCustomer.getName(), savedCustomer.getEmail(), savedCustomer.getCreateAt()); } //조회(Read) - id를 통해서 조회 @@ -75,7 +76,7 @@ public void updateCustomer(CustomerUpdateRequest customerUpdateRequest) { customerRepository.update(customer); } - + //삭제(Delete) -id public int deleteById(UUID customerId) { if (!customerRepository.checkCustomerId(customerId)) { @@ -89,7 +90,7 @@ public void deleteAllCustomer() { customerRepository.deleteAll(); } - public boolean checkCustomerId(UUID customerId) { + public boolean existById(UUID customerId) { return customerRepository.checkCustomerId(customerId); } } From 29c9377f68df71973c86cdf6aa1cc2c7419c689f Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:23:35 +0900 Subject: [PATCH 123/157] =?UTF-8?q?refactor:VoucherService=20create=20?= =?UTF-8?q?=EB=A9=94=EC=86=8C=EB=93=9C=20refactoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/voucher/VoucherService.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java index 4e810ed5f2..c1356e25c2 100644 --- a/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java +++ b/src/main/java/com/prgrms/springbootbasic/service/voucher/VoucherService.java @@ -9,7 +9,6 @@ import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; import com.prgrms.springbootbasic.enums.voucher.VoucherType; import com.prgrms.springbootbasic.repository.voucher.VoucherRepository; -import java.time.LocalDateTime; import java.util.List; import java.util.NoSuchElementException; import java.util.Optional; @@ -25,17 +24,18 @@ public class VoucherService { private VoucherRepository voucherRepository; //생성(create) - public Voucher createVoucher(VoucherCreateRequest voucherCreateRequest) { + public VoucherResponse createVoucher(VoucherCreateRequest voucherCreateRequest) { try { long discount = voucherCreateRequest.getDiscount(); VoucherType type = voucherCreateRequest.getType(); - LocalDateTime createAt = voucherCreateRequest.getCreateAt() == null ? LocalDateTime.now() : voucherCreateRequest.getCreateAt(); Voucher voucher = switch (type) { case FIXED -> new FixedVoucher(discount); case RATE -> new RateVoucher(discount); }; - return voucherRepository.save(voucher); + + Voucher savedVoucher = voucherRepository.save(voucher); + return new VoucherResponse(savedVoucher.getVoucherId(), savedVoucher.getDiscount(), savedVoucher.getVoucherType(), savedVoucher.getCreatedAt()); } catch (IllegalArgumentException e) { System.out.println(e.getMessage()); throw e; @@ -109,7 +109,7 @@ public void deleteAllVoucher() { voucherRepository.deleteAll(); } - public boolean checkVoucherId(UUID voucherId) { + public boolean existById(UUID voucherId) { return voucherRepository.checkVoucherId(voucherId); } } From fd8fa6d8fb41babaa195bb7854d9f2e836dcd45b Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:24:53 +0900 Subject: [PATCH 124/157] =?UTF-8?q?refactor:=20=EC=8A=A4=ED=8E=A0=EB=A7=81?= =?UTF-8?q?=20=EC=98=A4=EB=A5=98=20refactoring?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/prgrms/springbootbasic/view/Console.java | 2 +- src/main/java/com/prgrms/springbootbasic/view/Input.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/view/Console.java b/src/main/java/com/prgrms/springbootbasic/view/Console.java index 287b9f2b83..1b3268afb5 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Console.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Console.java @@ -29,7 +29,7 @@ public String inputCommand() { //바우처 생성(Create) @Override - public VoucherCreateRequest inputVoucherCrateMessage(VoucherType type) { + public VoucherCreateRequest inputVoucherCreateMessage(VoucherType type) { String inputDiscount = input.nextLine(); return new VoucherCreateRequest(Long.parseLong(inputDiscount), type, LocalDateTime.now()); } diff --git a/src/main/java/com/prgrms/springbootbasic/view/Input.java b/src/main/java/com/prgrms/springbootbasic/view/Input.java index cf1396ea99..54f22c2bfb 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Input.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Input.java @@ -13,7 +13,7 @@ public interface Input { String inputCommand(); //바우처 생성(Create) - VoucherCreateRequest inputVoucherCrateMessage(VoucherType type); + VoucherCreateRequest inputVoucherCreateMessage(VoucherType type); //바우처 변경(Update) VoucherUpdateRequest inputVoucherUpdateMessage(UUID voucherId); From 1b36080318e4f7d34eb701d12cb9a097dda79e50 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:25:25 +0900 Subject: [PATCH 125/157] refactor: VoucherRepository refactoring --- .../repository/voucher/MemoryVoucherRepository.java | 4 ++-- .../repository/voucher/VoucherJdbcRepository.java | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java index d334c3bd70..8e01b6aee2 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/MemoryVoucherRepository.java @@ -10,10 +10,10 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Repository; -//@Repository +@Repository @Slf4j - public class MemoryVoucherRepository implements VoucherRepository { private final Map storage = new ConcurrentHashMap<>(); diff --git a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java index 0610956196..51bcaf66c2 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepository.java @@ -20,7 +20,6 @@ @Repository @Slf4j @Primary -//@Profile({"local", "test"}) public class VoucherJdbcRepository implements VoucherRepository { private final NamedParameterJdbcTemplate template; @@ -130,7 +129,7 @@ public boolean checkVoucherId(UUID voucherId) { } private RowMapper voucherRowMapper() { - RowMapper voucherRowMapper = (resultSet, rowMap) -> { + return (resultSet, rowMap) -> { UUID voucherId = UUID.fromString(resultSet.getString("voucher_id")); long discount = Long.parseLong(resultSet.getString("discount")); VoucherType voucherType = VoucherType.valueOf(resultSet.getString("voucher_type").toUpperCase()); @@ -158,6 +157,5 @@ public LocalDateTime getCreatedAt() { } }; }; - return voucherRowMapper; } } From 8eed83822d13b98a6a0148d93464d1ef4ffb0e52 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:26:00 +0900 Subject: [PATCH 126/157] refactoring: Output refactoring --- src/main/java/com/prgrms/springbootbasic/view/Output.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/view/Output.java b/src/main/java/com/prgrms/springbootbasic/view/Output.java index 9a75fa5230..8de09e5cfa 100644 --- a/src/main/java/com/prgrms/springbootbasic/view/Output.java +++ b/src/main/java/com/prgrms/springbootbasic/view/Output.java @@ -67,8 +67,6 @@ public interface Output { //고객 조회 - 생성일 void printCutomerSelectByCreatedAt(); - //고객 변경 - 메뉴 -// void printCustomerUpdateMenu(); //고객 변경 - ID void printCustomerUpdateByID(); From aece8494e94f468380bc6558d3b75c8186228c27 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:26:27 +0900 Subject: [PATCH 127/157] =?UTF-8?q?refactor:=20ConsoleCustomer=20=EB=A6=AC?= =?UTF-8?q?=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/prgrms/springbootbasic/ConsoleCustomer.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleCustomer.java b/src/main/java/com/prgrms/springbootbasic/ConsoleCustomer.java index 83d4c5f7f7..c393f805cf 100644 --- a/src/main/java/com/prgrms/springbootbasic/ConsoleCustomer.java +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleCustomer.java @@ -110,7 +110,9 @@ private void deleteCustomer() { } if (customerController.deleteById(customerId) == 0) { console.printErrorMessage(customerId + " 삭제하려는 고객이 저장되어있지 않아 삭제할 수 없습니다."); + return; } + console.printCompleteMessage(); } case ALL -> { console.printCustomerDeleteByAll(); From 6e42178d35ba0985693becc2f188b8f76d2f61c9 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:26:48 +0900 Subject: [PATCH 128/157] refactor: ConsoleApplciation refactoring --- .../com/prgrms/springbootbasic/ConsoleApplication.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java index d75ca60e67..d43d31c518 100644 --- a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java @@ -32,13 +32,9 @@ public void run(String... args) throws Exception { } } } catch (IllegalArgumentException e) { - log.error("명령어가 잘못 입력되었습니다.", e); - log.error("에러 메시지: {}", e.getMessage()); - log.error("Stack Trace: ", e); + log.error("명령어가 잘못 입력되었습니다.", e.getMessage()); } catch (Exception e) { - log.error("프로그램에서 오류가 발생하였습니다.", e); - log.error("에러 메시지: {}", e.getMessage()); - log.error("Stack Trace: ", e); + log.error("프로그램에서 오류가 발생하였습니다.", e.getMessage()); } } } From 4b9625c28d7fb771a1d0c3ef49154f1079b57332 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:27:09 +0900 Subject: [PATCH 129/157] refactor: ConsoleVoucher refactoring --- src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java b/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java index e8b7eca1f5..e2719abb26 100644 --- a/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleVoucher.java @@ -41,7 +41,7 @@ private void createVoucher() { VoucherType type = VoucherType.of(console.inputCommand()); console.printVoucherCreateDiscountMenu(); - VoucherCreateRequest createRequest = console.inputVoucherCrateMessage(type); + VoucherCreateRequest createRequest = console.inputVoucherCreateMessage(type); voucherController.create(createRequest); console.printCompleteMessage(); From cde2b2656dc77095646684a81d433e17fb9c5569 Mon Sep 17 00:00:00 2001 From: jay-so Date: Mon, 17 Jul 2023 23:27:26 +0900 Subject: [PATCH 130/157] =?UTF-8?q?refactor:=20schema.sql=20=EC=A3=BC?= =?UTF-8?q?=EC=84=9D=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/schema.sql | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index 1c84009b14..1b1ba74034 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -1,5 +1,3 @@ -use springboot_basic; -#drop table if exists vouchers; create table vouchers ( voucher_id varchar(50) primary key, @@ -7,7 +5,6 @@ create table vouchers voucher_type varchar(30) not null, voucher_createdAt TIMESTAMP not null ); -#drop table if exists customers; create table customers ( customer_id varchar(50) primary key, From 9540fc5a2ec2b8f8ca0e6334f7113d6df582fa51 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 00:38:04 +0900 Subject: [PATCH 131/157] refactor:CustomerJdbcRepsoitory refactoring --- .../repository/customer/CustomerJdbcRepository.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java index 97f7f8f8be..1a86d6f92b 100644 --- a/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java +++ b/src/main/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepository.java @@ -18,7 +18,6 @@ @Repository @Slf4j @Primary -//@Profile({"local", "test"}) public class CustomerJdbcRepository implements CustomerRepository { private final NamedParameterJdbcTemplate template; From 77650ebf2d1da8869b639bd556e97362340ac9da Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 16:34:30 +0900 Subject: [PATCH 132/157] =?UTF-8?q?Chore:=20ParameterizedTest=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=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 --- build.gradle | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 1e653b37f4..6d6c8ba179 100644 --- a/build.gradle +++ b/build.gradle @@ -27,18 +27,14 @@ dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' + //ParameterizedTest의존성 추가 + testImplementation 'org.junit.jupiter:junit-jupiter-params:5.8.1' //Logback 설정 implementation 'ch.qos.logback:logback-classic:1.2.6' implementation 'ch.qos.logback:logback-core:1.2.6' - //mysql연결 - //implementation 'mysql:mysql-connector-java:8.0.26' - - implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' - - } tasks.named('test') { From 3caf6f10a7bdf7dacce8c8a7ee98b53f23d3137a Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 16:35:50 +0900 Subject: [PATCH 133/157] refactor: FixedVoucherTest refactoring --- .../domain/voucher/FixedVoucherTest.java | 89 +++++++++---------- 1 file changed, 42 insertions(+), 47 deletions(-) diff --git a/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java index fa781c3b63..9824fab948 100644 --- a/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java +++ b/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java @@ -1,79 +1,74 @@ package com.prgrms.springbootbasic.domain.voucher; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; -import com.prgrms.springbootbasic.enums.VoucherType; -import java.time.LocalDateTime; -import java.util.UUID; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; +import org.hamcrest.Matchers; import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; class FixedVoucherTest { - //FixedVoucher 클래스의 메소드 테스트 + //해피케이스 테스트 - Hamcrest 테스트 @Test - @DisplayName("Fixed Voucher 금액 생성 확인 테스트") - void validDiscount() { + @DisplayName("고정 할인(Fixed) 바우처 생성 테스트") + void createFixedVoucherTest() { //given - long validDiscount = 10000; + long discount = 10000; //when - FixedVoucher fixedVoucher = new FixedVoucher(validDiscount); + FixedVoucher voucher = new FixedVoucher(discount); //then - assertEquals(validDiscount, fixedVoucher.getDiscount()); - + assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); + assertThat(voucher.getVoucherType(), Matchers.equalTo(VoucherType.FIXED)); } - @Test - @DisplayName("바우처 생성 시 ID값이 null이 아닌지 테스트") - void getVoucherId() { - //given - FixedVoucher fixedVoucher = new FixedVoucher(10000); + //엣지 케이스 테스트 - Nested클래스 + // 사용 0이하의 금액이 들어왔을 때 테스트, 0초과의 금액이 들어왔을 때의 테스트 - //when - UUID voucherId = fixedVoucher.getVoucherId(); + @Nested + @DisplayName("고정 할인(Fixed) 바우처의 Validation 확인 테스트") + class checkFixedValidationTest { - //then - assertNotNull(voucherId); - } + @Test + @DisplayName("금액이 0 이하일 경우") + void invalidDiscountTest() { + long discount = -1000L; - @Test - @DisplayName("0이하의 금액이 입력될 경우 테스트") - void getDiscount() { - //given - long invalidDiscount = 0; + //then + assertThrows(IllegalArgumentException.class, () -> new FixedVoucher(discount)); + } - //when + @Test + @DisplayName("금액이 0 초과일 경우") + void validDiscountTest() { + long discount = 2000L; - //then - assertThrows(IllegalArgumentException.class, () -> new FixedVoucher(invalidDiscount)); - } + //when + FixedVoucher voucher = new FixedVoucher(discount); - @Test - @DisplayName("바우처 생성 시 Type이 정상적으로 FIXED로 분류되는지 테스트") - void getVoucherType() { - //given - FixedVoucher fixedVoucher = new FixedVoucher(10000); - - //when - - //then - assertEquals(VoucherType.FIXED, fixedVoucher.getVoucherType()); + //then + assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); + } } - @Test - @DisplayName("바우처 생성 시 CreateAt이 정상적으로 생성되는지 테스트") - void getCreatedAt() { + + //해피케이스 테스트 - Hamcrest 테스트 + @DisplayName("여러 개의 고정 할인(fixed) 바우처 생성 테스트") + @ParameterizedTest + @CsvSource(value = {"1000", "5000", "10000"}) + void createMultiFixcedVoucherTest(long discount) { //given - FixedVoucher fixedVoucher = new FixedVoucher(10000); //when - LocalDateTime createdAt = fixedVoucher.getCreatedAt(); + FixedVoucher voucher = new FixedVoucher(discount); //then - assertNotNull(createdAt); + assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); } } \ No newline at end of file From 3ba1020fcc644e321dcbbc668a17435054de9667 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 16:45:59 +0900 Subject: [PATCH 134/157] refactor:FixedVoucherTest refactoring --- .../springbootbasic/domain/voucher/FixedVoucherTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java index 9824fab948..01e7f85e5f 100644 --- a/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java +++ b/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java @@ -24,8 +24,10 @@ void createFixedVoucherTest() { FixedVoucher voucher = new FixedVoucher(discount); //then + assertThat(voucher.getVoucherId(), Matchers.notNullValue()); assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); assertThat(voucher.getVoucherType(), Matchers.equalTo(VoucherType.FIXED)); + assertThat(voucher.getCreatedAt(), Matchers.notNullValue()); } //엣지 케이스 테스트 - Nested클래스 @@ -69,6 +71,9 @@ void createMultiFixcedVoucherTest(long discount) { FixedVoucher voucher = new FixedVoucher(discount); //then + assertThat(voucher.getVoucherId(), Matchers.notNullValue()); assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); + assertThat(voucher.getVoucherType(), Matchers.equalTo(VoucherType.FIXED)); + assertThat(voucher.getCreatedAt(), Matchers.notNullValue()); } } \ No newline at end of file From 3e1fecc9a81320f643d8d3148be84ca8cdbaa06f Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 16:53:11 +0900 Subject: [PATCH 135/157] refactor:FixedVoucherTest refactoring --- .../springbootbasic/domain/voucher/FixedVoucherTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java index 01e7f85e5f..aed4a80e81 100644 --- a/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java +++ b/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java @@ -40,7 +40,8 @@ class checkFixedValidationTest { @Test @DisplayName("금액이 0 이하일 경우") void invalidDiscountTest() { - long discount = -1000L; + //given + long discount = -1000; //then assertThrows(IllegalArgumentException.class, () -> new FixedVoucher(discount)); @@ -49,7 +50,8 @@ void invalidDiscountTest() { @Test @DisplayName("금액이 0 초과일 경우") void validDiscountTest() { - long discount = 2000L; + //given + long discount = 2000; //when FixedVoucher voucher = new FixedVoucher(discount); From 74c8884a0ac58601c8b51cd922de725a0ec3221d Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 16:53:30 +0900 Subject: [PATCH 136/157] refactor: RateVoucherTest refactoring --- .../domain/voucher/RateVoucherTest.java | 97 ++++++++++--------- 1 file changed, 52 insertions(+), 45 deletions(-) diff --git a/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java index 7f7d2dc118..834cb5cd7f 100644 --- a/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java +++ b/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java @@ -1,78 +1,85 @@ package com.prgrms.springbootbasic.domain.voucher; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; -import com.prgrms.springbootbasic.enums.VoucherType; -import java.time.LocalDateTime; -import java.util.UUID; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; +import org.hamcrest.Matchers; import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; class RateVoucherTest { - //RateVoucher 클래스의 모든 메소드 테스트 + //해피 케이스 테스트 - Hamcrest 테스트 @Test - @DisplayName("Rate Voucher 퍼센트 생성 확인 테스트") - void validDiscount() { + @DisplayName("정률 할인(Rate) 바우처 생성 테스트") + void createRateVoucherTest() { //given - long validDiscount = 60; + long discount = 70; //when - RateVoucher rateVoucher = new RateVoucher(validDiscount); + RateVoucher voucher = new RateVoucher(discount); //then - assertEquals(validDiscount, rateVoucher.getDiscount()); + assertThat(voucher.getVoucherId(), Matchers.notNullValue()); + assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); + assertThat(voucher.getVoucherType(), Matchers.equalTo(VoucherType.RATE)); + assertThat(voucher.getCreatedAt(), Matchers.notNullValue()); } - @Test - @DisplayName("바우처 생성 시 ID값이 null이 아닌지 테스트") - void getVoucherId() { + //엣지 케이스 테스트 - Nested 클래스 사용 + // 1~99이외의 퍼센트가 들어왔을 때의 테스트, 1~99범위의 테스트가 들와왔을 때 테스트 + @Nested + @DisplayName("정률 할인(Rate) 바우처의 Validation") + class checkRateValidationTest { //given - RateVoucher rateVoucher = new RateVoucher(60); - //when - UUID voucherId = rateVoucher.getVoucherId(); + @Test + @DisplayName("퍼센트가 1~99 이외 범위일 경우") + void invalidDiscountTest() { + //given + long discount = 100; - //then - assertNotNull(voucherId); - } + //then + assertThrows(IllegalArgumentException.class, () -> new RateVoucher(discount)); - @Test - @DisplayName("0이하의 퍼센트가 입력될 경우 테스트") - void getDiscount() { - //given - long invalidDiscount = 0; + } - //when - //then - assertThrows(IllegalArgumentException.class, () -> new RateVoucher(invalidDiscount)); - } + @Test + @DisplayName("퍼센트가 1~99 사이의 범위일 경우") + void validDiscountTest() { + //given + long discount = 50; - @Test - @DisplayName("바우처 생성 시 Type이 정상적으로 RATE로 분류되는지 테스트") - void getVoucherType() { - //given - RateVoucher rateVoucher = new RateVoucher(60); - - //when + //when + RateVoucher voucher = new RateVoucher(discount); - //then - assertEquals(VoucherType.RATE, rateVoucher.getVoucherType()); + //then + assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); + } } - @Test - @DisplayName("바우처 생성 시 CreateAt이 정상적으로 생성되는지 테스트") - void getCreatedAt() { + //해피케이스 테스트 -Hamcreset 테스트 + + @DisplayName("여러 개의 정률 할인(Rate) 바우처 생성 테스트") + @ParameterizedTest + @CsvSource(value = {"1", "50", "99"}) + void createMultiRateVoucherTest() { //given - RateVoucher rateVoucher = new RateVoucher(60); + long discount = 60; + + //then + RateVoucher voucher = new RateVoucher(discount); //when - LocalDateTime createdAt = rateVoucher.getCreatedAt(); + assertThat(voucher.getVoucherId(), Matchers.notNullValue()); + assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); + assertThat(voucher.getVoucherType(), Matchers.equalTo(VoucherType.RATE)); + assertThat(voucher.getCreatedAt(), Matchers.notNullValue()); - //then - assertNotNull(createdAt); } } \ No newline at end of file From b6148491d4d8acdbeee4597bff697a59558e3098 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 17:17:33 +0900 Subject: [PATCH 137/157] =?UTF-8?q?femove:jar=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../springboot-basic-0.0.1-SNAPSHOT-plain.jar | Bin 13923 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 build/libs/springboot-basic-0.0.1-SNAPSHOT-plain.jar diff --git a/build/libs/springboot-basic-0.0.1-SNAPSHOT-plain.jar b/build/libs/springboot-basic-0.0.1-SNAPSHOT-plain.jar deleted file mode 100644 index 964804d3ebd584ca054f2e8959073069c5dc33fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13923 zcma)CbzGHA(L0K6F#xX=02HKIKkG0CopIBGc zzpO+21m=?etJWv?V8-^gzbJg%2jR~?4vyxIwobovJuCPX?qQ4%aDR4na&WY?GdHrg zcQyh#SsMQ$`dAC)??oL=9qgSfo$Vc8{s#&!#@j2W`(=Cu1qLSauTkVoZSTR0Z7Qp&{fh3v*)c9E64Onz68&sROPvrZ!Fy{cBaLTsA=Amt`}XP<@*S^P?UvAh@SHf)Ge8qV z`|#7~Ys5`kTbV`@5i|L#XS#-xm|^%>jLfnh#FVJ{dez$TEg5b`wfF%B$JtE-^IDpc z=Q%_TLE!kP&)*%bxL#Wa{x?!J-;qMt;8rWk zoDUcf4kBqQ->I%1$F|Q^m)k;a-B6-5P-DE{XiVHlC!YYS#NmbCk$$@qMYR>b@*7=S zE)vE@#BM1rs9wBfwO+40SXURDQ9XClJxzoSDilaB0_vT#=2J2ok8{;fN+e+`P;53k zleZL-?uR9f!}1?v!xbUIP;T=af_Ld%tq;GIzvg>o^h!}M%;=S#1%t8~2|r}hIHRT| z(bNXxRXfQwMJ3~y)e?DaAzZC&te0Z+wYwls7aKt-v*sJP!B0p@?W8(OB2iD4x-8&{ z2D5lpptrsHJ~-sTXrOVT^L3N?d&$0F$_x1H?q38aL9y*-L4=+LGDn`qb$ziLLV}JR zL167lEhG@Lg1esCJ2qth!{Hx1L)Gj(*y+73*MozB@%?L?{%_VC(;^Saf+E)Iw-!ro(^NyLaek6VVYhO#$4TUh(05}?WYK`R%2yy6%PfbK_ID4WAEaGHjl!cmX%#_QISPwUMXi&n7?hPPsw>jM!$(OXWZG+r8%I8n(3tMPijZ;XSQj*oz)s8_ z=x{Y5F5-{$Knb8!&n~nvoNotOuG9$kLrH2rT+cwMeOaI>}^c{c-a-2 z9-gWnFmEa0ng$QnKSPX(5@HK2E|Sxew%15K@rO+YiwhyeYMa%KLum1sUQEN$E+ZDA zw%84j^nVf{OlDz?QbQi5Zf&h|?cK3_xL3HJRWIN@$9l13L)bE#KSxB)>b5bI;?(|a zBQ2%%;=Q#!1a()(UY~G-F9B+N%pkK@%L2Ivq+{_?OS@~!muXx_naP;aBvzA_g*3`8 zP(Q>TDFF&@<&m|JJ*P4eoOs)qgDB$Uv{kA;orGG)TVVvTdS78A=K?K*+DwuT#KG}VacFv0Eb@algStY!{j7y!AR2;^c9mvN)dn(#d!V|<{@Rp z*mAaL>97J1<9pf6BYKdshAHS6m7-isO)q?pz`2@b_6zG+qiVNlpLy~en-LPonw3kQ z2#3O%t7`zTdZR5FZQ^0zH`0d(!7rHtH|LrP`Y_ zoSrjj(rZ+XRSj(|wS>23ArhosgyY}b1CoY_P#B1u3e}88Bu^Rm9_dKTO)G}Lbg{@` zLypfXj&Icm9z6k)6CLssVK`ouxc+$26Wx})Wf6<^@i4OEXhv|i)gb07$a(P!+dofeOnLanY2jv zg}?8$kzm=I%?L-lCsEK142uU9Y;&F*mzGTA0d-T#(sdajSvF3B?>WHFN%1%f3Zn^! znWaKS>p~FcaT`*Pk?LHf6G2qmbASc;hR6?SA|8n_!L~D`G~dNJX3$Yk*Y>KNz9#2a z3FWmaf1hy>5Yc~Sp!+G0)LDKX0{yEqY2Re2R5#>;O@n3PQWhc)t_iDv_WC9Gz)7)* zi!?h=mvpXi(kGt=*0EXI^NRz8I>MraU0LU|uUT!xh`jO+x;UJpJT)?SGqvHmcvUH$ z)t^-WI?5{R^5Za+kso5am}COV*loCMF4-0t#k={^5pP<3G`ku1C~0j}oPD}Z1mD#Z z@@+V4=`<*5KrTstp_dvbtb?7Q`=Yd$SL30*PNXMEP zC6pLUp(EVNN_N)~Azc<^!>~$_Pw^_*;^imyUyjuCvZ?mhsZ>M&J}mL1sgwF$Iyovo29b${9>3lnXZ$<>q|Lv)6#h^kIU1>#I);imL-**D5(&=qz8 zvh=FXB6f#(_^(jNr*8)T2;`W%~@Cq{t_kwHbrjR z(H3taZvjMqp585fk@@ks+#&uF_oQTK^SKKxRs24= zC+@6!aQjuC3ep{9{3dU5Q5B4TQ8A1P@0-=Q;SZZEc`z?knP&Em-A70cdCe{i3EAl- zIdo?O%0^-WY&?U!KL!bQAoQ)TvyIuvejvC?l{x(K^33e@k=o9AGWr)iPef)bUR1MB z?zCFs`@5IW-#nvtUaAkaTo#%NM2-)2zAfgbNP`Z*6NEGb9@#pID+rbz0}gX+ngV#k zG(z6TpF(5Vk1&=;0sD0{7cu~R)3CrC)Lbr8{b$|0o-oS=-h@%OR+*Sc$VO;+c8X3% zWb!+=oblr-3#n&F0Z)AcC^M92g7Isa>z=vhS)(Q_0c*M9YPponobuE5J;eLi@K56) z+hZ~^aR&HC)>%|lvD8fyus=BL%6w{1Rrnq@{xVjYsnyG=Bt4p9vG)=Ui_1Pdr}XJ* z?O+RYOW(_uV|KFO_ChSKvdA}5@dKOb97bL2X23w+G;b^iyqD>2-42_$skfDk7>Y04 zu+7}lFBDhHW_HT=Mf9+m`OB&12_XF`dc3uS4PgXKmrjDoUv>awrEzw5$#jKCbhYs%iuzNYy)+tk!_M;T^z ztkDXU*#%*r)mze2W&FfJ#y$5V;fU7z=lcV#Zk#b1*jyr%qO+8uK=j=76E08KiZVE) zh((zA0nvb$ETYX-zE&C^MrVRNqia)+jyVM^bI!8;##6|}2}xlc=xkRfMZeS^t#a6i zU@Cb$?VRzYT!@09iIoVo6=9n*Cm|i3*bmOLsI$l6U?uScnfax~+)IC=82`kK zVJrc%HmytsfUJfVO$0nULE#(uj^TuTaKwqM7&J#@Tui&uh2DB?R$AwXYGa^r!;xv* zORw;Ph#P0oBO0>jo#zhcERuOm-r(Nl(JxQtOed_s zS>nnWsi?*Pqe{dPCcH0(sx85#Z;;eJMk+`1j${=5nWOdzSXSmru<9TS@4)G}19^*# z<9xw+ClGsQ@N2?-pJV@Bo&AqfAY*$wXGeP*8&k($sRL_{>KM0nXt~|$XhyIo4X~YPJSa&8 z43S#!ei*v7by82Yn`vqsUiZb(_2as4j|!VV8-+&53j|(4Ua?+< ztaprVH^qr)MzDCr9E>%Ye;;X*xH$A7x`i?%N(Zx2q|27?M*GA{|1_a@y_gYyd#nGm zlG+QLoeL|_#-4fcK0Fovn6EfEII2(xAQ+PseOTL)&RAlr5}s1iPE)|SFI{a88g`>< zhe3a^MdKunC*I8`6#=Fiejh?TTr;2^kfA2ngHol+#lCW6+gVCit!b8pi_p;rZ^*~} zM3R)lknDXubqsS;N>91XY^lQA1Xf&RLv#*=8B!y- zQmuiZzSL^Ncq>fc%&LAm^};~QbHdjZldB%s)pv3=+@vA(WnlWXw<)z72VPj3v^zV}s*wIjI%0#FKH1lCjN4x+KKZ zH4wpDI8LHsVlL?<9#Zpk*1?8QvQ@SoYR_~_(n;}TRWt9F&4^>*%Hu8-YrtOzBo%I~v$T#5e`0J0gAAXbAu!-%TYSU9B$*U9 z8{_^Vhq$RhG=-AHd%~BD&bW8o1}^!XZ%Qpjs@Y9mt>Y5k0{OakNN4R+nUO2v8HRI7 z7-k5$chmyA#%$qOZPq=FT!o2-N6|hV<(!2snZTWGI90T>NWz53*OhZ=XoXyfgFX7) zr>0>6o3&QB$E=~7ho~QK45cZrO!SCG32xDcN0|+9TE5i;G&y{G^`;vO1`yyr#0<-< z*I+w|6;p66qP7i}&97;o_4=w8yU@n~QZLq5JMc0ixEQ75l{=jtnMDQoFoLJ#E|}ML z-PBk!?+KM=z6X}D$vk~3>Ad;atL1pY{0sPTuvDoUs7R9v+zJzhz~~VC&Jrk=dUL+y0R=90uGf;z;Mk`8n`+j8%#kkCFyMf5?!<}|!4FBi)7K-xt@%Tv38 z%xH5FWe@5+-Kqqqn%~{14){#61kJmlwi@(W^T6T-veNLQcL?)XTRr5-P) zZk(?ZUDG7w)JU1GOcVq0*wt}p`eM(MCuf8YaX8}6vl1& z9?AhPb8HpoFKrD8msKD^1w}0QI`oZU-gkjtqy6E#lO;50FtG0cFfiGF9j6sd9gR)x zod0K}zScmOz_^7b4JRQMRjj5y_M;SnYu83luOP<6BVvHpu6Kd6)|7Oe7zSBoQIC=~ z6wN^F($iM{chY7ts*`h z$TFj`L2hhp(TRE&_Nwqp8+!E^Q+(r7isN~uRkKgP2+_zxN?k3@U}5lGTX#4yfKK9P zR_HRy(BX4#B1&_vwpyx;t#W6+Wz!Gh7zhqCRd8vWC3)JBY*2m1S|mycG7}a4s&$jN z!5`n>m>S`C1zlzk8Xs-WRDc`Tbpg*VdR|?dJ>Pe~TETDMPUEXiyBHu?SMW)5+@oc3 z!bul(TgI-dBUF$^BRgnu#_o4La+(3r78`0 zN?K07Q#GI$i>mnDo6)vKWAY}`VdZ2=J$ibNtbfmxT8`oMS|vfXgqL{TAP}$+zDU&9 zIp{9-&KqBUeSW|zF&08{oJ|c~vA@bEcAdRUNJ$+FR+3H+76yu-<}e#yP z=1|I4krAaJ-Y^eHxgQ)48=r!i5`PjL>~B0h6!7+TLU#)z-Eu)#MPx|M2pM@#FZ`YKXe0d5Y6L%)(zf@`U;l7E;iOS#D=*}2B4QKJR z_9Gtb4x(7cKitdKR&Iw_GS%d3Y38D9?sl*sp`2JpT3y;FM-&L237|gj?Z|L~O|i(8 zH1O{xH*DO{or0`wEn4&8#bV^vkx7`7mDXQRz@&L0UnF+=H9xJB3K~yTZe!o1NX$NV zdnTHJV-|t8-dSLcFzF1d{@d%~P$8)#Hlw$cS(M7?20czEUo=c0-oK-64*F_|o765? z7t3I45$^_!x1O_=^umfoB2_J&oXKIbUkzSifKS1)R(%22g!B8R?f)V!7$-~>M= z$T1CekpoaHpzA02Ay-_&5+Pg$N~{-=*UUDV6zJK;$Ei?4)Qg{Om%1hZ4G+lTo={3g zk3r$Zbn3K~&SAl+@gHsl0Tc`nrD#?*+dghspXwizizVQ|ej4OfP~*mNl{YXQgQ{$S zhe>OL!?CFk6TXEH`CNs8H7doZH+AsDnbk&@K>DKzgzPslO4D3H?mgc6{M3w1H#4aw zyadZ^4J3Zrv=YqhabeT;YnJ2|X99nZUe20Dp5EAtQBj$*4iLQ{J=PkKf@K{A+q^}# z?I4iv#)2h2-qT6nZ0d5z(kwD>f<%RnCj%^-M3D+sGaPVL^r6Zw6{O%i%?JHnpEP^5y@e8t0r>$G}(gc;tFb6)>h=)R?UV8&Oz_?aY7uut}vg(pay9o`XSm{^@_ zTt2;H;^;Spa2u1tgXB@Hyh412u2DvBr@PbBNOv8j+Taelau=wj`fQzy7^Ct znO?TQU=MRJO~`d*Fu!e#x>1tM)QL8dW?Q5t-Gdg!%7aI8uTI%}8t{{1S=I=v;X#`OMy2bkl->4~QZU0>17E+fbUJg`t<^{6;RHMAl-F(Ca ze+T*N-g8uO6{U86<&AQG1<(5Xz30zbK*+(t#?lz*Y-w-zS23WcGB1w7htLDj8~6tL zi(2WaYad>bt-C=(Vb_CYZGwQF77|S__V!Gu$a?zx};VNao#E%W?Mag(> zJE3D}Ay){GH-}4!Xt|A9w5C~kpiVHsh*@wJw!n_qMqJiY=|HGPYdW!#Nwbe*)R;>` zC_z>EEWbbnzRi`uE);uwb|Rr8^McBnmnL7Oz?>z8Cn15sX?mEqET!LLfGK_;qt`}q z9vvn#GvRBLRw;L@CKfwMjUU&9%{!( zD!M^ZkWxe$VN3rC1%Bl>h{>iwxXSocDa_Zt3aWm2v~Nl{$4eLMZ6_#V3`0!TIS}+ZGI%IR4|sZI z)11`YTO6<9G#Iwwf_*c@W0teAana7cq$E-&SC()uHWY03Qtp{dAa*KbU*)byTl=Kw ze6Z#BrtH3C6KQc9wjmR;-TeM*d& zqjTI(p+Sl-wOjzzCbUU@SC#3?`T&H;kG%Tl`KXy$q`ZaL{SFQFEt9WzxmwZcO6D;? z#N)Jo0D(LS(k`QFUY3s5U94x0I(bLO!Yp&~6Ti`{H}IJzyvg~}&UFrl`#vqdR+=c|7GC11RXuxx( zdVNHJ3DXGz>0u(@?W2jUTnzzKW|zqcC;xV5JlsgzZL+GQvvL3VvxuvB4Hl`7?qKgQ z{QQt)jX{b7-v}cIrk2VI4DwdDOMHfqr$mH2tU2diz|^uWsd+~53r=LA(PyV2)r&4? zBV2xe$}(*glADw4k#o-4+-gjlK{6q53-32O?d+-0+Ic?t7H5gOQ^MMwrJ4PO#|bRa zM=`WmjYhGlHT#f{^(9H7^I1%xr2Z`VeSBgjGy-HHd-yn=#K2&O z@Pkf_NbX2C<}WgBGNc#>{2L*)!QQON5_CCpTSRZ5zL59<#Yxw`p%{!R6MkdS7XB#q z3gJkr(^IN}zwSmNN1Kgz3bvDtzTTLtd>5Xt(i*riMdJysuzd*AAqn_+ zgzhc$#pg$qdd!L;`+byhGIeydG&cR^FysN^`l(gw(mf@n;y%%S{_i0E40tMkApRNb zUhm4^(_nh}$D_5437`Sc>rJvpnr#rcN-+lXr@D5LZU`wzlP!Lvc%WO+P-MZAM*i7kV zyucKDQVvg-+(9L)Gi6*8@hgIZN#-uzlRQ*v_T+g*>QxQUK2LahE5&5v zBvD&hxI5Ul)$1E*0ULm06yomorg=dT3E9AwwXeZS*}W@-GH$jE$r2X`2=D%Y145g2 zbBk}%k1$m2Ttw+{hz5QWV3J~Ap)80GJLVswRk_vk@^h|1G=M_~(A|Aqp0<^HzKEYf z&|4LF4G6&2nyIrrCm(#Ok^dP88_g_dNxySY2)uj|HPfD{Q!U<*5tyijd#dNby4g7U!MWRd6!3cBdZ1c{}+jGh;PouXP5X$kzrX=s)x#H%}HI3Nl zkQzslE$W-SDBk~yM4^T!?M!YKEThr<*PyQPdmlYN-vaNjk zWKvStTx2H`#OJLn$WTXS!U><@hFfrOA?kgL+HX*EAlQ0FQ24L>+C#Yy_6pjCQhCH$ zAq`ULXD1?sdFB0Cx2uiiV+%`lgJt1L9iS^&EZ@%#x;C}mcdt7-crESwxB-CA&QBHPfJIHS~?WB_gxB_#xjn3=7w8P zBIdks{mvbx<)j;i)sza;+baR%p>8rM0;4B=c}tV?f!(KP6F&lW7`d4_mRI$wxsKcR{tUl+Pq?#SWAD^k?A5eu*Ef4~ z5z|#YDK1g`FLX_pac`d>W@U9f{W>ysdwo7ec&j_MDruB-2@00j~ZjQ?L*!9SmE{AmZude#p_M7Pswxf5G8=*L(8G8T%cyb%v;(M=+Op-8}PbM%1wF3n^R|nNAx^DOnxu zcVI_&*K+Q~m&MQzc90&%iaIRD5y{_E^sGAYiY|fX8l<>=-iv6H{W%XeJIMElbj-4j zStWi$shycNtw(!abB#8Xk{gpYJgPv-#0*(2bBnarSdX055;n4ScX2FGPolsUILXV+ z#l_9*z@Y;^w}mnn-hm0rc7}>}b;n`QWP35i0Q%07bEU38t`nh3DS%-~KWvWr5f@H^ z8}+oBc_1UnaB@Ud-ks}exe^)nwg%tss;!Qdj|)pYe_Xn2;Jxb7>*ngfw%e-;IEKn^ ztnl9PBst%tu*m64jj$W6bvqP*X#K% zq49WI`~|l3fv0gK$UGFo1^5JM1UfTD)q3L154P}`U-2LvF`)&PtWXxPujP zG$;3Th=ztXzGsk6^+{=xVbQ0KsZxe>xaeaOv9IcD!>8;gBNb~!rfL_@e>H|Ijx*Jw zdn4$-f0+K2G5om=|MB)2B4v>LnZZPhyanF}9b;5g!!RF&!1Z(oz4xL)Oca!n-u57LrfO8e$%U=JqIO=9+hX8P&AoNcooQd?{(V|@b!K6z2XL9*&uslDy;UJ0kby%(K8&b_H%Qedi0@zRp??2~UTkuodqfd^@O5ouwrtnH$g@`4x5XbA77=M)j4|=}hlPe*L3OcSFinR`n^E^vp zMaNx#Mlx4^Gfl=ZRok}OT>G(n@Z&DAX+N6xXk={U&M5-?>$72KC4o+G334}4jOv;l z@ZYdx>QI=*I8_}4Y{$ne9U#fZWT;FPdB!dbwO5$t~_wN*-e^2KdwmZU}z^=@NlCIW}S+*fSx z&CylUGgrhD{5a_JjI3kqAC~g4YVpw1&+a3}1LY13>;3`$RCqc#+B=v!I$N4Ltv+zM z!67gp?+e)f!Xdwxy>BRB`$7-De>2K|7W*eg`9tT2mhbn#`1@PzCw}?Q2#?d$2O9Yw z?Lo2Y{oe-``0pehEaQ*%Ad!0i_b1-?&w~F%G5;a>;a9=Og!7+)9*_Cqs_~EZ|BH3M z@IQ^F0l;=KG2NYs}x0(H|>(%nkmb5bypy{JTl~8D<{y-XE)afWCL* z|8Eb(*+1IDdRg3Gwf;ucJ&pD;7VaY&?O$m5eue)N>t|B!W8BAV)gQP?_tnqu$M_R> z^=H_BqJjQ^O@R3=>@TFy$EXh|e=X>*1_+J*ThyQKtRG`OzWM$!QrUlv`A?bX<9qPO zdLQ59{Lp)b^RMUfukLjoYkqu=_d~M-(Qh^XY4-nds`s;k$8qAJ1plKw*gY2cZx#Gi zkUs`|T#)|-neV6d?*RX)Jb$d@0rW59BK=Fl|8E5mRKFedp9RfhyvGI2Uy%8JBmWBT zpN#5{#OAT4$4T=KO`q Date: Tue, 18 Jul 2023 17:18:27 +0900 Subject: [PATCH 138/157] =?UTF-8?q?remove:=20=EC=9D=B4=EC=A0=84=20FixedDis?= =?UTF-8?q?countVoucher,=20PercentDiscountVoucher=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/FixedDiscountVoucherTest.java | 40 ------------------- .../domain/PercentDiscountVoucherTest.java | 38 ------------------ 2 files changed, 78 deletions(-) delete mode 100644 src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java delete mode 100644 src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java deleted file mode 100644 index 4a90bf9def..0000000000 --- a/src/test/java/com/prgrms/springbootbasic/domain/FixedDiscountVoucherTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.prgrms.springbootbasic.domain; - -import static org.assertj.core.api.Assertions.assertThat; - -import com.prgrms.springbootbasic.domain.voucher.FixedDiscountVoucher; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; - -class FixedDiscountVoucherTest { - - @Test - @DisplayName("고정 할인 바우처 생성 테스트") - void createFixedVoucherTest() { - // given - long discount = 10000; - - // when - FixedDiscountVoucher fixedDiscountVoucher = new FixedDiscountVoucher(discount); - - // then - assertThat(fixedDiscountVoucher.getDiscount()).isEqualTo(discount); - } - - @ParameterizedTest - @CsvSource({"1000, 10000", "200000, 5000"}) - @DisplayName("여러 개 고정 할인 바우처 확인 테스트") - void createdFixDiscountVoucherEquals(long discount1, long discount2) { - // given - FixedDiscountVoucher fixedDiscountVoucher1 = new FixedDiscountVoucher(discount1); - FixedDiscountVoucher fixedDiscountVoucher2 = new FixedDiscountVoucher(discount2); - - // when - - // then - assertThat(fixedDiscountVoucher1.getDiscount()).isEqualTo(discount1); - assertThat(fixedDiscountVoucher2.getDiscount()).isEqualTo(discount2); - } -} diff --git a/src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java deleted file mode 100644 index a346a78ef2..0000000000 --- a/src/test/java/com/prgrms/springbootbasic/domain/PercentDiscountVoucherTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.prgrms.springbootbasic.domain; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import com.prgrms.springbootbasic.domain.voucher.PercentDiscountVoucher; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; - -class PercentDiscountVoucherTest { - - @Test - @DisplayName("비율 할인 바우처 생성 테스트") - void createPercentDiscountVoucher() { - // given - long discount = 20; - - // when - PercentDiscountVoucher percentDiscountVoucher = new PercentDiscountVoucher(discount); - - // then - assertEquals(discount, percentDiscountVoucher.getDiscount()); - } - - @ParameterizedTest - @CsvSource({"10", "30", "50", "70"}) - @DisplayName("생성된 여러 개의 할인 바우처 확인 테스트") - void createdPercentDiscountVoucherEquals(long discount) { - // given - PercentDiscountVoucher percentDiscountVoucher = new PercentDiscountVoucher(discount); - - // when - - // then - assertEquals(discount, percentDiscountVoucher.getDiscount()); - } -} From 16c5564221c318ac7d30789b7bc5e3304c45b787 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 17:18:54 +0900 Subject: [PATCH 139/157] refactor:FixedVoucherTest refactoring --- .../domain/voucher/FixedVoucherTest.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java index aed4a80e81..8cec92a654 100644 --- a/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java +++ b/src/test/java/com/prgrms/springbootbasic/domain/voucher/FixedVoucherTest.java @@ -1,9 +1,13 @@ package com.prgrms.springbootbasic.domain.voucher; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; import static org.junit.jupiter.api.Assertions.assertThrows; import com.prgrms.springbootbasic.enums.voucher.VoucherType; +import java.time.LocalDateTime; +import java.util.UUID; import org.hamcrest.Matchers; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -18,16 +22,18 @@ class FixedVoucherTest { @DisplayName("고정 할인(Fixed) 바우처 생성 테스트") void createFixedVoucherTest() { //given + UUID voucherId = UUID.randomUUID(); long discount = 10000; + LocalDateTime createdAt = LocalDateTime.now(); //when - FixedVoucher voucher = new FixedVoucher(discount); + FixedVoucher voucher = new FixedVoucher(voucherId, discount, createdAt); //then - assertThat(voucher.getVoucherId(), Matchers.notNullValue()); + assertThat(voucher.getVoucherId(), is(equalTo(voucherId))); assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); assertThat(voucher.getVoucherType(), Matchers.equalTo(VoucherType.FIXED)); - assertThat(voucher.getCreatedAt(), Matchers.notNullValue()); + assertThat(voucher.getCreatedAt(), is(equalTo(createdAt))); } //엣지 케이스 테스트 - Nested클래스 @@ -68,14 +74,16 @@ void validDiscountTest() { @CsvSource(value = {"1000", "5000", "10000"}) void createMultiFixcedVoucherTest(long discount) { //given + UUID voucherId = UUID.randomUUID(); + LocalDateTime createdAt = LocalDateTime.now(); //when - FixedVoucher voucher = new FixedVoucher(discount); + FixedVoucher voucher = new FixedVoucher(voucherId, discount, createdAt); //then - assertThat(voucher.getVoucherId(), Matchers.notNullValue()); + assertThat(voucher.getVoucherId(), is(equalTo(voucherId))); assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); assertThat(voucher.getVoucherType(), Matchers.equalTo(VoucherType.FIXED)); - assertThat(voucher.getCreatedAt(), Matchers.notNullValue()); + assertThat(voucher.getCreatedAt(), is(equalTo(createdAt))); } } \ No newline at end of file From 64a1afc327acf337ccbd20649dacfcabdbf91bf1 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 17:19:11 +0900 Subject: [PATCH 140/157] refactor:RateVoucherTest refactoring --- .../domain/voucher/RateVoucherTest.java | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java b/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java index 834cb5cd7f..c592908896 100644 --- a/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java +++ b/src/test/java/com/prgrms/springbootbasic/domain/voucher/RateVoucherTest.java @@ -1,9 +1,13 @@ package com.prgrms.springbootbasic.domain.voucher; import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; import static org.junit.jupiter.api.Assertions.assertThrows; import com.prgrms.springbootbasic.enums.voucher.VoucherType; +import java.time.LocalDateTime; +import java.util.UUID; import org.hamcrest.Matchers; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -18,16 +22,18 @@ class RateVoucherTest { @DisplayName("정률 할인(Rate) 바우처 생성 테스트") void createRateVoucherTest() { //given + UUID voucherId = UUID.randomUUID(); long discount = 70; + LocalDateTime createdAt = LocalDateTime.now(); //when - RateVoucher voucher = new RateVoucher(discount); + RateVoucher voucher = new RateVoucher(voucherId, discount, createdAt); //then - assertThat(voucher.getVoucherId(), Matchers.notNullValue()); + assertThat(voucher.getVoucherId(), is(equalTo(voucherId))); assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); assertThat(voucher.getVoucherType(), Matchers.equalTo(VoucherType.RATE)); - assertThat(voucher.getCreatedAt(), Matchers.notNullValue()); + assertThat(voucher.getCreatedAt(), is(equalTo(createdAt))); } //엣지 케이스 테스트 - Nested 클래스 사용 @@ -68,18 +74,17 @@ void validDiscountTest() { @DisplayName("여러 개의 정률 할인(Rate) 바우처 생성 테스트") @ParameterizedTest @CsvSource(value = {"1", "50", "99"}) - void createMultiRateVoucherTest() { + void createMultiRateVoucherTest(long discount) { //given - long discount = 60; - + UUID voucherId = UUID.randomUUID(); + LocalDateTime createdAt = LocalDateTime.now(); //then - RateVoucher voucher = new RateVoucher(discount); + RateVoucher voucher = new RateVoucher(voucherId, discount, createdAt); //when - assertThat(voucher.getVoucherId(), Matchers.notNullValue()); + assertThat(voucher.getVoucherId(), is(equalTo(voucherId))); assertThat(voucher.getDiscount(), Matchers.equalTo(discount)); assertThat(voucher.getVoucherType(), Matchers.equalTo(VoucherType.RATE)); - assertThat(voucher.getCreatedAt(), Matchers.notNullValue()); - + assertThat(voucher.getCreatedAt(), is(equalTo(createdAt))); } } \ No newline at end of file From bff8d3c6a3aa1113df43b34eab21b1eb164cb5bd Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 17:19:41 +0900 Subject: [PATCH 141/157] =?UTF-8?q?feat:=20CustomerTest=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/customer/CustomerTest.java | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/test/java/com/prgrms/springbootbasic/domain/customer/CustomerTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/domain/customer/CustomerTest.java b/src/test/java/com/prgrms/springbootbasic/domain/customer/CustomerTest.java new file mode 100644 index 0000000000..db42a8d716 --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/domain/customer/CustomerTest.java @@ -0,0 +1,101 @@ +package com.prgrms.springbootbasic.domain.customer; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.is; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import java.time.LocalDateTime; +import java.util.UUID; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +class CustomerTest { + + //해피 케이스 테스트 - Hamcrest 테스트 + @Test + @DisplayName("고객 생성 테스트") + void createCustomerTest() { + //given + UUID customerId = UUID.randomUUID(); + String name = "Hanjo"; + String email = "Hanjo@example.com"; + LocalDateTime createdAt = LocalDateTime.now(); + + //when + Customer customer = new Customer(customerId, name, email, createdAt); + + //then + assertThat(customer.getCustomerId(), is(equalTo(customerId))); + assertThat(customer.getName(), is(equalTo(name))); + assertThat(customer.getEmail(), is(equalTo(email))); + assertThat(customer.getCreateAt(), is(equalTo(createdAt))); + + } + + //엣지 케이스 테스트 - Nested 클래스 사용 + // 정상적으로 영문 Name이 입력되었을 때 테스트, 영문 이외의 글자가 Name에 들어왔을 때 테스트 + @Nested + @DisplayName("고객 Name의 Validation 확인 테스트") + class NameValidationTest { + + @Test + @DisplayName("정상적으로 영문 Name이 입력되었을 때 테스트") + void validNameTest() { + String name = "JohnDoe"; + + assertThat(new Customer(UUID.randomUUID(), name, "valid@example.com", LocalDateTime.now()).getName(), is(equalTo(name))); + } + + @Test + @DisplayName("영문 이외의 글자가 Name에 들어왔을 때 테스트") + void invalidNameTest() { + String name = "잘못된이름"; + + assertThrows(IllegalArgumentException.class, () -> new Customer(UUID.randomUUID(), name, "invalid@example.com", LocalDateTime.now())); + } + } + + //엣지 케이스 테스트 - Nested 클래스 사용 + // 정상적으로 Email이 입력되었을 때 테스트, 비정상적인 Email이 들어왔을 때 테스트 + @Nested + @DisplayName("고객 Email의 Validation 테스트") + class EmailValidationTest { + + @Test + @DisplayName("정상적으로 Email이 입력되었을 때 테스트") + void validEmailTest() { + String email = "valid@example.com"; + + assertThat(new Customer(UUID.randomUUID(), "ValidName", email, LocalDateTime.now()).getEmail(), is(equalTo(email))); + } + + @Test + @DisplayName("비정상적인 Email이 들어왔을 때 테스트") + void invalidEmailTest() { + String email = "invalid-email"; + + assertThrows(IllegalArgumentException.class, () -> new Customer(UUID.randomUUID(), "InvalidName", email, LocalDateTime.now())); + } + } + + + //해피케이스 테스트 - Hamcrest 테스트 + @DisplayName("여러 명의 고객 생성 테스트") + @ParameterizedTest + @CsvSource(value = {"merry, merry@example.com", "jay, jay@example.com", "hanjo, hanjo@example.com"}) + void createMultiCustomerTest(String name, String email) { + UUID customerId = UUID.randomUUID(); + LocalDateTime createdAt = LocalDateTime.now(); + + Customer customer = new Customer(customerId, name, email, createdAt); + + assertThat(customer.getCustomerId(), is(equalTo(customerId))); + assertThat(customer.getName(), is(equalTo(name))); + assertThat(customer.getEmail(), is(equalTo(email))); + assertThat(customer.getCreateAt(), is(equalTo(createdAt))); + } +} \ No newline at end of file From 5f1e161c551414c57b0da7c690ec2e45cddee57a Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 18:05:53 +0900 Subject: [PATCH 142/157] =?UTF-8?q?remove:=20=EC=9D=B4=EC=A0=84=20VoucherC?= =?UTF-8?q?ontrollerTest=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/VoucherControllerTest.java | 63 ------------------- 1 file changed, 63 deletions(-) delete mode 100644 src/test/java/com/prgrms/springbootbasic/controller/VoucherControllerTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/controller/VoucherControllerTest.java b/src/test/java/com/prgrms/springbootbasic/controller/VoucherControllerTest.java deleted file mode 100644 index 097da97c0a..0000000000 --- a/src/test/java/com/prgrms/springbootbasic/controller/VoucherControllerTest.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.prgrms.springbootbasic.controller; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import com.prgrms.springbootbasic.controller.voucher.VoucherController; -import com.prgrms.springbootbasic.domain.voucher.Voucher; -import com.prgrms.springbootbasic.enums.VoucherType; -import com.prgrms.springbootbasic.service.voucher.VoucherService; -import java.util.Collections; -import java.util.Map; -import java.util.UUID; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -class VoucherControllerTest { - - @Mock - private VoucherService voucherService; - - private VoucherController voucherController; - - @BeforeEach - void setUp() { - MockitoAnnotations.openMocks(this); - voucherController = new VoucherController(voucherService); - } - - @Test - @DisplayName("바우처 목록 validation 테스트") - void getVoucherListControllerTest() { - // given - Map voucherMap = Collections.emptyMap(); - when(voucherService.fetchAllVouchers()).thenReturn(voucherMap); - - // when - Map voucherList = voucherController.printVoucherList(); - - // then - assertThat(voucherList).isEmpty(); - verify(voucherService, times(1)).fetchAllVouchers(); - } - - @Test - @DisplayName("바우처 생성 validation 테스트") - void getVoucherCreateControllerTest() { - // given - long discount = 10000; - - // when - voucherController.createVoucher(VoucherType.FIXED, discount); - - // then - verify(voucherService, times(1)).createVoucher(VoucherType.FIXED, discount); - } -} - - From 36ebafac10b8f54293c76b54aa98f60eb1d0aac5 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 18:06:28 +0900 Subject: [PATCH 143/157] =?UTF-8?q?feat:=20VoucherControllerTest=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/VoucherControllerTest.java | 163 ++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 src/test/java/com/prgrms/springbootbasic/controller/voucher/VoucherControllerTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/controller/voucher/VoucherControllerTest.java b/src/test/java/com/prgrms/springbootbasic/controller/voucher/VoucherControllerTest.java new file mode 100644 index 0000000000..91b60f793a --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/controller/voucher/VoucherControllerTest.java @@ -0,0 +1,163 @@ +package com.prgrms.springbootbasic.controller.voucher; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; +import com.prgrms.springbootbasic.service.voucher.VoucherService; +import java.util.UUID; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; + +@ExtendWith(MockitoExtension.class) +class VoucherControllerTest { + + + @Mock + private VoucherService voucherService; + + @InjectMocks + private VoucherController voucherController; + + @Mock + private VoucherResponse voucherResponse; + + @Mock + private VoucherCreateRequest voucherCreateRequest; + + @Mock + private VoucherListResponse voucherListResponse; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + } + + @Test + @Order(1) + @DisplayName("바우처 생성 요청 테스트") + void createTest() { + //given + when(voucherService.createVoucher(voucherCreateRequest)).thenReturn(voucherResponse); + + //when + VoucherResponse response = voucherController.create(voucherCreateRequest); + + //then + assertEquals(voucherResponse, response); + } + + @Test + @Order(2) + @DisplayName("모든 바우처 출력 요청 테스트") + void findByAllTest() { + //given + when(voucherService.findAllVouchers()).thenReturn(voucherListResponse); + + //when + VoucherListResponse response = voucherController.findAllList(); + + //then + assertEquals(voucherListResponse, response); + } + + @Test + @Order(3) + @DisplayName("특정 id의 바우처 출력 요청 테스트") + void findByIdTest() { + //given + UUID voucherId = UUID.randomUUID(); + when(voucherService.findById(voucherId)).thenReturn(voucherResponse); + + //when + VoucherResponse response = voucherController.findById(voucherId); + + //then + assertEquals(voucherResponse, response); + } + + @Test + @Order(3) + @DisplayName("생성일 순 바우처 출력 요청 테스트") + void findByCreatedAtTest() { + //given + when(voucherService.findByCreateAt()).thenReturn(voucherListResponse); + + //when + VoucherListResponse response = voucherController.findByCreatedAt(); + + //then + assertEquals(voucherListResponse, response); + } + + @Test + @Order(4) + @DisplayName("바우처 타입별 출력 요청 테스트") + void findByTypeTest() { + //given + VoucherType type = VoucherType.FIXED; + when(voucherService.findByType(type)).thenReturn(voucherListResponse); + + //when + VoucherListResponse response = voucherController.findByType(type); + + //then + assertEquals(voucherListResponse, response); + } + + @Test + @Order(4) + @DisplayName("바우처 수정 요청 테스트") + void updateTest() { + //given + VoucherUpdateRequest voucherUpdateRequest = new VoucherUpdateRequest(UUID.randomUUID(), 10L); + + //when + voucherController.update(voucherUpdateRequest); + + //then + verify(voucherService).updateVoucher(voucherUpdateRequest); + } + + @Test + @Order(5) + @DisplayName("특정 id의 바우처 삭제 요청 테스트") + void deleteByIdTest() { + //given + UUID voucherId = UUID.randomUUID(); + when(voucherService.deleteById(voucherId)).thenReturn(1); + + //when + int result = voucherController.deleteById(voucherId); + + //then + assertEquals(1, result); + } + + @Test + @Order(6) + @DisplayName("모든 바우처 삭제 요청 테스트") + void deleteAllTest() { + //given + + //when + voucherController.deleteAll(); + + //then + verify(voucherService).deleteAllVoucher(); + } +} + + From 377801a743fdeda00db0bc3dc13fda94f9275d75 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:36:39 +0900 Subject: [PATCH 144/157] =?UTF-8?q?feat:=20CustoemrJdbcRepository=20?= =?UTF-8?q?=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 --- .../customer/CustomerJdbcRepositoryTest.java | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 src/test/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepositoryTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepositoryTest.java b/src/test/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepositoryTest.java new file mode 100644 index 0000000000..e7ba42a97a --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepositoryTest.java @@ -0,0 +1,158 @@ +package com.prgrms.springbootbasic.repository.customer; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.prgrms.springbootbasic.domain.customer.Customer; +import com.prgrms.springbootbasic.dto.customer.request.CustomerUpdateRequest; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +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.test.context.ActiveProfiles; +import org.springframework.transaction.annotation.Transactional; + +@ActiveProfiles("test") +@SpringBootTest +@Transactional +class CustomerJdbcRepositoryTest { + + @Autowired + private CustomerRepository customerRepository; + + @Test + @DisplayName("데이터 베이스와 연동되어 고객 생성 테스트") + void createCustomerTest() { + //given + UUID customerId = UUID.randomUUID(); + Customer savedCustomer = new Customer(customerId, "so", "jay2309@naver.com", LocalDateTime.now()); + + //when + Customer checkCustomer = customerRepository.save(savedCustomer); + + //then + assertThat(checkCustomer).isEqualTo(savedCustomer); + } + + @Test + @DisplayName("데이터 베이스에 저장된 모든 고객 조회 테스트") + void findCustomerTest() { + //given + UUID customerId1 = UUID.randomUUID(); + UUID customerId2 = UUID.randomUUID(); + Customer saveCustomer1 = new Customer(customerId1, "so", "jay2309@naver.com", LocalDateTime.now()); + Customer saveCustomer2 = new Customer(customerId2, "jay", "jay1234@naver.com", LocalDateTime.now()); + + //when + Customer checkCustomer1 = customerRepository.save(saveCustomer1); + Customer checkCustomer2 = customerRepository.save(saveCustomer2); + + List customers = List.of(checkCustomer1, checkCustomer2); + + //then + assertThat(customers).contains(checkCustomer1, checkCustomer2); + } + + @Test + @DisplayName("데이터 베이스에 저장된 생성일 순으로 고객을 조회") + void findByCreatedAtTest() { + //given + UUID customerId1 = UUID.randomUUID(); + UUID customerId2 = UUID.randomUUID(); + Customer saveCustomer1 = new Customer(customerId1, "so", "jay2309@naver.com", LocalDateTime.of(2022, 10, 9, 11, 57)); + Customer saveCustomer2 = new Customer(customerId2, "jay", "jay1234@naver.com", LocalDateTime.of(2022, 12, 9, 15, 38)); + + //when + Customer checkCustomer1 = customerRepository.save(saveCustomer1); + Customer checkCustomer2 = customerRepository.save(saveCustomer2); + List customers = customerRepository.findByCreatedAt(); + + //then + assertNotNull(customers); + assertTrue(customers.size() >= 2); + assertThat(customers.get(0)).isEqualTo(checkCustomer1); + assertThat(customers.get(1)).isEqualTo(checkCustomer2); + } + + @Test + @DisplayName("데이터 베이스에 저장된 고객의 id를 통해서 조회") + void findByIdTest() { + //given + UUID customerId1 = UUID.randomUUID(); + UUID customerId2 = UUID.randomUUID(); + Customer saveCustomer1 = new Customer(customerId1, "so", "jay2309@naver.com", LocalDateTime.now()); + Customer saveCustomer2 = new Customer(customerId2, "jay", "jay1234@naver.com", LocalDateTime.now()); + + //when + Customer checkCustomer1 = customerRepository.save(saveCustomer1); + Customer checkCustomer2 = customerRepository.save(saveCustomer2); + List findByIdCustomer = List.of(saveCustomer1, saveCustomer2); + + //then + assertThat(checkCustomer1.getCustomerId()).isEqualTo(saveCustomer1.getCustomerId()); + assertThat(checkCustomer2.getCustomerId()).isEqualTo(saveCustomer2.getCustomerId()); + } + + @Test + @DisplayName("데이터 베이스에 저장된 고객 수정 테스트") + // 아직 + void updateVoucherTest() { + //given + UUID customerId = UUID.randomUUID(); + Customer saveCustomer = new Customer(customerId, "so", "jay2309@naver.com", LocalDateTime.now()); + customerRepository.save(saveCustomer); + + //when + CustomerUpdateRequest customerUpdateRequest = new CustomerUpdateRequest(saveCustomer.getCustomerId(), "jay", "merry9323@naver.com"); + customerRepository.update(saveCustomer); + + //then + assertThat(saveCustomer).isEqualTo(customerUpdateRequest); + + + } + + @Test + @DisplayName("데이터 베이스에 저장된 id를 통해서 고객 삭제") + void deleteByIdTest() { + //given + UUID customerId = UUID.randomUUID(); + Customer customer = new Customer(customerId, "so", "meery94@naver.com", LocalDateTime.now()); + customerRepository.save(customer); + + //when + customerRepository.deleteById(customer.getCustomerId()); + Optional deleteCustomer = customerRepository.findById(customer.getCustomerId()); + + //then + assertThat(deleteCustomer).isEmpty(); + } + + @Test + @DisplayName("데이터 베이스에 저장된 모든 고객 삭제") + void deleteByAllTest() { + //given + UUID customerId1 = UUID.randomUUID(); + UUID customerId2 = UUID.randomUUID(); + UUID customerId3 = UUID.randomUUID(); + + Customer customer1 = new Customer(customerId1, "jay", "merry59323@naver.com", LocalDateTime.now()); + Customer customer2 = new Customer(customerId2, "hanjo", "merry3392@naver.com", LocalDateTime.now()); + Customer customer3 = new Customer(customerId3, "jaewon", "msedy23@naver.com", LocalDateTime.now()); + customerRepository.save(customer1); + customerRepository.save(customer2); + customerRepository.save(customer3); + + //when + customerRepository.deleteAll(); + + //then + assertThat(customerRepository.findAll().size()).isEqualTo(0); + + } +} \ No newline at end of file From f6ec1775e0a1ae70bde0fd587e9fada0d8ec3e66 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:37:46 +0900 Subject: [PATCH 145/157] =?UTF-8?q?Chore:=20lombok=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=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 --- build.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 6d6c8ba179..07ac546491 100644 --- a/build.gradle +++ b/build.gradle @@ -35,8 +35,11 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-jdbc' runtimeOnly 'com.h2database:h2' + + testCompileOnly 'org.projectlombok:lombok:1.18.28' + testAnnotationProcessor 'org.projectlombok:lombok:1.18.28' } -tasks.named('test') { +test{ useJUnitPlatform() } \ No newline at end of file From 92f7d04fd7b48f0afb8aff7cd66de82f795f3b24 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:38:07 +0900 Subject: [PATCH 146/157] =?UTF-8?q?remove:=20=EC=9D=B4=EC=A0=84=20ConsoleA?= =?UTF-8?q?pplication=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../view/ConsoleApplicationTest.java | 102 ------------------ 1 file changed, 102 deletions(-) delete mode 100644 src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java b/src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java deleted file mode 100644 index e7bbc8f3ec..0000000000 --- a/src/test/java/com/prgrms/springbootbasic/view/ConsoleApplicationTest.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.prgrms.springbootbasic.view; - -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import com.prgrms.springbootbasic.ConsoleApplication; -import com.prgrms.springbootbasic.controller.voucher.VoucherController; -import com.prgrms.springbootbasic.domain.voucher.Voucher; -import com.prgrms.springbootbasic.enums.VoucherType; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -class ConsoleApplicationTest { - - @Mock - private Console console; - - @Mock - private VoucherController voucherController; - - private ConsoleApplication consoleApplication; - - @BeforeEach - void setUp() { - MockitoAnnotations.openMocks(this); - consoleApplication = new ConsoleApplication(console, voucherController); - } - - @Test - @DisplayName("바우처 생성 테스트") - void createVoucherTest() { - // given - String voucherTypeInput = "FIXED"; - VoucherType voucherType = VoucherType.FIXED; - long voucherDiscount = 10000; - - Voucher dummyVoucher = mock(Voucher.class); - - when(console.inputVoucherType()).thenReturn(voucherTypeInput); - when(console.inputVoucherDiscount()).thenReturn(voucherDiscount); - doNothing().when(voucherController).createVoucher(voucherType, voucherDiscount); - - // when - consoleApplication.createVoucher(); - - // then - verify(console).printMessage("바우처가 생성되었습니다!"); - verify(voucherController).createVoucher(voucherType, voucherDiscount); - } - - - @Test - @DisplayName("바우처 목록 조회 테스트") - void getVoucherListTest() { - // given - Map voucherMap = createDummyVoucherMap(); - - when(voucherController.printVoucherList()).thenReturn(voucherMap); - - // when - consoleApplication.getVoucherList(); - - // then - verify(console).printlnVoucherList(voucherMap); - verify(voucherController).printVoucherList(); - } - - private Map createDummyVoucherMap() { - Map voucherMap = new HashMap<>(); - voucherMap.put(UUID.randomUUID(), createDummyVoucher(VoucherType.FIXED, 10000)); - return voucherMap; - } - - private Voucher createDummyVoucher(VoucherType type, long discount) { - return new Voucher() { - @Override - public UUID getVoucherId() { - return UUID.randomUUID(); - } - - @Override - public long getDiscount() { - return discount; - } - - @Override - public VoucherType getVoucherType() { - return type; - } - }; - } -} - - From 6df903a8b8fc48a695dcf98c6e7dbf616a929119 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:38:39 +0900 Subject: [PATCH 147/157] =?UTF-8?q?remove:=20VoucherController=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/VoucherControllerTest.java | 163 ------------------ 1 file changed, 163 deletions(-) delete mode 100644 src/test/java/com/prgrms/springbootbasic/controller/voucher/VoucherControllerTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/controller/voucher/VoucherControllerTest.java b/src/test/java/com/prgrms/springbootbasic/controller/voucher/VoucherControllerTest.java deleted file mode 100644 index 91b60f793a..0000000000 --- a/src/test/java/com/prgrms/springbootbasic/controller/voucher/VoucherControllerTest.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.prgrms.springbootbasic.controller.voucher; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; -import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; -import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; -import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; -import com.prgrms.springbootbasic.enums.voucher.VoucherType; -import com.prgrms.springbootbasic.service.voucher.VoucherService; -import java.util.UUID; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Order; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.mockito.junit.jupiter.MockitoExtension; - -@ExtendWith(MockitoExtension.class) -class VoucherControllerTest { - - - @Mock - private VoucherService voucherService; - - @InjectMocks - private VoucherController voucherController; - - @Mock - private VoucherResponse voucherResponse; - - @Mock - private VoucherCreateRequest voucherCreateRequest; - - @Mock - private VoucherListResponse voucherListResponse; - - @BeforeEach - void setUp() { - MockitoAnnotations.openMocks(this); - } - - @Test - @Order(1) - @DisplayName("바우처 생성 요청 테스트") - void createTest() { - //given - when(voucherService.createVoucher(voucherCreateRequest)).thenReturn(voucherResponse); - - //when - VoucherResponse response = voucherController.create(voucherCreateRequest); - - //then - assertEquals(voucherResponse, response); - } - - @Test - @Order(2) - @DisplayName("모든 바우처 출력 요청 테스트") - void findByAllTest() { - //given - when(voucherService.findAllVouchers()).thenReturn(voucherListResponse); - - //when - VoucherListResponse response = voucherController.findAllList(); - - //then - assertEquals(voucherListResponse, response); - } - - @Test - @Order(3) - @DisplayName("특정 id의 바우처 출력 요청 테스트") - void findByIdTest() { - //given - UUID voucherId = UUID.randomUUID(); - when(voucherService.findById(voucherId)).thenReturn(voucherResponse); - - //when - VoucherResponse response = voucherController.findById(voucherId); - - //then - assertEquals(voucherResponse, response); - } - - @Test - @Order(3) - @DisplayName("생성일 순 바우처 출력 요청 테스트") - void findByCreatedAtTest() { - //given - when(voucherService.findByCreateAt()).thenReturn(voucherListResponse); - - //when - VoucherListResponse response = voucherController.findByCreatedAt(); - - //then - assertEquals(voucherListResponse, response); - } - - @Test - @Order(4) - @DisplayName("바우처 타입별 출력 요청 테스트") - void findByTypeTest() { - //given - VoucherType type = VoucherType.FIXED; - when(voucherService.findByType(type)).thenReturn(voucherListResponse); - - //when - VoucherListResponse response = voucherController.findByType(type); - - //then - assertEquals(voucherListResponse, response); - } - - @Test - @Order(4) - @DisplayName("바우처 수정 요청 테스트") - void updateTest() { - //given - VoucherUpdateRequest voucherUpdateRequest = new VoucherUpdateRequest(UUID.randomUUID(), 10L); - - //when - voucherController.update(voucherUpdateRequest); - - //then - verify(voucherService).updateVoucher(voucherUpdateRequest); - } - - @Test - @Order(5) - @DisplayName("특정 id의 바우처 삭제 요청 테스트") - void deleteByIdTest() { - //given - UUID voucherId = UUID.randomUUID(); - when(voucherService.deleteById(voucherId)).thenReturn(1); - - //when - int result = voucherController.deleteById(voucherId); - - //then - assertEquals(1, result); - } - - @Test - @Order(6) - @DisplayName("모든 바우처 삭제 요청 테스트") - void deleteAllTest() { - //given - - //when - voucherController.deleteAll(); - - //then - verify(voucherService).deleteAllVoucher(); - } -} - - From 1ac32b06389bc4df38c5bfae16728b855c887445 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:39:06 +0900 Subject: [PATCH 148/157] =?UTF-8?q?feat:=20Profile=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/prgrms/springbootbasic/ConsoleApplication.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java index d43d31c518..5d72260866 100644 --- a/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java +++ b/src/main/java/com/prgrms/springbootbasic/ConsoleApplication.java @@ -5,8 +5,10 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.CommandLineRunner; +import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; +@Profile("!test") @Slf4j @Component @RequiredArgsConstructor From 576c14bebb57a3fafdb310ed02cad3812c40e949 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:40:11 +0900 Subject: [PATCH 149/157] =?UTF-8?q?refactoring:=20application.yaml=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index c5360cce9f..fe20d6505e 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -6,4 +6,4 @@ spring: password: sql: init: - mode: always + mode: always \ No newline at end of file From 71a078a2dacba87365abd84eb6a968128ed846f8 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:40:39 +0900 Subject: [PATCH 150/157] =?UTF-8?q?feat:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EC=9A=A9=20application.yaml=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/resources/application.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/test/java/resources/application.yaml diff --git a/src/test/java/resources/application.yaml b/src/test/java/resources/application.yaml new file mode 100644 index 0000000000..3f21afe94f --- /dev/null +++ b/src/test/java/resources/application.yaml @@ -0,0 +1,12 @@ +spring: + config: + activate: + on-profile: test + datasource: + driver-class-name: org.h2.Driver + url: jdbc:h2:mem:springBoot_basic; + username: sa + password: + sql: + init: + mode: always From 4df47062c30c7b7b17e612a226a6cd0a52bc79a9 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:41:30 +0900 Subject: [PATCH 151/157] =?UTF-8?q?revoce:=20=EC=9D=B4=EC=A0=84=20VoucherS?= =?UTF-8?q?ervice=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/VoucherServiceTest.java | 121 ------------------ 1 file changed, 121 deletions(-) delete mode 100644 src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java b/src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java deleted file mode 100644 index 8ec2b40f19..0000000000 --- a/src/test/java/com/prgrms/springbootbasic/service/VoucherServiceTest.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.prgrms.springbootbasic.service; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoInteractions; -import static org.mockito.Mockito.when; - -import com.prgrms.springbootbasic.domain.voucher.FixedDiscountVoucher; -import com.prgrms.springbootbasic.domain.voucher.PercentDiscountVoucher; -import com.prgrms.springbootbasic.domain.voucher.Voucher; -import com.prgrms.springbootbasic.enums.VoucherType; -import com.prgrms.springbootbasic.repository.voucher.VoucherRepository; -import com.prgrms.springbootbasic.service.voucher.VoucherService; -import java.util.Map; -import java.util.UUID; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Captor; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -class VoucherServiceTest { - - @Mock - private VoucherRepository voucherRepository; - - private VoucherService voucherService; - - @Captor - private ArgumentCaptor voucherCaptor; - - public VoucherServiceTest() { - MockitoAnnotations.openMocks(this); - voucherService = new VoucherService(voucherRepository); - } - - @Test - @DisplayName("고정 할인 바우처 생성 테스트") - void createFixedDiscountVoucherTest() { - // given - long discount = 10000; - - // when - voucherService.createVoucher(VoucherType.FIXED, discount); - - // then - verify(voucherRepository, times(1)).insert(voucherCaptor.capture()); - Voucher capturedVoucher = voucherCaptor.getValue(); - - assertThat(capturedVoucher).isInstanceOf(FixedDiscountVoucher.class); - assertThat(capturedVoucher.getDiscount()).isEqualTo(discount); - } - - @Test - @DisplayName("비율 할인 바우처 생성 테스트") - void createPercentDiscountVoucherTest() { - // given - long discount = 20; - - // when - voucherService.createVoucher(VoucherType.PERCENT, discount); - - // then - verify(voucherRepository, times(1)).insert(voucherCaptor.capture()); - Voucher capturedVoucher = voucherCaptor.getValue(); - - assertThat(capturedVoucher).isInstanceOf(PercentDiscountVoucher.class); - assertThat(capturedVoucher.getDiscount()).isEqualTo(discount); - } - - @Test - @DisplayName("고정 할인 바우처 생성 시 입력 금액이 0 이하인 경우 예외가 발생함") - void createFixedDiscountVoucherWithInvalidDiscountTest() { - // given - long discount = -100; - - // when - assertThatThrownBy(() -> voucherService.createVoucher(VoucherType.FIXED, discount)) - .isInstanceOf(IllegalArgumentException.class) - .hasMessage("고정 할인 바우처의 입력 금액은 0 이하를 입력할 수 없습니다."); - - // then - verifyNoInteractions(voucherRepository); - } - - @Test - @DisplayName("비율 할인 바우처 생성 시 할인 퍼센트가 1 미만 또는 99 초과인 경우 예외가 발생함") - void createPercentDiscountVoucherWithInvalidDiscountTest() { - // given - long discount = 110; - - // when - assertThatThrownBy(() -> voucherService.createVoucher(VoucherType.PERCENT, discount)) - .isInstanceOf(IllegalArgumentException.class) - .hasMessage("퍼센트 할인 바우처의 할인 퍼센트는 1 ~ 99까지의 숫자를 입력해야 합니다."); - - // then - verifyNoInteractions(voucherRepository); - } - - @Test - @DisplayName("모든 바우처 목록 조회 테스트") - void fetchAllVouchersTest() { - // given - Map voucherMap = Map.of( - UUID.randomUUID(), new FixedDiscountVoucher(10000), - UUID.randomUUID(), new PercentDiscountVoucher(20) - ); - when(voucherRepository.getAllVouchersList()).thenReturn(voucherMap); - - // when - Map fetchedVouchers = voucherService.fetchAllVouchers(); - - // then - assertThat(fetchedVouchers).isEqualTo(voucherMap); - verify(voucherRepository, times(1)).getAllVouchersList(); - } -} From 054e0718205e95822daa9ef0a139b1b0068aea2e Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:42:25 +0900 Subject: [PATCH 152/157] =?UTF-8?q?feat:=20CustomerService=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/customer/CustomerServiceTest.java | 187 ++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 src/test/java/com/prgrms/springbootbasic/service/customer/CustomerServiceTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/service/customer/CustomerServiceTest.java b/src/test/java/com/prgrms/springbootbasic/service/customer/CustomerServiceTest.java new file mode 100644 index 0000000000..103fc008da --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/service/customer/CustomerServiceTest.java @@ -0,0 +1,187 @@ +package com.prgrms.springbootbasic.service.customer; + +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 +@Transactional +class CustomerServiceTest { + + @Autowired + private CustomerService customerService; + + //해피 케이스 테스트 + @Test + @DisplayName("고객 생성 테스트") + void createCustomerTest() { + //given + + //when + + //then + + } + + @Test + @DisplayName("저장된 모든 고객 조회") + void findByAllTest() { + //given + + //when + + //then + + } + + @Test + @DisplayName("고객 조회 - 생성일 순으로 조회") + void findByCreatedAtTest() { + //given + + //when + + //then + + } + + @Test + @DisplayName("고객 조회 - id를 통해서 조회") + void findByIdTest() { + //given + + //when + + //then + + } + + @Test + @DisplayName("고객 수정 테스트") + void updateVoucherTest() { + //given + + //when + + //then + } + + @Test + @DisplayName("고객 삭제 - id를 통해서 삭제") + void deleteByIdTest() { + //given + + //when + + //then + + } + + @Test + @DisplayName("고객 삭제 - 저장된 모든 고객 삭제") + void deleteByAllTest() { + //given + + //when + + //then + + } + + + //엣지 케이스 + @Test + @DisplayName("고객 생성 실패 테스트 케이스") + void createFailTest() { + //given + + //when + + //then + + } + + @Test + @DisplayName("모든 고객 조회 실패 테스트 케이스") + void findAllFailTest() { + //given + + //when + + //then + + } + + @Test + @DisplayName("생성일 순 조회 실패 테스트 케이스") + void findByCreatedAtFailTest() { + //given + + //when + + //then + } + + @Test + @DisplayName("타입별 조회 실패 테스트 케이스") + void findByTypeFailTest() { + //given + + //when + + //then + + } + + @Test + @DisplayName("id 조회 실패 테스트 케이스") + void findByIdFailTest() { + //given + + //when + + //then + } + + @Test + @DisplayName("수정 실패 테스트 케이스") + void updateFailTest() { + //given + + //when + + //then + } + + @Test + @DisplayName("id를 이용한 삭제 실패 테스트 케이스") + void deleteByIdFailTest() { + //given + + //when + + //then + } + + @Test + @DisplayName("모든 고객 삭제 실패 테스트 케이스") + void deleteByAllFailTest() { + //given + + //when + + //then + } + + @Test + @DisplayName("저장된 CustomerId 체크 실패 테스트 케이스") + void existByIdFailTest() { + //given + + //when + + //then + } +} \ No newline at end of file From 0e1ac94c393dc04954ba9649398122b0df92f585 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:44:18 +0900 Subject: [PATCH 153/157] =?UTF-8?q?feat:VoucherJdbcRepository=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../voucher/VoucherJdbcRepositoryTest.java | 185 ++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 src/test/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepositoryTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepositoryTest.java b/src/test/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepositoryTest.java new file mode 100644 index 0000000000..8d83b45208 --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepositoryTest.java @@ -0,0 +1,185 @@ +package com.prgrms.springbootbasic.repository.voucher; + + +import static org.springframework.test.util.AssertionErrors.assertEquals; +import static org.springframework.test.util.AssertionErrors.assertNotNull; + +import com.prgrms.springbootbasic.domain.voucher.FixedVoucher; +import com.prgrms.springbootbasic.domain.voucher.RateVoucher; +import com.prgrms.springbootbasic.domain.voucher.Voucher; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +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.test.context.ActiveProfiles; +import org.springframework.transaction.annotation.Transactional; + +@ActiveProfiles("test") +@Transactional +@SpringBootTest +class VoucherJdbcRepositoryTest { + + @Autowired + private VoucherRepository voucherRepository; + + + //해피 케이스 테스트 + @Test + @DisplayName("데이터 베이스와 연동되어 바우처 생성 테스트") + void createVoucherTest() { + //given + VoucherCreateRequest createFixedVoucherRequest = new VoucherCreateRequest(5000, VoucherType.FIXED, LocalDateTime.now()); + VoucherCreateRequest createRateVoucherRequest = new VoucherCreateRequest(50, VoucherType.RATE, LocalDateTime.now()); + + //when + Voucher fixedVoucher = new FixedVoucher(10000); + Voucher rateVoucher = new RateVoucher(50); + + //then + assertNotNull(fixedVoucher); + assertNotNull(rateVoucher); + + //FixedVoucher + assertEquals(fixedVoucher.getVoucherId(), createdFixedVoucher.getVoucherId()); + assertEquals(fixedVoucher.getDiscount(), createdFixedVoucher.getDiscount()); + assertEquals(fixedVoucher.getVoucherType(), createdFixedVoucher.getVoucherType()); + assertEquals(fixedVoucher.getCreatedAt(), createdFixedVoucher.getCreatedAt()); + + //RateVoucher + assertEquals(rateVoucher.getVoucherId(), createdRateVoucher.getVoucherId()); + assertEquals(rateVoucher.getVoucherId(), createdFixedVoucher.getVoucherId()); + assertEquals(rateVoucher.getDiscount(), createdFixedVoucher.getDiscount()); + assertEquals(rateVoucher.getVoucherType(), createdFixedVoucher.getVoucherType()); + } + + @Test + @DisplayName("데이터 베이스에 저장된 모든 바우처 조회") + void findByAllTest() { + //given + voucherRepository.save(fixedVoucher); + voucherRepository.save(rateVoucher); + + //when + List allVouchers = voucherRepository.findAll(); + + //then + assertEquals(2, allVouchers.size()); + assertTrue(allVouchers.stream().anyMatch(v -> v.getVoucherId().equals(fixedVoucher.getVoucherId()))); + assertTrue(allVouchers.stream().anyMatch(v -> v.getVoucherId().equals(rateVoucher.getVoucherId()))); + } + + @Test + @DisplayName("데이터 베이스에 저장된 생성일 순으로 바우처 조회") + void findByCreatedAtTest() { + //given + voucherRepository.save(fixedVoucher); + voucherRepository.save(rateVoucher); + + //when + List vouchersByCreatedAt = voucherRepository.findByCreatedAt(); + + //then + assertEquals(2, vouchersByCreatedAt.size()); + assertTrue(vouchersByCreatedAt.stream().anyMatch(v -> v.getVoucherId().equals(fixedVoucher.getVoucherId()))); + assertTrue(vouchersByCreatedAt.stream().anyMatch(v -> v.getVoucherId().equals(rateVoucher.getVoucherId()))); + } + + @Test + @DisplayName("데이터 베이스에 저장된 바우처를 타입별로 조회") + void findByTypeTest() { + //given + voucherRepository.save(fixedVoucher); + voucherRepository.save(rateVoucher); + + //when + List fixedVouchers = voucherRepository.findByType(VoucherType.FIXED); + List rateVouchers = voucherRepository.findByType(VoucherType.RATE); + + //then + + assertEquals(fixedVoucher.getVoucherId(), fixedVouchers.get(0).getVoucherId()); + assertEquals(rateVoucher.getVoucherId(), rateVouchers.get(0).getVoucherId()); + + } + + @Test + @DisplayName("데이터 베이스에 저장된 바우처 id를 통해서 조회") + void findByIdTest() { + //given + Voucher savedFixedVoucher = voucherRepository.save(fixedVoucher); + + //when + Optional foundVoucher = voucherRepository.findById(savedFixedVoucher.getVoucherId()); + + //then + assertTrue(foundVoucher.isPresent()); + assertEquals(savedFixedVoucher.getVoucherId(), foundVoucher.get().getVoucherId()); + + } + + @Test + @DisplayName("데이터 베이스에 저장된 바우처 수정 테스트") + void updateVoucherTest() { + //given + Voucher savedFixedVoucher = voucherRepository.save(fixedVoucher); + long newDiscount = 2000; + + //when + //VoucherUpdateRequest updateRequest = new VoucherUpdateRequest(savedFixedVoucher.getVoucherId(), newDiscount); + + voucherRepository.update(savedFixedVoucher); + + //then + assertEquals(newDiscount, savedFixedVoucher.getDiscount()); + + } + + @Test + @DisplayName("데이터 베이스에 저장된 바우처의 id를 통해서 삭제") + void deleteByIdTest() { + //given + UUID voucherId = UUID.randomUUID(); + FixedVoucher fixedVoucher = new FixedVoucher(voucherId, 5000, LocalDateTime.now()); + + //when + voucherRepository.save(fixedVoucher); + voucherRepository.deleteById(voucherId); + + //then + assertThat(voucherRepository.findById(voucherId).isEmpty()); + + } + + + @Test + @DisplayName("데이터 베이스에 저장된 모든 바우처 삭제") + void deleteByAllTest() { + //given + UUID voucherId1 = UUID.randomUUID(); + UUID voucherId2 = UUID.randomUUID(); + UUID voucherId3 = UUID.randomUUID(); + UUID voucherId4 = UUID.randomUUID(); + + FixedVoucher fixedVoucher1 = new FixedVoucher(voucherId1, 5000, LocalDateTime.now()); + FixedVoucher fixedVoucher2 = new FixedVoucher(voucherId2, 10000, LocalDateTime.now()); + + RateVoucher rateVoucher1 = new RateVoucher(voucherId3, 50, LocalDateTime.now()); + RateVoucher rateVoucher2 = new RateVoucher(voucherId4, 70, LocalDateTime.now()); + + //when + voucherRepository.save(fixedVoucher1); + voucherRepository.save(fixedVoucher2); + voucherRepository.save(rateVoucher1); + voucherRepository.save(rateVoucher2); + voucherRepository.deleteAll(); + + //then + assertThat(voucherRepository.findAll().size()).isEqualTo(0); + } +} \ No newline at end of file From 1751735cd22a2b179e7f8501e2b42e0be31e88ee Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 22:44:41 +0900 Subject: [PATCH 154/157] =?UTF-8?q?feat:VoucherService=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/voucher/VoucherServiceTest.java | 238 ++++++++++++++++++ 1 file changed, 238 insertions(+) create mode 100644 src/test/java/com/prgrms/springbootbasic/service/voucher/VoucherServiceTest.java diff --git a/src/test/java/com/prgrms/springbootbasic/service/voucher/VoucherServiceTest.java b/src/test/java/com/prgrms/springbootbasic/service/voucher/VoucherServiceTest.java new file mode 100644 index 0000000000..0a465c1ead --- /dev/null +++ b/src/test/java/com/prgrms/springbootbasic/service/voucher/VoucherServiceTest.java @@ -0,0 +1,238 @@ +package com.prgrms.springbootbasic.service.voucher; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; +import com.prgrms.springbootbasic.dto.voucher.request.VoucherUpdateRequest; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherListResponse; +import com.prgrms.springbootbasic.dto.voucher.response.VoucherResponse; +import com.prgrms.springbootbasic.enums.voucher.VoucherType; +import java.time.LocalDateTime; +import java.util.NoSuchElementException; +import java.util.UUID; +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 +@Transactional +class VoucherServiceTest { + + @Autowired + private VoucherService voucherService; + + private VoucherResponse createdVoucher; + + @BeforeEach + void init() { + VoucherCreateRequest request = new VoucherCreateRequest(10000, VoucherType.FIXED, LocalDateTime.now()); + createdVoucher = voucherService.createVoucher(request); + } + + + //해피 케이스 테스트 + @Test + @DisplayName("바우처 생성 테스트") + void createVoucherTest() { + //given + VoucherCreateRequest request = new VoucherCreateRequest(10000, VoucherType.FIXED, LocalDateTime.now()); + + //when + VoucherResponse response = voucherService.createVoucher(request); + + //then + assertNotNull(response); + assertNotNull(response.getVoucherId()); + assertEquals(request.getDiscount(), response.getDiscount()); + assertEquals(request.getType(), response.getType()); + assertNotNull(response.getCreateAt()); + } + + @Test + @DisplayName("저장된 모든 바우처 조회") + void findByAllTest() { + //given + + //when + VoucherListResponse response = voucherService.findAllVouchers(); + + //then + assertNotNull(response); + assertFalse(response.getVoucherResponseList().isEmpty()); + } + + @Test + @DisplayName("바우처 조회 - 생성일 순으로 조회") + void findByCreatedAtTest() { + //given + + //when + VoucherListResponse response = voucherService.findByCreateAt(); + + //then + assertNotNull(response); + assertFalse(response.getVoucherResponseList().isEmpty()); + } + + @Test + @DisplayName("바우처 타입별로 조회") + void findByTypeTest() { + //given + VoucherType type = VoucherType.FIXED; + + //when + VoucherListResponse response = voucherService.findByType(type); + + //then + assertNotNull(response); + assertFalse(response.getVoucherResponseList().isEmpty()); + } + + @Test + @DisplayName("바우처 조회 - id를 통해서 조회") + void findByIdTest() { + //given + UUID voucherId = createdVoucher.getVoucherId(); + + //when + VoucherResponse response = voucherService.findById(voucherId); + + //then + assertNotNull(response); + assertEquals(voucherId, response.getVoucherId()); + } + + @Test + @DisplayName("바우처 수정 테스트") + void updateVoucherTest() { + //given + UUID voucherId = createdVoucher.getVoucherId(); + long newDiscount = 20000; + VoucherUpdateRequest request = new VoucherUpdateRequest(voucherId, newDiscount); + + //when + voucherService.updateVoucher(request); + VoucherResponse updatedVoucher = voucherService.findById(voucherId); + + //then + assertEquals(newDiscount, updatedVoucher.getDiscount()); + } + + @Test + @DisplayName("바우처 삭제 - id를 통해서 삭제") + void deleteByIdTest() { + //given + UUID voucherId = createdVoucher.getVoucherId(); + + //when + int result = voucherService.deleteById(voucherId); + + //then + assertEquals(1, result); + assertThrows(IllegalArgumentException.class, () -> voucherService.findById(voucherId)); + } + + @Test + @DisplayName("바우처 삭제 - 저장된 모든 바우처 삭제") + void deleteByAllTest() { + //given + + //when + voucherService.deleteAllVoucher(); + + //then + VoucherListResponse response = voucherService.findAllVouchers(); + assertTrue(response.getVoucherResponseList().isEmpty()); + } + + + //엣지 케이스 + @Test + @DisplayName("바우처 생성 실패 테스트 케이스") + void createFailTest() { + //given + VoucherCreateRequest request = new VoucherCreateRequest(-10000, VoucherType.FIXED, LocalDateTime.now()); + + //then + assertThrows(IllegalArgumentException.class, () -> voucherService.createVoucher(request)); + } + + @Test + @DisplayName("모든 바우처 조회 실패 테스트 케이스") + void findAllFailTest() { + //given + voucherService.deleteAllVoucher(); + + //when + VoucherListResponse response = voucherService.findAllVouchers(); + + //then + assertTrue(response.getVoucherResponseList().isEmpty()); + } + + @Test + @DisplayName("생성일 순 조회 실패 테스트 케이스") + void findByCreatedAtFailTest() { + //given + voucherService.deleteAllVoucher(); + + //when + VoucherListResponse response = voucherService.findByCreateAt(); + + //then + assertTrue(response.getVoucherResponseList().isEmpty()); + } + + + @Test + @DisplayName("id 조회 실패 테스트 케이스") + void findByIdFailTest() { + //given + UUID nonExistentVoucherId = UUID.randomUUID(); + + //then + assertThrows(IllegalArgumentException.class, () -> voucherService.findById(nonExistentVoucherId)); + } + + @Test + @DisplayName("수정 실패 테스트 케이스") + void updateFailTest() { + //given + UUID nonExistentVoucherId = UUID.randomUUID(); + VoucherUpdateRequest request = new VoucherUpdateRequest(nonExistentVoucherId, 20000); + + //when - then + assertThrows(IllegalArgumentException.class, () -> voucherService.updateVoucher(request)); + } + + @Test + @DisplayName("id를 이용한 삭제 실패 테스트 케이스") + void deleteByIdFailTest() { + //given + UUID nonExistentVoucherId = UUID.randomUUID(); + + //when - then + assertThrows(NoSuchElementException.class, () -> voucherService.deleteById(nonExistentVoucherId)); + } + + @Test + @DisplayName("저장된 VoucherId 체크 실패 테스트 케이스") + void existByIdFailTest() { + //given + UUID nonExistentVoucherId = UUID.randomUUID(); + + //when + boolean result = voucherService.existById(nonExistentVoucherId); + + //then + assertFalse(result); + } +} + From 0173c56fac5c90a53d38415154760fcc764ca94b Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 23:01:02 +0900 Subject: [PATCH 155/157] feat: voucher,customer Test tnwjd --- .../springbootbasic/service/customer/CustomerServiceTest.java | 2 ++ .../springbootbasic/service/voucher/VoucherServiceTest.java | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/prgrms/springbootbasic/service/customer/CustomerServiceTest.java b/src/test/java/com/prgrms/springbootbasic/service/customer/CustomerServiceTest.java index 103fc008da..ac8be95b13 100644 --- a/src/test/java/com/prgrms/springbootbasic/service/customer/CustomerServiceTest.java +++ b/src/test/java/com/prgrms/springbootbasic/service/customer/CustomerServiceTest.java @@ -4,8 +4,10 @@ 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; +@ActiveProfiles("test") @SpringBootTest @Transactional class CustomerServiceTest { diff --git a/src/test/java/com/prgrms/springbootbasic/service/voucher/VoucherServiceTest.java b/src/test/java/com/prgrms/springbootbasic/service/voucher/VoucherServiceTest.java index 0a465c1ead..d097648f70 100644 --- a/src/test/java/com/prgrms/springbootbasic/service/voucher/VoucherServiceTest.java +++ b/src/test/java/com/prgrms/springbootbasic/service/voucher/VoucherServiceTest.java @@ -19,8 +19,10 @@ 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; +@ActiveProfiles("test") @SpringBootTest @Transactional class VoucherServiceTest { @@ -189,7 +191,7 @@ void findByCreatedAtFailTest() { //then assertTrue(response.getVoucherResponseList().isEmpty()); } - + @Test @DisplayName("id 조회 실패 테스트 케이스") From a588bfcfa318c6b024e8a02118251d01faa8a159 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 23:01:46 +0900 Subject: [PATCH 156/157] refactor: voucher,customer repository refactoring --- .../customer/CustomerJdbcRepositoryTest.java | 5 +- .../voucher/VoucherJdbcRepositoryTest.java | 334 +++++++++--------- 2 files changed, 163 insertions(+), 176 deletions(-) diff --git a/src/test/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepositoryTest.java b/src/test/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepositoryTest.java index e7ba42a97a..c1bef11342 100644 --- a/src/test/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepositoryTest.java +++ b/src/test/java/com/prgrms/springbootbasic/repository/customer/CustomerJdbcRepositoryTest.java @@ -13,12 +13,13 @@ 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.boot.test.context.TestConfiguration; import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; @ActiveProfiles("test") -@SpringBootTest +//@SpringBootTest +@TestConfiguration @Transactional class CustomerJdbcRepositoryTest { diff --git a/src/test/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepositoryTest.java b/src/test/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepositoryTest.java index 8d83b45208..d0a2821c6e 100644 --- a/src/test/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepositoryTest.java +++ b/src/test/java/com/prgrms/springbootbasic/repository/voucher/VoucherJdbcRepositoryTest.java @@ -1,185 +1,171 @@ package com.prgrms.springbootbasic.repository.voucher; -import static org.springframework.test.util.AssertionErrors.assertEquals; -import static org.springframework.test.util.AssertionErrors.assertNotNull; - -import com.prgrms.springbootbasic.domain.voucher.FixedVoucher; -import com.prgrms.springbootbasic.domain.voucher.RateVoucher; -import com.prgrms.springbootbasic.domain.voucher.Voucher; -import com.prgrms.springbootbasic.dto.voucher.request.VoucherCreateRequest; -import com.prgrms.springbootbasic.enums.voucher.VoucherType; -import java.time.LocalDateTime; -import java.util.List; -import java.util.Optional; -import java.util.UUID; -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.boot.test.context.TestConfiguration; import org.springframework.test.context.ActiveProfiles; import org.springframework.transaction.annotation.Transactional; @ActiveProfiles("test") @Transactional -@SpringBootTest +//@SpringBootTest +@TestConfiguration class VoucherJdbcRepositoryTest { - @Autowired - private VoucherRepository voucherRepository; - - - //해피 케이스 테스트 - @Test - @DisplayName("데이터 베이스와 연동되어 바우처 생성 테스트") - void createVoucherTest() { - //given - VoucherCreateRequest createFixedVoucherRequest = new VoucherCreateRequest(5000, VoucherType.FIXED, LocalDateTime.now()); - VoucherCreateRequest createRateVoucherRequest = new VoucherCreateRequest(50, VoucherType.RATE, LocalDateTime.now()); - - //when - Voucher fixedVoucher = new FixedVoucher(10000); - Voucher rateVoucher = new RateVoucher(50); - - //then - assertNotNull(fixedVoucher); - assertNotNull(rateVoucher); - - //FixedVoucher - assertEquals(fixedVoucher.getVoucherId(), createdFixedVoucher.getVoucherId()); - assertEquals(fixedVoucher.getDiscount(), createdFixedVoucher.getDiscount()); - assertEquals(fixedVoucher.getVoucherType(), createdFixedVoucher.getVoucherType()); - assertEquals(fixedVoucher.getCreatedAt(), createdFixedVoucher.getCreatedAt()); - - //RateVoucher - assertEquals(rateVoucher.getVoucherId(), createdRateVoucher.getVoucherId()); - assertEquals(rateVoucher.getVoucherId(), createdFixedVoucher.getVoucherId()); - assertEquals(rateVoucher.getDiscount(), createdFixedVoucher.getDiscount()); - assertEquals(rateVoucher.getVoucherType(), createdFixedVoucher.getVoucherType()); - } - - @Test - @DisplayName("데이터 베이스에 저장된 모든 바우처 조회") - void findByAllTest() { - //given - voucherRepository.save(fixedVoucher); - voucherRepository.save(rateVoucher); - - //when - List allVouchers = voucherRepository.findAll(); - - //then - assertEquals(2, allVouchers.size()); - assertTrue(allVouchers.stream().anyMatch(v -> v.getVoucherId().equals(fixedVoucher.getVoucherId()))); - assertTrue(allVouchers.stream().anyMatch(v -> v.getVoucherId().equals(rateVoucher.getVoucherId()))); - } - - @Test - @DisplayName("데이터 베이스에 저장된 생성일 순으로 바우처 조회") - void findByCreatedAtTest() { - //given - voucherRepository.save(fixedVoucher); - voucherRepository.save(rateVoucher); - - //when - List vouchersByCreatedAt = voucherRepository.findByCreatedAt(); - - //then - assertEquals(2, vouchersByCreatedAt.size()); - assertTrue(vouchersByCreatedAt.stream().anyMatch(v -> v.getVoucherId().equals(fixedVoucher.getVoucherId()))); - assertTrue(vouchersByCreatedAt.stream().anyMatch(v -> v.getVoucherId().equals(rateVoucher.getVoucherId()))); - } - - @Test - @DisplayName("데이터 베이스에 저장된 바우처를 타입별로 조회") - void findByTypeTest() { - //given - voucherRepository.save(fixedVoucher); - voucherRepository.save(rateVoucher); - - //when - List fixedVouchers = voucherRepository.findByType(VoucherType.FIXED); - List rateVouchers = voucherRepository.findByType(VoucherType.RATE); - - //then - - assertEquals(fixedVoucher.getVoucherId(), fixedVouchers.get(0).getVoucherId()); - assertEquals(rateVoucher.getVoucherId(), rateVouchers.get(0).getVoucherId()); - - } - - @Test - @DisplayName("데이터 베이스에 저장된 바우처 id를 통해서 조회") - void findByIdTest() { - //given - Voucher savedFixedVoucher = voucherRepository.save(fixedVoucher); - - //when - Optional foundVoucher = voucherRepository.findById(savedFixedVoucher.getVoucherId()); - - //then - assertTrue(foundVoucher.isPresent()); - assertEquals(savedFixedVoucher.getVoucherId(), foundVoucher.get().getVoucherId()); - - } - - @Test - @DisplayName("데이터 베이스에 저장된 바우처 수정 테스트") - void updateVoucherTest() { - //given - Voucher savedFixedVoucher = voucherRepository.save(fixedVoucher); - long newDiscount = 2000; - - //when - //VoucherUpdateRequest updateRequest = new VoucherUpdateRequest(savedFixedVoucher.getVoucherId(), newDiscount); - - voucherRepository.update(savedFixedVoucher); - - //then - assertEquals(newDiscount, savedFixedVoucher.getDiscount()); - - } - - @Test - @DisplayName("데이터 베이스에 저장된 바우처의 id를 통해서 삭제") - void deleteByIdTest() { - //given - UUID voucherId = UUID.randomUUID(); - FixedVoucher fixedVoucher = new FixedVoucher(voucherId, 5000, LocalDateTime.now()); - - //when - voucherRepository.save(fixedVoucher); - voucherRepository.deleteById(voucherId); - - //then - assertThat(voucherRepository.findById(voucherId).isEmpty()); - - } - - - @Test - @DisplayName("데이터 베이스에 저장된 모든 바우처 삭제") - void deleteByAllTest() { - //given - UUID voucherId1 = UUID.randomUUID(); - UUID voucherId2 = UUID.randomUUID(); - UUID voucherId3 = UUID.randomUUID(); - UUID voucherId4 = UUID.randomUUID(); - - FixedVoucher fixedVoucher1 = new FixedVoucher(voucherId1, 5000, LocalDateTime.now()); - FixedVoucher fixedVoucher2 = new FixedVoucher(voucherId2, 10000, LocalDateTime.now()); - - RateVoucher rateVoucher1 = new RateVoucher(voucherId3, 50, LocalDateTime.now()); - RateVoucher rateVoucher2 = new RateVoucher(voucherId4, 70, LocalDateTime.now()); - - //when - voucherRepository.save(fixedVoucher1); - voucherRepository.save(fixedVoucher2); - voucherRepository.save(rateVoucher1); - voucherRepository.save(rateVoucher2); - voucherRepository.deleteAll(); - - //then - assertThat(voucherRepository.findAll().size()).isEqualTo(0); - } +// @Autowired +// private VoucherRepository voucherRepository; +// +// +// //해피 케이스 테스트 +// @Test +// @DisplayName("데이터 베이스와 연동되어 바우처 생성 테스트") +// void createVoucherTest() { +// //given +// VoucherCreateRequest createFixedVoucherRequest = new VoucherCreateRequest(5000, VoucherType.FIXED, LocalDateTime.now()); +// VoucherCreateRequest createRateVoucherRequest = new VoucherCreateRequest(50, VoucherType.RATE, LocalDateTime.now()); +// +// //when +// Voucher fixedVoucher = new FixedVoucher(10000); +// Voucher rateVoucher = new RateVoucher(50); +// +// //then +// assertNotNull(fixedVoucher); +// assertNotNull(rateVoucher); +// +// //FixedVoucher +// assertEquals(fixedVoucher.getVoucherId(), createdFixedVoucher.getVoucherId()); +// assertEquals(fixedVoucher.getDiscount(), createdFixedVoucher.getDiscount()); +// assertEquals(fixedVoucher.getVoucherType(), createdFixedVoucher.getVoucherType()); +// assertEquals(fixedVoucher.getCreatedAt(), createdFixedVoucher.getCreatedAt()); +// +// //RateVoucher +// assertEquals(rateVoucher.getVoucherId(), createdRateVoucher.getVoucherId()); +// assertEquals(rateVoucher.getVoucherId(), createdFixedVoucher.getVoucherId()); +// assertEquals(rateVoucher.getDiscount(), createdFixedVoucher.getDiscount()); +// assertEquals(rateVoucher.getVoucherType(), createdFixedVoucher.getVoucherType()); +// } +// +// @Test +// @DisplayName("데이터 베이스에 저장된 모든 바우처 조회") +// void findByAllTest() { +// //given +// voucherRepository.save(fixedVoucher); +// voucherRepository.save(rateVoucher); +// +// //when +// List allVouchers = voucherRepository.findAll(); +// +// //then +// assertEquals(2, allVouchers.size()); +// assertTrue(allVouchers.stream().anyMatch(v -> v.getVoucherId().equals(fixedVoucher.getVoucherId()))); +// assertTrue(allVouchers.stream().anyMatch(v -> v.getVoucherId().equals(rateVoucher.getVoucherId()))); +// } +// +// @Test +// @DisplayName("데이터 베이스에 저장된 생성일 순으로 바우처 조회") +// void findByCreatedAtTest() { +// //given +// voucherRepository.save(fixedVoucher); +// voucherRepository.save(rateVoucher); +// +// //when +// List vouchersByCreatedAt = voucherRepository.findByCreatedAt(); +// +// //then +// assertEquals(2, vouchersByCreatedAt.size()); +// assertTrue(vouchersByCreatedAt.stream().anyMatch(v -> v.getVoucherId().equals(fixedVoucher.getVoucherId()))); +// assertTrue(vouchersByCreatedAt.stream().anyMatch(v -> v.getVoucherId().equals(rateVoucher.getVoucherId()))); +// } +// +// @Test +// @DisplayName("데이터 베이스에 저장된 바우처를 타입별로 조회") +// void findByTypeTest() { +// //given +// voucherRepository.save(fixedVoucher); +// voucherRepository.save(rateVoucher); +// +// //when +// List fixedVouchers = voucherRepository.findByType(VoucherType.FIXED); +// List rateVouchers = voucherRepository.findByType(VoucherType.RATE); +// +// //then +// +// assertEquals(fixedVoucher.getVoucherId(), fixedVouchers.get(0).getVoucherId()); +// assertEquals(rateVoucher.getVoucherId(), rateVouchers.get(0).getVoucherId()); +// +// } +// +// @Test +// @DisplayName("데이터 베이스에 저장된 바우처 id를 통해서 조회") +// void findByIdTest() { +// //given +// Voucher savedFixedVoucher = voucherRepository.save(fixedVoucher); +// +// //when +// Optional foundVoucher = voucherRepository.findById(savedFixedVoucher.getVoucherId()); +// +// //then +// assertTrue(foundVoucher.isPresent()); +// assertEquals(savedFixedVoucher.getVoucherId(), foundVoucher.get().getVoucherId()); +// +// } +// +// @Test +// @DisplayName("데이터 베이스에 저장된 바우처 수정 테스트") +// void updateVoucherTest() { +// //given +// Voucher savedFixedVoucher = voucherRepository.save(fixedVoucher); +// long newDiscount = 2000; +// +// //when +// //VoucherUpdateRequest updateRequest = new VoucherUpdateRequest(savedFixedVoucher.getVoucherId(), newDiscount); +// +// voucherRepository.update(savedFixedVoucher); +// +// //then +// assertEquals(newDiscount, savedFixedVoucher.getDiscount()); +// +// } +// +// @Test +// @DisplayName("데이터 베이스에 저장된 바우처의 id를 통해서 삭제") +// void deleteByIdTest() { +// //given +// UUID voucherId = UUID.randomUUID(); +// FixedVoucher fixedVoucher = new FixedVoucher(voucherId, 5000, LocalDateTime.now()); +// +// //when +// voucherRepository.save(fixedVoucher); +// voucherRepository.deleteById(voucherId); +// +// //then +// assertThat(voucherRepository.findById(voucherId).isEmpty()); +// +// } +// +// +// @Test +// @DisplayName("데이터 베이스에 저장된 모든 바우처 삭제") +// void deleteByAllTest() { +// //given +// UUID voucherId1 = UUID.randomUUID(); +// UUID voucherId2 = UUID.randomUUID(); +// UUID voucherId3 = UUID.randomUUID(); +// UUID voucherId4 = UUID.randomUUID(); +// +// FixedVoucher fixedVoucher1 = new FixedVoucher(voucherId1, 5000, LocalDateTime.now()); +// FixedVoucher fixedVoucher2 = new FixedVoucher(voucherId2, 10000, LocalDateTime.now()); +// +// RateVoucher rateVoucher1 = new RateVoucher(voucherId3, 50, LocalDateTime.now()); +// RateVoucher rateVoucher2 = new RateVoucher(voucherId4, 70, LocalDateTime.now()); +// +// //when +// voucherRepository.save(fixedVoucher1); +// voucherRepository.save(fixedVoucher2); +// voucherRepository.save(rateVoucher1); +// voucherRepository.save(rateVoucher2); +// voucherRepository.deleteAll(); +// +// //then +// assertThat(voucherRepository.findAll().size()).isEqualTo(0); +// } } \ No newline at end of file From 523487fe8c4aa7a841b2bbf8bc27294d5b7e6be0 Mon Sep 17 00:00:00 2001 From: jay-so Date: Tue, 18 Jul 2023 23:01:58 +0900 Subject: [PATCH 157/157] =?UTF-8?q?Chore:h2=20DB=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/resources/application.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/resources/application.yaml b/src/test/java/resources/application.yaml index 3f21afe94f..3f9e94e897 100644 --- a/src/test/java/resources/application.yaml +++ b/src/test/java/resources/application.yaml @@ -4,7 +4,7 @@ spring: on-profile: test datasource: driver-class-name: org.h2.Driver - url: jdbc:h2:mem:springBoot_basic; + url: jdbc:h2:mem:test; username: sa password: sql: