From a0f3b1649155618a315af897402cbc58a68121ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F?= <Илья@WIN-RANNDDD> Date: Mon, 1 Apr 2024 16:26:42 +0400 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B7=D0=B0=D0=BA=D0=B0=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=B2=D1=8B=D1=87=D0=B8=D1=81=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D1=81=D1=83=D0=BC=D0=BC=D1=8B=20=D0=B2=20=D1=82=D0=B5=D1=81?= =?UTF-8?q?=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/backend/core/utils/Formatter.java | 2 +- .../backend/orders/service/OrderService.java | 2 - .../backend/OrderBookServiceTests.java | 50 ++++++++++++++++--- .../example/backend/OrderServiceTests.java | 39 +++++++++++++-- 4 files changed, 78 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/example/backend/core/utils/Formatter.java b/src/main/java/com/example/backend/core/utils/Formatter.java index 29b904e..be35427 100644 --- a/src/main/java/com/example/backend/core/utils/Formatter.java +++ b/src/main/java/com/example/backend/core/utils/Formatter.java @@ -8,7 +8,7 @@ public final class Formatter { private Formatter() { } - private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); + private static SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); public static String format(Date date) { return dateFormatter.format(date); diff --git a/src/main/java/com/example/backend/orders/service/OrderService.java b/src/main/java/com/example/backend/orders/service/OrderService.java index ce26835..b2ea2d1 100644 --- a/src/main/java/com/example/backend/orders/service/OrderService.java +++ b/src/main/java/com/example/backend/orders/service/OrderService.java @@ -41,8 +41,6 @@ public class OrderService { public OrderEntity update(Long id, OrderEntity entity) { final OrderEntity existsEntity = get(id); - existsEntity.setUser(entity.getUser()); - existsEntity.setDate(entity.getDate()); existsEntity.setStatus(entity.getStatus()); return repository.update(existsEntity); } diff --git a/src/test/java/com/example/backend/OrderBookServiceTests.java b/src/test/java/com/example/backend/OrderBookServiceTests.java index cf75524..7b76817 100644 --- a/src/test/java/com/example/backend/OrderBookServiceTests.java +++ b/src/test/java/com/example/backend/OrderBookServiceTests.java @@ -54,18 +54,22 @@ class OrderBookServiceTests { .create(new UserEntity(null, "TestUser", "user53262@gmail.com", "lawy7728", false)); final var order1 = orderService .create(new OrderEntity(null, user, Formatter.parse("2024-03-28"), "Выполняется")); - final var order2 = orderService.create(new OrderEntity(null, user, Formatter.parse("2022-09-07"), "Выдан")); + final var order2 = orderService + .create(new OrderEntity(null, user, Formatter.parse("2022-09-07"), "Выдан")); final var book1 = bookService.create(new BookEntity(null, category, "Шестерка воронов", "Ли Бардуго", 700.00, 5624, "Триша Левенселлер — американская писательница, подарившая вам роман «Тени между нами», который стал бестселлером Amazon в разделе «Фэнтези YA», вновь радует своих фанатов новой магической историей «Клинок тайн».\n\nЕще до выхода в свет книгу добавили в раздел «Хочу прочитать» более 10 тысяч человек на портале Goodreads.com.\n\n«Клинок тайн» — первая часть захватывающей дилогии про девушку, которая благодаря магии крови создает самое опасное в мире оружие, и ослепительного юношу, что составляет ей компанию в этом непростом приключении.", "Юная Зива предпочитает проводить время с оружием, а не с людьми. Она кузнец и ей предстоит создать самое могущественное оружие на земле.\n\nДевушка демонстрирует меч, способный от одной капли крови врага раскрыть все тайные замыслы его обладателю.\n\nОднако у заказчика на оружие другие планы: заставить Зиву вооружить мечами свое войско и поработить весь мир. Когда девушка понимает, что меч, созданный благодаря магии крови, невозможно уничтожить и рано или поздно на нее объявят охоту, ей остается только одно – бежать, не оглядываясь. Зиве теперь суждено спасти мир от собственного творения. Но как бы далеко она ни старалась убежать, все ловушки уже расставлены.", - "2946447", "Эксмо", "Young Adult. Бестселлеры Триши Левенселлер", 2022, 480, "20.7x13x2.5", + "2946447", "Эксмо", "Young Adult. Бестселлеры Триши Левенселлер", 2022, 480, + "20.7x13x2.5", "Мягкий переплёт", 1500, 440, "")); - final var book2 = bookService.create(new BookEntity(null, category, "Форсайт", "Сергей Лукъяненко", 775.00, + final var book2 = bookService.create(new BookEntity(null, category, "Форсайт", "Сергей Лукъяненко", + 775.00, 1240, "Новый долгожданный роман от автора бестселлеров «Ночной дозор» и «Черновик». Увлекательная история о Мире После и мире настоящего, где 5 процентов людей знают о надвигающемся апокалипсисе больше, чем кто-либо может представить.", "Людям порой снится прошлое. Иногда хорошее, иногда не очень. Но что делать, если тебе начинает сниться будущее? И в нём ничего хорошего нет совсем.", - "3001249", "АСТ", "Книги Сергея Лукьяненко", 2023, 352, "20.5x13x2", "Твердый переплёт", 20000, + "3001249", "АСТ", "Книги Сергея Лукьяненко", 2023, 352, "20.5x13x2", "Твердый переплёт", + 20000, 350, "")); orderBookService.create(new OrderBookEntity(null, order1, book1, 4)); @@ -83,11 +87,13 @@ class OrderBookServiceTests { .create(new UserEntity(null, "TestUser", "user53262@gmail.com", "lawy7728", false)); final var order1 = orderService .create(new OrderEntity(null, user, Formatter.parse("2024-03-28"), "Выполняется")); - final var book2 = bookService.create(new BookEntity(null, category, "Форсайт", "Сергей Лукъяненко", 775.00, + final var book2 = bookService.create(new BookEntity(null, category, "Форсайт", "Сергей Лукъяненко", + 775.00, 1240, "Новый долгожданный роман от автора бестселлеров «Ночной дозор» и «Черновик». Увлекательная история о Мире После и мире настоящего, где 5 процентов людей знают о надвигающемся апокалипсисе больше, чем кто-либо может представить.", "Людям порой снится прошлое. Иногда хорошее, иногда не очень. Но что делать, если тебе начинает сниться будущее? И в нём ничего хорошего нет совсем.", - "3001249", "АСТ", "Книги Сергея Лукьяненко", 2023, 352, "20.5x13x2", "Твердый переплёт", 20000, + "3001249", "АСТ", "Книги Сергея Лукьяненко", 2023, 352, "20.5x13x2", "Твердый переплёт", + 20000, 350, "")); final Integer newCount = 6; final OrderBookEntity entity = orderBookService.get(3L); @@ -106,12 +112,14 @@ class OrderBookServiceTests { final var category = categoryService.create(new CategoryEntity(null, "Художественная литература")); final var user = userService .create(new UserEntity(null, "TestUser", "user53262@gmail.com", "lawy7728", false)); - final var order2 = orderService.create(new OrderEntity(null, user, Formatter.parse("2022-09-07"), "Выдан")); + final var order2 = orderService + .create(new OrderEntity(null, user, Formatter.parse("2022-09-07"), "Выдан")); final var book1 = bookService.create(new BookEntity(null, category, "Шестерка воронов", "Ли Бардуго", 700.00, 5624, "Триша Левенселлер — американская писательница, подарившая вам роман «Тени между нами», который стал бестселлером Amazon в разделе «Фэнтези YA», вновь радует своих фанатов новой магической историей «Клинок тайн».\n\nЕще до выхода в свет книгу добавили в раздел «Хочу прочитать» более 10 тысяч человек на портале Goodreads.com.\n\n«Клинок тайн» — первая часть захватывающей дилогии про девушку, которая благодаря магии крови создает самое опасное в мире оружие, и ослепительного юношу, что составляет ей компанию в этом непростом приключении.", "Юная Зива предпочитает проводить время с оружием, а не с людьми. Она кузнец и ей предстоит создать самое могущественное оружие на земле.\n\nДевушка демонстрирует меч, способный от одной капли крови врага раскрыть все тайные замыслы его обладателю.\n\nОднако у заказчика на оружие другие планы: заставить Зиву вооружить мечами свое войско и поработить весь мир. Когда девушка понимает, что меч, созданный благодаря магии крови, невозможно уничтожить и рано или поздно на нее объявят охоту, ей остается только одно – бежать, не оглядываясь. Зиве теперь суждено спасти мир от собственного творения. Но как бы далеко она ни старалась убежать, все ловушки уже расставлены.", - "2946447", "Эксмо", "Young Adult. Бестселлеры Триши Левенселлер", 2022, 480, "20.7x13x2.5", + "2946447", "Эксмо", "Young Adult. Бестселлеры Триши Левенселлер", 2022, 480, + "20.7x13x2.5", "Мягкий переплёт", 1500, 440, "")); orderBookService.delete(3L); @@ -123,4 +131,30 @@ class OrderBookServiceTests { Assertions.assertEquals(3, orderBookService.getAll(0L, 0L).size()); Assertions.assertEquals(4L, newEntity.getId()); } + + @Test + @Order(4) + void getSumTest() throws ParseException { + final var category = categoryService.create(new CategoryEntity(null, "Художественная литература")); + final var user = userService + .create(new UserEntity(null, "TestUser", "user53262@gmail.com", "lawy7728", false)); + final var order1 = orderService + .create(new OrderEntity(null, user, Formatter.parse("2024-03-28"), "Выполняется")); + final var book2 = bookService.create(new BookEntity(null, category, "Форсайт", "Сергей Лукъяненко", + 775.00, + 1240, + "Новый долгожданный роман от автора бестселлеров «Ночной дозор» и «Черновик». Увлекательная история о Мире После и мире настоящего, где 5 процентов людей знают о надвигающемся апокалипсисе больше, чем кто-либо может представить.", + "Людям порой снится прошлое. Иногда хорошее, иногда не очень. Но что делать, если тебе начинает сниться будущее? И в нём ничего хорошего нет совсем.", + "3001249", "АСТ", "Книги Сергея Лукьяненко", 2023, 352, "20.5x13x2", "Твердый переплёт", + 20000, + 350, "")); + + final var entity = orderBookService.get(1L); + Double initialSum = orderBookService.getSum(1L); + Assertions.assertEquals(entity.getCount() * entity.getBook().getPrice(), initialSum); + final var changedEntity = orderBookService.update(1L, new OrderBookEntity(null, order1, book2, 6)); + Double changedSum = orderBookService.getSum(1L); + Assertions.assertEquals(changedEntity.getCount() * changedEntity.getBook().getPrice(), changedSum); + Assertions.assertNotEquals(initialSum, changedSum); + } } diff --git a/src/test/java/com/example/backend/OrderServiceTests.java b/src/test/java/com/example/backend/OrderServiceTests.java index a7bb59a..c7c5c56 100644 --- a/src/test/java/com/example/backend/OrderServiceTests.java +++ b/src/test/java/com/example/backend/OrderServiceTests.java @@ -10,6 +10,12 @@ import org.junit.jupiter.api.TestMethodOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import com.example.backend.categories.model.CategoryEntity; +import com.example.backend.categories.service.CategoryService; +import com.example.backend.books.model.BookEntity; +import com.example.backend.books.service.BookService; +import com.example.backend.ordersbooks.model.OrderBookEntity; +import com.example.backend.ordersbooks.service.OrderBookService; import com.example.backend.orders.model.OrderEntity; import com.example.backend.orders.service.OrderService; import com.example.backend.users.model.UserEntity; @@ -20,6 +26,15 @@ import com.example.backend.core.utils.Formatter; @SpringBootTest @TestMethodOrder(OrderAnnotation.class) class OrderServiceTests { + @Autowired + private CategoryService categoryService; + + @Autowired + private BookService bookService; + + @Autowired + private OrderBookService orderBookService; + @Autowired private UserService userService; @@ -52,16 +67,13 @@ class OrderServiceTests { new UserEntity(null, "Chief", "forum98761@gmail.com", "bth4323", true)); final String test = "TEST"; final OrderEntity entity = orderService.get(3L); - final UserEntity oldUser = entity.getUser(); final String oldStatus = entity.getStatus(); final OrderEntity newEntity = orderService.update(3L, new OrderEntity(null, user, Formatter.parse("2024-03-15"), test)); Assertions.assertEquals(3, orderService.getAll(0L).size()); Assertions.assertEquals(newEntity, orderService.get(3L)); Assertions.assertEquals(test, newEntity.getStatus()); - Assertions.assertEquals(user, newEntity.getUser()); Assertions.assertNotEquals(oldStatus, newEntity.getStatus()); - Assertions.assertNotEquals(oldUser, newEntity.getUser()); } @Test @@ -79,4 +91,23 @@ class OrderServiceTests { Assertions.assertEquals(3, orderService.getAll(0L).size()); Assertions.assertEquals(4L, newEntity.getId()); } -} \ No newline at end of file + + @Test + @Order(4) + void getFullSumTest() { + final var category = categoryService.create(new CategoryEntity(null, "Художественная литература")); + final var book = bookService.create(new BookEntity(null, category, "Шестерка воронов", "Ли Бардуго", + 700.00, 5624, + "Триша Левенселлер — американская писательница, подарившая вам роман «Тени между нами», который стал бестселлером Amazon в разделе «Фэнтези YA», вновь радует своих фанатов новой магической историей «Клинок тайн».\n\nЕще до выхода в свет книгу добавили в раздел «Хочу прочитать» более 10 тысяч человек на портале Goodreads.com.\n\n«Клинок тайн» — первая часть захватывающей дилогии про девушку, которая благодаря магии крови создает самое опасное в мире оружие, и ослепительного юношу, что составляет ей компанию в этом непростом приключении.", + "Юная Зива предпочитает проводить время с оружием, а не с людьми. Она кузнец и ей предстоит создать самое могущественное оружие на земле.\n\nДевушка демонстрирует меч, способный от одной капли крови врага раскрыть все тайные замыслы его обладателю.\n\nОднако у заказчика на оружие другие планы: заставить Зиву вооружить мечами свое войско и поработить весь мир. Когда девушка понимает, что меч, созданный благодаря магии крови, невозможно уничтожить и рано или поздно на нее объявят охоту, ей остается только одно – бежать, не оглядываясь. Зиве теперь суждено спасти мир от собственного творения. Но как бы далеко она ни старалась убежать, все ловушки уже расставлены.", + "2946447", "Эксмо", "Young Adult. Бестселлеры Триши Левенселлер", 2022, 480, "20.7x13x2.5", + "Мягкий переплёт", 1500, 440, "")); + + Double initialSum = orderService.getFullSum(1L); + Assertions.assertEquals(0, initialSum); + final var orderBook = orderBookService.create(new OrderBookEntity(null, orderService.get(1L), book, 4)); + Double сhangedSum = orderService.getFullSum(1L); + Assertions.assertEquals(book.getPrice() * orderBook.getCount(), сhangedSum); + Assertions.assertNotEquals(initialSum, сhangedSum); + } +}