mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
116 lines
3.9 KiB
JavaScript
116 lines
3.9 KiB
JavaScript
const { Shop, Item } = require('../src/gilded_rose')
|
|
|
|
describe('Gilded Rose', function () {
|
|
it('should foo', function () {
|
|
const gildedRose = new Shop([new Item('foo', 0, 0)])
|
|
const items = gildedRose.updateQuality()
|
|
expect(items[0].name).toBe('foo')
|
|
})
|
|
|
|
it('should return correct result', () => {
|
|
const storeItems = [
|
|
new Item('Test Potion', 10, 20),
|
|
new Item('Aged Brie', 2, 0),
|
|
new Item('Healing Salve', 5, 7),
|
|
new Item('Sulfuras', 0, 80),
|
|
new Item('Backstage passes', 15, 20),
|
|
]
|
|
|
|
const expectedResult = [
|
|
new Item('Test Potion', 9, 19),
|
|
new Item('Aged Brie', 1, 1),
|
|
new Item('Healing Salve', 4, 6),
|
|
new Item('Sulfuras', 0, 80),
|
|
new Item('Backstage passes', 14, 21),
|
|
]
|
|
const gildedRose = new Shop(storeItems)
|
|
const items = gildedRose.updateQuality()
|
|
|
|
expect(items).toStrictEqual(expectedResult)
|
|
})
|
|
|
|
it('Should normal items quality never be below 0', () => {
|
|
const storeItems = [new Item('Oblivion staff', 10, 0)]
|
|
const expectedResult = [new Item('Oblivion staff', 9, 0)]
|
|
const gildedRose = new Shop(storeItems)
|
|
const items = gildedRose.updateQuality()
|
|
|
|
expect(items).toStrictEqual(expectedResult)
|
|
})
|
|
|
|
it('Should quality degrade twice as fast when the sellIn date passes', () => {
|
|
const storeItems = [new Item('Oblivion staff', 0, 4)]
|
|
const expectedResult = [new Item('Oblivion staff', -1, 2)]
|
|
const gildedRose = new Shop(storeItems)
|
|
const items = gildedRose.updateQuality()
|
|
|
|
expect(items).toStrictEqual(expectedResult)
|
|
})
|
|
|
|
it('Should the quality of an item can never be more than 50', () => {
|
|
const storeItems = [new Item('Aged Brie', 1, 50)]
|
|
const expectedResult = [new Item('Aged Brie', 0, 50)]
|
|
const gildedRose = new Shop(storeItems)
|
|
const items = gildedRose.updateQuality()
|
|
|
|
expect(items).toStrictEqual(expectedResult)
|
|
})
|
|
|
|
it('Should quality of an aged brie should increase by 1', () => {
|
|
const storeItems = [new Item('Aged Brie', 1, 0)]
|
|
const expectedResult = [new Item('Aged Brie', 0, 1)]
|
|
const gildedRose = new Shop(storeItems)
|
|
const items = gildedRose.updateQuality()
|
|
|
|
expect(items).toStrictEqual(expectedResult)
|
|
})
|
|
})
|
|
|
|
describe('Backstage passes', () => {
|
|
it("increases in Quality as it's SellIn value approaches", () => {
|
|
const storeItems = [new Item('Backstage passes', 14, 0)]
|
|
const expectedResult = [new Item('Backstage passes', 13, 1)]
|
|
const gildedRose = new Shop(storeItems)
|
|
const items = gildedRose.updateQuality()
|
|
|
|
expect(items).toStrictEqual(expectedResult)
|
|
})
|
|
|
|
it('Quality increases by 2 when there are 10 days or less', () => {
|
|
const storeItems = [new Item('Backstage passes', 10, 0)]
|
|
const expectedResult = [new Item('Backstage passes', 9, 2)]
|
|
const gildedRose = new Shop(storeItems)
|
|
const items = gildedRose.updateQuality()
|
|
|
|
expect(items).toStrictEqual(expectedResult)
|
|
})
|
|
|
|
it('Quality increases by 3 when there are 5 days or less', () => {
|
|
const storeItems = [new Item('Backstage passes', 5, 0)]
|
|
const expectedResult = [new Item('Backstage passes', 4, 3)]
|
|
const gildedRose = new Shop(storeItems)
|
|
const items = gildedRose.updateQuality()
|
|
|
|
expect(items).toStrictEqual(expectedResult)
|
|
})
|
|
|
|
it('Quality drops to 0 after concert', () => {
|
|
const storeItems = [new Item('Backstage passes', 0, 30)]
|
|
const expectedResult = [new Item('Backstage passes', -1, 0)]
|
|
const gildedRose = new Shop(storeItems)
|
|
const items = gildedRose.updateQuality()
|
|
|
|
expect(items).toStrictEqual(expectedResult)
|
|
})
|
|
})
|
|
describe('Conjured items', () => {
|
|
it('Should quality of conjured items decrease twice as fast', () => {
|
|
const storeItems = [new Item('Conjured Test Cake', 10, 20)]
|
|
const expectedResult = [new Item('Conjured Test Cake', 9, 18)]
|
|
const gildedRose = new Shop(storeItems)
|
|
const items = gildedRose.updateQuality()
|
|
|
|
expect(items).toStrictEqual(expectedResult)
|
|
})
|
|
})
|