Исправление обновления заказов и добавление методов вычисления суммы в тесты

This commit is contained in:
Илья 2024-04-01 16:26:42 +04:00
parent 88b46e2ee3
commit a0f3b16491
4 changed files with 78 additions and 15 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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Однако у заказчика на оружие другие планы: заставить Зиву вооружить мечами свое войско и поработить весь мир. Когда девушка понимает, что меч, созданный благодаря магии крови, невозможно уничтожить и рано или поздно на нее объявят охоту, ей остается только одно бежать, не оглядываясь. Зиве теперь суждено спасти мир от собственного творения. Но как бы далеко она ни старалась убежать, все ловушки уже расставлены.",
"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Однако у заказчика на оружие другие планы: заставить Зиву вооружить мечами свое войско и поработить весь мир. Когда девушка понимает, что меч, созданный благодаря магии крови, невозможно уничтожить и рано или поздно на нее объявят охоту, ей остается только одно бежать, не оглядываясь. Зиве теперь суждено спасти мир от собственного творения. Но как бы далеко она ни старалась убежать, все ловушки уже расставлены.",
"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);
}
}

View File

@ -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());
}
}
@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Однако у заказчика на оружие другие планы: заставить Зиву вооружить мечами свое войско и поработить весь мир. Когда девушка понимает, что меч, созданный благодаря магии крови, невозможно уничтожить и рано или поздно на нее объявят охоту, ей остается только одно бежать, не оглядываясь. Зиве теперь суждено спасти мир от собственного творения. Но как бы далеко она ни старалась убежать, все ловушки уже расставлены.",
"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);
}
}