mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 04:12:13 +00:00
Update README.md
- replaced gilded rose requirements by a link to the requirements-file - added a clarification for running the tests - added a description for using cl-mock to stub a function or method - added a description for running the testtest-fixture
This commit is contained in:
parent
bf5b0d9cec
commit
6ecbea14f8
@ -1,8 +1,11 @@
|
|||||||
# gilded-rose
|
# gilded rose
|
||||||
|
|
||||||
## Setup
|
The requirements of gilded rose can be found here:
|
||||||
|
https://github.com/emilybache/GildedRose-Refactoring-Kata/blob/main/GildedRoseRequirements.txt
|
||||||
|
|
||||||
### Install quicklisp
|
# Setup
|
||||||
|
|
||||||
|
## Install quicklisp
|
||||||
|
|
||||||
To run this project install quicklisp (if not already done):
|
To run this project install quicklisp (if not already done):
|
||||||
- download https://beta.quicklisp.org/quicklisp.lisp
|
- download https://beta.quicklisp.org/quicklisp.lisp
|
||||||
@ -15,65 +18,40 @@ To run this project install quicklisp (if not already done):
|
|||||||
> (ql:add-to-init-file)
|
> (ql:add-to-init-file)
|
||||||
in your common lisp implementation
|
in your common lisp implementation
|
||||||
|
|
||||||
### Install project
|
## Install project
|
||||||
Copy the project-folder containing this file into /quicklisp/local-projects/ that has been created when installing quicklisp.
|
Copy the project-folder containing this file into /quicklisp/local-projects/ that has been created when installing quicklisp.
|
||||||
This is the root directory for quicklisp to search for the gilded-rose.asd file which defines the system (project) and its dependencies.
|
This is the root directory for quicklisp to search for the gilded-rose.asd file which defines the system (project) and its dependencies.
|
||||||
The quicklisp-folder is usually created in your home-directory.
|
The quicklisp-folder is usually created in your home-directory.
|
||||||
|
|
||||||
### Work with the project
|
## Working with the project
|
||||||
|
|
||||||
Now you can load the project with
|
Now you can load the project with
|
||||||
> (ql:quickload "gilded-rose")
|
> (ql:quickload "gilded-rose")
|
||||||
in your common lisp-implementation and run the tests with
|
in the common lisp implementation of your choice and run the tests with
|
||||||
> (asdf:test-system "gilded-rose")
|
> (asdf:test-system "gilded-rose")
|
||||||
.
|
.
|
||||||
|
|
||||||
You can stub and mock functions and methods with the cl-mock-library which is already included in the system definition of the test-system:
|
If you just want to run the tests
|
||||||
|
> (asdf:test-system "gilded-rose")
|
||||||
|
is sufficient.
|
||||||
|
|
||||||
|
You can mock functions and methods with the cl-mock-library which is already included in the system definition of the test-system:
|
||||||
|
|
||||||
(with-mocks ()
|
(with-mocks ()
|
||||||
(answer <your-method> (call-previous))
|
(answer <your-method> (call-previous))
|
||||||
(<your-method> <argument-list>)
|
(<your-method> <argument-list>)
|
||||||
(is <your-testcase> (invocations '<your-method>)))
|
(is <your-testcase> (invocations '<your-method>)))
|
||||||
|
|
||||||
## Documentation
|
If you just want to stub functions you can replace
|
||||||
|
(call-previous)
|
||||||
|
with a return value of your choice and your test does not depend on
|
||||||
|
(invocations '<your-method>)
|
||||||
|
|
||||||
Hi and welcome to team Gilded Rose. As you know, we are a small inn
|
## Running the texttest-fixture
|
||||||
with a prime location in a prominent city ran by a friendly
|
|
||||||
innkeeper named Allison. We also buy and sell only the finest goods.
|
|
||||||
Unfortunately, our goods are constantly degrading in quality as they
|
|
||||||
approach their sell by date. We have a system in place that updates
|
|
||||||
our inventory for us. It was developed by a no-nonsense type named
|
|
||||||
Leeroy, who has moved on to new adventures. Your task is to add the
|
|
||||||
new feature to our system so that we can begin selling a new
|
|
||||||
category of items.
|
|
||||||
|
|
||||||
First an introduction to our system:
|
|
||||||
- All items have a SellIn value which denotes the number of days we have to sell the item
|
|
||||||
- All items have a Quality value which denotes how valuable the item is
|
|
||||||
- At the end of each day our system lowers both values for every item
|
|
||||||
|
|
||||||
Pretty simple, right? Well this is where it gets interesting:
|
|
||||||
- Once the sell by date has passed, Quality degrades twice as fast
|
|
||||||
The Quality of an item is never negative
|
|
||||||
- "Aged Brie" actually increases in Quality the older it gets
|
|
||||||
- The Quality of an item is never more than 50
|
|
||||||
- "Sulfuras", being a legendary item, never has to be sold or decreases in Quality
|
|
||||||
- "Backstage passes", like aged brie, increases in Quality as it's
|
|
||||||
SellIn value approaches; Quality increases by 2 when there are 10
|
|
||||||
days or less and by 3 when there are 5 days or less but Quality
|
|
||||||
drops to 0 after the concert
|
|
||||||
|
|
||||||
We have recently signed a supplier of conjured items. This requires an update to our system:
|
|
||||||
- "Conjured" items degrade in Quality twice as fast as normal items
|
|
||||||
|
|
||||||
Feel free to make any changes to the UpdateQuality method and add
|
|
||||||
any new code as long as everything still works correctly. However,
|
|
||||||
do not alter the Item class or Items property as those belong to the
|
|
||||||
goblin in the corner who will insta-rage and one-shot you as he
|
|
||||||
doesn't believe in shared code ownership (you can make the
|
|
||||||
UpdateQuality method and Items property static if you like, we'll
|
|
||||||
cover for you).
|
|
||||||
Just for clarification, an item can never have its Quality increase
|
|
||||||
above 50, however "Sulfuras" is a legendary item and as such its
|
|
||||||
Quality is 80 and it never alters.
|
|
||||||
|
|
||||||
|
If you don't want to work with the unit-tests you can test your program with the texttest-fixture.
|
||||||
|
After loading the project in the common lisp implementation of your choice with
|
||||||
|
> (ql:quickload "gilded-rose")
|
||||||
|
you can run the texttest-fixture with
|
||||||
|
> (gilded-rose::run-gilded-rose <number-of-days>)
|
||||||
|
where <number-of-days> is the number of days you want to simulate.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user