package nl.oose.dea.orderservice.withdip;
import org.junit.Test;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.*;
public class POSCreditOrderTest {
private PaymentProcessor paymentProcessor = mock(PaymentProcessor.class);
@Test
public void checkoutOnlineOrder()
{
// Create an order and pass all its dependencies. For unit tesing purposes we inject mock objects for the dependencies
Order order = new POSCreditOrder(createCart(), createPaymentDetails(), setupPaymentProcessor());
order.checkout();
verify(paymentProcessor, times(1)).chargeCard(any(PaymentDetails.class), any(Cart.class));
}
private PaymentProcessor setupPaymentProcessor() {
// always return true, enough for now
when(paymentProcessor.chargeCard(any(PaymentDetails.class), any(Cart.class))).thenReturn(true);
return paymentProcessor;
}
private Cart createCart() {
return new CartFactory().create();
}
private PaymentDetails createPaymentDetails()
{
return new PaymentDetailsFactory().create();
}
}