package model; import model.exceptions.OrderException; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.*; import static org.junit.jupiter.api.Assertions.*; class OrderTest { private List pizzas; private Order order; @BeforeEach void setUp() { pizzas = new ArrayList<>(Arrays.asList(new Pizza(), new Pizza())); order = new Order("Max Mustermann", pizzas, new Date()); } @Test void getCustomer() { assertEquals("Max Mustermann", order.getCustomer()); assertNotEquals("Wrong", order.getCustomer()); } @Test void setCustomer() { order.setCustomer("Max Mustermann 2"); assertEquals("Max Mustermann 2", order.getCustomer()); assertNotEquals("Max Mustermann", order.getCustomer()); } @Test void getPizzas() { assertEquals(pizzas, order.getPizzas()); assertNotEquals(Arrays.asList(new Pizza(), new Pizza()), order.getPizzas()); } @Test void setPizzas() throws OrderException { List newPizzas = new ArrayList<>(Arrays.asList(new Pizza(), new Pizza())); order.setPizzas(newPizzas); assertEquals(newPizzas, order.getPizzas()); assertNotEquals(pizzas, order.getPizzas()); } /** * Tests if the exception is thrown when order is not in {@link model.Order.OrderState#IN_PROGRESS} */ @Test void addPizzaAfterCompletion() { order.setOrderState(Order.OrderState.DELIVERD); assertThrows(OrderException.class, () -> order.setPizzas(pizzas)); } /** * Tests if the pizza is added to the pizza List. */ @Test void addPizzaBeforeCompletion() throws OrderException { order.addPizza(new Pizza()); } @Test void setOrderState() { order.setOrderState(Order.OrderState.DELIVERD); assertEquals(Order.OrderState.DELIVERD, order.getOrderState()); assertNotEquals(Order.OrderState.WAIT, order.getOrderState()); } @Test void setDate() { Date today = new Date(); Calendar c = Calendar.getInstance(); c.setTime(today); c.add(Calendar.DAY_OF_MONTH, 21); Date currentDatePlus21d = c.getTime(); assertThrows(IllegalArgumentException.class, () -> order.setDate(currentDatePlus21d)); c.add(Calendar.DAY_OF_MONTH, -2); Date currentDatePlus19d = c.getTime(); assertDoesNotThrow(() -> order.setDate(currentDatePlus19d)); } }