Continuing along with Dave Thomas's kata series, I'd like to share my implementation of the Product Pricing kata where we're asked to implement a checkout system that accepts rules for different pricing strategies. This immediately reminded me of my FizzBuzz implementation. In the end it was actually a fairly straight forward implementation of the Strategy pattern. The more challenging part of the exercise was extracting the actual pricing rules from the supplied test suite; a user story is often easier to read than a test of very specific behavior.
In the end, I was pleased with the rule set I implemented. For the full solution, please visit GitHub.
def rules
[
QuantityDiscountRule.new(sku: "A", quantity: 3, price: 30),
QuantityDiscountRule.new(sku: "B", quantity: 2, price: 15),
RegularPriceRule.new({
"A" => 50,
"B" => 30,
"C" => 20,
"D" => 15
})
]
end
No comments:
Post a Comment