Building a Shopping Cart with TDD in Ruby
Introduction to the Shopping Cart Module
Welcome to your third unit for this course dedicated to practicing Test Driven Development (TDD) utilizing Ruby and RSpec. In this lesson, we will explore the process of building a ShoppingCart class with multiple features using TDD.
The aim is to provide you with an understanding of how requirements are translated into tests, which are tackled one at a time. You'll observe how tests are written and code is implemented to pass each test, simulating a real-world TDD environment. Previously, tests were provided, but this time, the focus will be on creating them independently.
Remember to use the core concepts of the Red-Green-Refactor cycle while practicing these exercises. I'm still here to help! Just ask if you encounter any questions or issues.
Requirements for `ShoppingCart` Class
In this section, you will learn how to build the ShoppingCart class by implementing the following features:
- Starting with an Empty Cart
- Adding a Single Item
- Adding Multiple Items
- Handling Multiple Quantities of the Same Item
- Removing an Item
1. Starting with an Empty Cart
- Description: When a new shopping cart is created, it should start without any items, and the total price should be zero.
- Details:
- Initialize a new shopping cart using the
ShoppingCartconstructor. - Ensure the
item_countmethod returns0for an empty cart. - Verify the
totalmethod returns0for the initial state.
- Initialize a new shopping cart using the
- Examples: A newly created cart should have a count of
0and a total of0.
2. Adding a Single Item
- Description: Verify that when a single item is added to the cart, the cart's item count increases, and the total price reflects the added item's price.
- Details:
- Use the
add_item(item)method to add an item to the cart. - Confirm that the
item_countmethod returns the correct number of items after an item is added. - Ensure the
totalmethod accurately calculates and returns the total price of items in the cart.
- Use the
- Examples: Adding an item
{'id' => '1', 'name' => 'Book', 'price' => 10}should result in an item count of1and a total cost of10.
