Finishing the Shopping Cart with TDD and Go
Completing the Shopping Cart Module
Welcome to your fifth and final unit for this course, focused on practicing the principles of Test Driven Development (TDD) using Go and Testify. We're going to continue building our ShoppingCart system by integrating even more sophisticated features into our module.
In this course, the emphasis is placed on hands-on practice, where you'll receive requirements through tests, one at a time. Your task is to write tests AND implement code that makes each test pass, simulating a real-world TDD environment. In previous lessons, tests were provided to guide you, but now it’s your turn to define them!
Remember to apply the core concepts of the Red-Green-Refactor cycle while completing these coding exercises. Ask questions if you need any clarification!
Final Requirements for `ShoppingCart` Module
11. Quantity Limit for Single Item
- Description: The cart should enforce a maximum quantity limit of 10 for a single type of item, preventing more than this allowed amount from being added.
- Details
- Utilize the
AddItem(item, quantity)function to add items to the cart. - Ensure an error is returned when adding a quantity that exceeds the limit of 10 for a single item.
- The error message should clearly state,
'Maximum quantity exceeded'when the limit is breached.
- Utilize the
- Examples: Attempting to add
11units of an item should return an error with the message'Maximum quantity exceeded'.
12. Retrieving Item Details by ID
- Description: When an item is added to the cart, it should be possible to retrieve that item's details using its ID, including the product information and the quantity in the cart.
- Details
- Enable items to be added using the
AddItem()function with specific IDs. - Ensure that
GetItem(id string) (Item, error)returns the correct item details, including the quantity, after being added to the cart.
- Enable items to be added using the
- Examples: Adding a
Bookwith ID"1"and price10, and retrieving by ID"1", should returnItem{ID: "1", Name: "Book", Price: 10, Quantity: 1}.
13. Applying Discount Codes
- Description: Applying a valid discount code should reduce the total price of items in the cart by the specified discount percentage.
- Details
- Use the
ApplyDiscountCode(code string) errorfunction to apply a discount. - Support valid discount codes such as
'HOLIDAY25'for a 25% discount. - Update
GetTotal() float64to reflect the discounted price.
- Use the
- Examples: Applying the discount code
'HOLIDAY25'to a productBookwith a price of100should reduce the total to75.
