This activity gives you practice writing integration tests in Spring.
We will be building onto this project multiple times throughout this course. You will want to make sure when you have completed a LaunchCart studio that you push your solution to your personal GitLab account!
This application is a very basic shopping cart. It has items that can be added to a cart. We can also currently add new items. There are no users, there is only one universal cart, and other basic functionality is missing.
You will add features, writing integration and unit tests as you go, and using a TDD approach.
Fork the LaunchCodeTraining/launchcart repo and clone it to your laptop. For this project we will start with the master
branch. After forking and cloning, it’s a good idea to make a story branch to contain your work.
Example: git checkout -b launchcart1-studio-solution
creates a branch named launchcart1-studio-solution and checks it out at the same time.
Import the project into IntelliJ by opening the build.gradle file as a project. Remember to check auto-import if it isn’t automatically selected for you.
Create runtime configurations for your tests. Look back at the Unit Tests Walkthrough for help with configuring a project for Java 8 and creating runtime configurations.
Finally, before writing your own tests you should make sure all the current tests pass. If they don’t, make the changes so the tests will pass.
The page at /item
that lists all items does not currently list the price of each item. Add this feature.
Before you add code to the application, write a test to verify that item prices are displayed.
After you have written your test and the corresponding code passes, run all of the tests and commit.
A TODO is provided for you in ItemControllerTests.java
, but ask yourself why does this test go in this file?
The Cart
class currently does not have the ability to produce a total cost of all items within a cart.
Add a computeTotal
method to Cart
, writing a unit test to verify its behavior before adding any code to the class itself.
A TODO is provided for you in CartTest.java
, but ask yourself why does this test go in this file?
Display the cart total at /cart
. Before adding code to the controller and/or view, write an integration test to verify that the total is displayed properly.
After you have written your test(s) and the corresponding code passes, run all of the tests and commit.
A TODO is provided for you in CartControllerTests.java
, but ask yourself why does this test go in this file?
Note
Don’t worry about formatting the total as currency (i.e. with exactly 2 decimal places) when displaying it in the view.
It is currently not possible to remove an item from the cart. Add this ability. There are different ways that you might do this, and we leave the implementation up to you.
As always, write your tests before writing any application code. As before, you’ll have both unit and integration tests, since you’ll need to add modify the Cart
model class (to add a removeItem
method) as well as add functionality to the web app.
After you have written your tests and they pass, run all of the tests and commit.
No TODOs are provided for you. How many tests will you need? Where do those tests need to go?
The previous programmer left a TODO
in the unit test /launchcart/src/test/java/org/launchcode/launchcart/data/ItemMemoryRepositoryTests.java.testAddItems()
. Please write this test so that
we can be sure our repository class correctly saves items.
Note
This version of LaunchCart does not use an SQL database. Use this test as a way to get familair with how Items and Carts are persisted for this project.
If you don’t complete each of the tasks, turn in as much as you have completed by the end of the day. You should make sure you have working code committed to your fork.