Step 2.
Started with CheckoutOffersSpec and built implementations from there.
This spec could be split up. I changed my implementation approach and ended up adding quite a few examples for the offers, which are somewhat separate from making cost calculations on the ShoppingCart, i.e. one set of examples focuses on discount and the other on cost.