Failing unit test for conjured items

This commit is contained in:
Jesper 2022-04-13 17:58:44 +02:00
parent 6247d5be4e
commit 2b3d1ed7dc
2 changed files with 30 additions and 3 deletions

View File

@ -10,10 +10,11 @@ export class Item {
}
}
export type ConjuredItem = Item & { conjured: true }
export class GildedRose {
items: Array<Item>
items: Array<Item | ConjuredItem>
constructor(items = [] as Array<Item>) {
constructor(items = [] as Array<Item | ConjuredItem>) {
this.items = items
}

View File

@ -1,4 +1,4 @@
import { Item, GildedRose } from '@/gilded-rose'
import { Item, GildedRose, ConjuredItem } from '@/gilded-rose'
/**
* A copy of the unrefactored GildedRose class used for acceptance tests
@ -78,3 +78,29 @@ test('acceptance tests', () => {
}
}
})
function decayRate(previousValue: number, currentValue: number): number {
const diff = currentValue - previousValue
return diff > 0 ? diff : 0
}
test('"Conjured" items degrade in Quality twice as fast as normal items', () => {
for (const name of names) {
for (const sellIn of sellIns) {
for (const quality of qualities) {
const gildedRoseWithConjuredItems = new GildedRose([{ name, sellIn, quality, conjured: true}])
const gildedRoseWithNormalItems = new GildedRose([new Item(name, sellIn, quality)])
const conjuredQualityBefore = gildedRoseWithConjuredItems.items[0].quality
const conjuredQualityAfter = gildedRoseWithConjuredItems.updateQuality()[0].quality
const conjuredQualityDecayRate = decayRate(conjuredQualityBefore, conjuredQualityAfter)
const normalQualityBefore = gildedRoseWithNormalItems.items[0].quality
const normalQualityAfter = gildedRoseWithNormalItems.updateQuality()[0].quality
const normalQualityDecayRate = decayRate(normalQualityBefore, normalQualityAfter)
expect(conjuredQualityDecayRate).toEqual(normalQualityDecayRate * 2)
}
}
}
})