/* * Copyright (c) 2006 Rogério Liesenfeld * This file is subject to the terms of the MIT license (see LICENSE.txt). */ package orderMngr.domain.order; import java.math.*; import org.junit.*; import mockit.*; import orderMngr.service.*; /** * Unit tests for the {@link OrderRepository} class, which depends on the {@link Database} class. * The tests use expectations to simulate the interaction between {@code OrderRepository} and {@code Database. */ public final class OrderRepositoryTest { @Mocked final Database db = null; // only contain static methods, so no instance is needed @Tested OrderRepository repository; Order order; @Test public void createOrder() { order = new Order(561, "customer"); final OrderItem orderItem = new OrderItem(order, "Prod", "Some product", 3, new BigDecimal("5.20")); order.getItems().add(orderItem); repository.create(order); new VerificationsInOrder() {{ Database.executeInsertUpdateOrDelete( withPrefix("insert into order "), order.getNumber(), order.getCustomerId()); Database.executeInsertUpdateOrDelete( withPrefix("insert into order_item "), order.getNumber(), orderItem.getProductId(), orderItem.getProductDescription(), orderItem.getQuantity(), orderItem.getUnitPrice()); }}; } @Test public void updateOrder() { order = new Order(1, "test"); repository.update(order); new Verifications() {{ Database.executeInsertUpdateOrDelete(withPrefix("update order "), order.getCustomerId(), order.getNumber()); }}; } @Test public void removeOrder() { order = new Order(35, "remove"); repository.remove(order); new Verifications() {{ Database.executeInsertUpdateOrDelete(withPrefix("delete from order "), order.getNumber()); }}; } }