A challenge: Getting a list of products
A few days ago I posted about two phase tests, I have been thinking about this lately, and decided that I have a good example for this, which also demonstrate some important design decisions.
The task is listing the first 10 products that we can sell to a customer. The UI is console application, and the database design and data access method are whatever you want.
That is pretty easy, right?
Expected input is:
/dev/product_listing/bin> list_products
Expected output is:
Milk $1.0
Bread $1.3
Sausage $2.5
Horror Movie $5.0
Next requirement is that given the following input:
/dev/product_listing/bin> list_products -pg13
The output is:
Milk $1.0
Bread $1.3
Sausage $2.5
Next requirement is that given the following input:
/dev/product_listing/bin> list_products -vegetarian
Expected output is:
Milk $1.0
Bread $1.3
Horror Movie $5.0
Additional requirements of this type will follow, and they can be combined. That is, we can also have:
/dev/product_listing/bin> list_products -pg13 -vegetarian
Expected output is:
Milk $1.0
Bread $1.3
How would you solve this?