package com.tddinaction.patterns.test;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import com.tddinaction.mockobjects.Customer;
import com.tddinaction.mockobjects.Order;
import com.tddinaction.mockobjects.OrderProcessor;
import com.tddinaction.mockobjects.PricingService;
import com.tddinaction.mockobjects.Product;
public class SelfShuntExample extends PricingService {
private final float discount = 10.0f;
@Test
public void testOrderProcessorWithMockObject() {
float initialBalance = 100.0f;
float listPrice = 30.0f;
float expectedBalance = initialBalance
- (listPrice * (1 - discount / 100));
Customer customer = new Customer(initialBalance);
Product product = new Product("TDD in Action", listPrice);
OrderProcessor processor = new OrderProcessor();
processor.setPricingService(this);
processor.process(new Order(customer, product));
assertEquals(expectedBalance, customer.getBalance(), 0.001f);
}
// implements the PricingService#getDiscountPercentage API
@Override
public float getDiscountPercentage(Customer c, Product p) {
return discount;
}
}