Implements 18 new unit tests for gilded rose

This commit is contained in:
EmanuelDicu 2022-06-29 11:34:14 +01:00
parent bc7de77181
commit 0cd989a757
3 changed files with 261 additions and 5404 deletions

File diff suppressed because it is too large Load Diff

View File

@ -19,12 +19,12 @@
"@types/node": "^16.11.7",
"chai": "^4.3.4",
"jest": "^27.3.1",
"mocha": "^9.1.3",
"mocha": "^10.0.0",
"nyc": "~15.1.0",
"rimraf": "~3.0.2",
"source-map-support": "^0.5.20",
"ts-jest": "^27.0.7",
"ts-node": "^10.4.0",
"ts-node": "^10.8.1",
"tsconfig-paths": "^3.11.0",
"typescript": "^4.4.4"
}

View File

@ -2,9 +2,146 @@ import { expect } from 'chai';
import { Item, GildedRose } from '@/gilded-rose';
describe('Gilded Rose', () => {
it('should foo', () => {
const gildedRose = new GildedRose([new Item('foo', 0, 0)]);
const items = gildedRose.updateQuality();
expect(items[0].name).to.equal('fixme');
describe('Aged Brie', () => {
it('one iteration, not passed sell date', () => {
const gildedRose = new GildedRose([new Item('Aged Brie', 5, 31)]);
gildedRose.updateQuality();
expect(gildedRose.items[0].quality).to.equal(32);
});
it('one iteration, passed sell date', () => {
const gildedRose = new GildedRose([new Item('Aged Brie', -1, 31)]);
gildedRose.updateQuality();
expect(gildedRose.items[0].quality).to.equal(33);
});
it('multiple iterations, not reaching max quality and not passed sell date', () => {
const gildedRose = new GildedRose([new Item('Aged Brie', 21, 31)]);
for (let i = 0; i < 10; ++i) {
gildedRose.updateQuality();
}
expect(gildedRose.items[0].quality).to.equal(41);
});
it('multiple iterations, not reaching max quality and passed sell date', () => {
const gildedRose = new GildedRose([new Item('Aged Brie', 5, 30)]);
for (let i = 0; i < 10; ++i) {
gildedRose.updateQuality();
}
expect(gildedRose.items[0].quality).to.equal(45);
});
it('multiple iterations, reaching max quality and passed sell date', () => {
const gildedRose = new GildedRose([new Item('Aged Brie', 5, 38)]);
for (let i = 0; i < 10; ++i) {
gildedRose.updateQuality();
}
expect(gildedRose.items[0].quality).to.equal(50);
});
});
describe('Backstage passes to a TAFKAL80ETC concert', () => {
it('one iteration, more than 10 days before selling, not reaching max quality', () => {
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 11, 31)]);
gildedRose.updateQuality();
expect(gildedRose.items[0].quality).to.equal(32);
});
it('one iteration, between 6 and 10 days before selling, not reaching max quality', () => {
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 10, 31),
new Item('Backstage passes to a TAFKAL80ETC concert', 6, 31)]);
gildedRose.updateQuality();
expect(gildedRose.items[0].quality).to.equal(33);
expect(gildedRose.items[1].quality).to.equal(33);
});
it('one iteration, 5 days or less before selling, not reaching max quality', () => {
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 5, 31),
new Item('Backstage passes to a TAFKAL80ETC concert', 1, 31)]);
gildedRose.updateQuality();
expect(gildedRose.items[0].quality).to.equal(34);
expect(gildedRose.items[1].quality).to.equal(34);
});
it('one iteration, passed sell date, not reaching max quality', () => {
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 0, 31)]);
gildedRose.updateQuality();
expect(gildedRose.items[0].quality).to.equal(0);
});
it('one iteration, reaching max quality', () => {
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 3, 49)]);
gildedRose.updateQuality();
expect(gildedRose.items[0].quality).to.equal(50);
});
});
describe('Sulfuras, Hand of Ragnaros', () => {
it('one iteration', () => {
const gildedRose = new GildedRose([new Item('Sulfuras, Hand of Ragnaros', 5, 38)]);
gildedRose.updateQuality();
expect(gildedRose.items[0].quality).to.equal(38);
});
it('multiple iterations, not passed sell date', () => {
const gildedRose = new GildedRose([new Item('Sulfuras, Hand of Ragnaros', 22, 38)]);
for (let i = 0; i < 10; ++i) {
gildedRose.updateQuality();
}
expect(gildedRose.items[0].quality).to.equal(38);
});
it('multiple iterations, passed sell date', () => {
const gildedRose = new GildedRose([new Item('Sulfuras, Hand of Ragnaros', 5, 38)]);
for (let i = 0; i < 10; ++i) {
gildedRose.updateQuality();
}
expect(gildedRose.items[0].quality).to.equal(38);
});
});
describe('Any normal item', () => {
it('one iteration, not passed sell date', () => {
const gildedRose = new GildedRose([new Item('Any normal item', 5, 31)]);
gildedRose.updateQuality();
expect(gildedRose.items[0].quality).to.equal(30);
});
it('one iteration, passed sell date', () => {
const gildedRose = new GildedRose([new Item('Any normal item', -1, 31)]);
gildedRose.updateQuality();
expect(gildedRose.items[0].quality).to.equal(29);
});
it('multiple iterations, not reaching negative quality and not passed sell date', () => {
const gildedRose = new GildedRose([new Item('Any normal item', 21, 31)]);
for (let i = 0; i < 10; ++i) {
gildedRose.updateQuality();
}
expect(gildedRose.items[0].quality).to.equal(21);
});
it('multiple iterations, not reaching negative quality and passed sell date', () => {
const gildedRose = new GildedRose([new Item('Any normal item', 5, 30)]);
for (let i = 0; i < 10; ++i) {
gildedRose.updateQuality();
}
expect(gildedRose.items[0].quality).to.equal(15);
});
it('multiple iterations, reaching max quality and passed sell date', () => {
const gildedRose = new GildedRose([new Item('Any normal item', 5, 12)]);
for (let i = 0; i < 10; ++i) {
gildedRose.updateQuality();
}
expect(gildedRose.items[0].quality).to.equal(0);
});
});
// it('should foo', () => {
// const gildedRose = new GildedRose([new Item('foo', 0, 0)]);
// const items = gildedRose.updateQuality();
// expect(items[0].name).to.equal('fixme');
// });
});