mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
43 lines
2.2 KiB
Markdown
43 lines
2.2 KiB
Markdown
Gilded Rose Requirements Specification
|
|
======================================
|
|
|
|
Hi and welcome to the *Gilded Rose* Inn.
|
|
|
|
|
|
As you know, we are a small inn with a prime location in a prominent city ran by a friendly innkeeper named Allison.
|
|
|
|
We 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** is a legendary item, and as such, never has to be sold or decreases in `Quality`
|
|
- beign legendary, its `Quality` is `80`.
|
|
- **Backstage passes**, like aged brie, increase in `Quality` as their `SellIn` value approaches.
|
|
- `Quality` increases by `2` when there are `10` days or less
|
|
- `Quality` increases by `3` when there are `5` days or less
|
|
- `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.
|
|
|