Specs should test public methods. Private methods should be able to
change without specs breaking.
The specs were also just mirroring the code and didn't really have any
meaning. So I wrote new ones which are hopefully clearer.
There's actually a case which I don't quite understand. Why don't we
require a customer for a new complete order? It means that we don't have
a customer creating it but then it's added when updating the order.
Seems inconsistent.