Your first task will be to fork this repo and follow the instructions below.
The sprint lasts up to 2 hours but you can complete it earlier if you wish. It ends once you issue your pull request from your fork back to our repository.
Please make commits as you go (> 1, < 100).
A boilerplate Spring Boot MVC application has been setup with Maven to get you started. However, you are completely free to delete it and start again with another framework (or no framework) if you would prefer. Just make sure you provide steps to build and run the application if you don't use Spring Boot.
Using spring boot we will test the application with mvn clean install
and will then run the jar file:
java -jar target/java-test-0.1.0.jar
(With spring boot the jar will include the application server.)
"As a consumer of the API, I would like to be able to add, retrieve, remove and update Cars in your application via a RESTFul API."
If the story needs to be broken down to fit into the sprint, please do so.
- Priority order is:
- add
- retrieve
- remove
- update
- My Car has the following attributes:
- Id*
- Make
- Model
- Year of manufacture
- Entry Date*
- We do not require persistent storage (an in-memory collection of objects is fine).
*generated by the application on entry
- "As a Developer, I want my code to be covered by unit tests so I know if a change has broken something"
- "As a Developer, I want my code to be covered by integration tests so I know if a change has broken something"
- "As a Consumer of the API, I would like any Cars I add through the API to be persisted between application reloads (persistent storage)"
- "As a Consumer of the API, I would like Cars to be represented as two, separate, linked resources: Make (Id, Name, Entry Date) and Model (Id, Name, Year of Manufacture, MakeUri, Entry Date)"
You can use whatever online resources you want (aside from copy-pasting large chunks of code, obviously).
You are encouraged to use any frameworks or libraries you feel comfortable with, but please write some code (don't choose a framework that can achieve the goal using only configuration).