Implementing More Features for the Shopping Cart
Introduction to the Shopping Cart Module
Welcome to your fourth unit for this course dedicated to practicing Test Driven Development (TDD) utilizing TypeScript and Jest. We're going to continue building a our ShoppingCart system by jamming even more features into our class.
In this course, 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. Where I wrote the tests for you last time, this time it's all up to you!
Remember to use the core concepts of the Red-Green-Refactor cycle while completing these coding exercises. I'm still here to help! Just ask.
More Requirements for `ShoppingCart` Class
6. Removing a Non-Existent Item
- Description: Removing an item that does not exist in the cart should result in an error being thrown, indicating the item is not found.
- Details
- support item removal through a
removeItem(id)method - ensure the method throws an appropriate error message if an item does not exist in the cart
- support item removal through a
- Examples: attempting to remove an item with
id: '999'from the cart should throw an error with the message'Item not found'
7. Applying Percentage Discount
- Description: When a percentage discount is applied, the total price of the items in the cart should reflect this discount.
- Details
- use
applyDiscount(percentage)method to apply a percentage discount to the total - ensure
getTotal()returns the discounted price after applying the discount.
- use
- Examples: applying a 10% discount to an item with a total price of
100should result in a new total of90
8. Applying a Bulk Discount
- Description: When the total price of items in the cart exceeds $150, a bulk discount of 10% should be applied to the total.
- Details
- if the total exceeds 150, a 10% discount should be applied automatically
- the
getTotal()method should return the discounted total when applicable
- Examples: adding an item
{ id: '1', name: 'Book', price: 200 }should result in a total of180after applying the bulk discount
