package nl.oose.dea.orderservice.withdip;
import nl.oose.dea.orderservice.withoutdip.CafetariaReservationService;
import nl.oose.dea.orderservice.withoutdip.Cart;
import nl.oose.dea.orderservice.withoutdip.Item;
import nl.oose.dea.orderservice.withoutdip.OrderException;
import nl.oose.dea.orderservice.withoutdip.ReservationService;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
public class ReservationServiceTest {
private static final String PRODUCT = "Frikandel";
private static final String EMAIL_ADDRESS = "oose@gmail.com";
private static final int NOTHING_LEFT_IN_INVENTORY = 0;
private ReservationService reservationService;
@Before
public void setUp()
{
reservationService = new CafetariaReservationService();
}
@Test
public void buyAllFrikandellen() throws Exception {
reservationService.reserveInventory(createCartWithSufficientInventory());
assertTrue(reservationService.isOnStock(PRODUCT, NOTHING_LEFT_IN_INVENTORY));
}
private Cart createCartWithSufficientInventory() {
return createCart(20);
}
private Cart createCartWithInsufficientInventory() {
return createCart(21);
}
private Cart createCart(int quantity) {
return new Cart("OOSE",EMAIL_ADDRESS, new Item[] { new Item(PRODUCT, quantity) }, 50);
}
@Test(expected = OrderException.class)
public void youCannotBuyMoreThanAvailableInTheInventory() throws Exception {
reservationService.reserveInventory(createCartWithInsufficientInventory());
}
}