GildedRose-Refactoring-Kata/js-jest/test/gilded_rose.test.js

113 lines
4.1 KiB
JavaScript

const {Shop, Item} = require("../src/gilded_rose");
describe("default item", function() {
it("should decrease quality over time by 1", function() {
const gildedRose = new Shop([new Item("default", 10, 2)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(1);
});
it("should decrease quality by 2 when sellIn < 0", function() {
const gildedRose = new Shop([new Item("default", 0, 10)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(8);
});
it("should decrease sellIn over time by 1", function() {
const gildedRose = new Shop([new Item("default", 10, 2)]);
const items = gildedRose.updateQuality();
expect(items[0].sellIn).toBe(9);
});
it("should never drop quality below 0", function() {
const gildedRose = new Shop([new Item("default", 10, 0)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(0);
});
});
describe("Aged Brie", function() {
it("should increase quality over time by 1", function() {
const gildedRose = new Shop([new Item("Aged Brie", 10, 2)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(3);
});
it("should increase quality by 2 when sellIn < 0", function() {
const gildedRose = new Shop([new Item("Aged Brie", 0, 0)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(2);
});
it("should stay at 50 quality max", function() {
const gildedRose = new Shop([new Item("Aged Brie", 0, 50)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(50);
});
});
describe("Backstage passes to a TAFKAL80ETC concert", function() {
it("should increase quality over time by 1 if sellin > 10", function() {
const gildedRose = new Shop([new Item("Backstage passes to a TAFKAL80ETC concert", 20, 2)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(3);
});
it("should increase quality by 2 when sellIn < 11", function() {
const gildedRose = new Shop([new Item("Backstage passes to a TAFKAL80ETC concert", 10, 2)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(4);
});
it("should not increase quality over 50 when sellIn < 11", function() {
const gildedRose = new Shop([new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(50);
});
it("should increase quality by 3 when sellIn < 6", function() {
const gildedRose = new Shop([new Item("Backstage passes to a TAFKAL80ETC concert", 5, 2)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(5);
});
it("should not increase quality over 50 when sellIn < 6", function() {
const gildedRose = new Shop([new Item("Backstage passes to a TAFKAL80ETC concert", 5, 48)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(50);
});
it("should have 0 quality when sellIn < 0", function() {
const gildedRose = new Shop([new Item("Backstage passes to a TAFKAL80ETC concert", 0, 2)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(0);
});
});
describe("Sulfuras, Hand of Ragnaros", function() {
it("quality never changes", function() {
const gildedRose = new Shop([new Item("Sulfuras, Hand of Ragnaros", 20, 80)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(80);
});
it("quality never changes even if sellIn < 0", function() {
const gildedRose = new Shop([new Item("Sulfuras, Hand of Ragnaros", -1, 80)]);
const items = gildedRose.updateQuality();
expect(items[0].quality).toBe(80);
});
it("sellIn never changes", function() {
const gildedRose = new Shop([new Item("Sulfuras, Hand of Ragnaros", 20, 80)]);
const items = gildedRose.updateQuality();
expect(items[0].sellIn).toBe(20);
});
// it("sellIn never changes", function() {
// const gildedRose = new Shop([new Item("Sulfuras, Hand of Ragnaros", 20, 80)]);
// const items = gildedRose.updateQuality();
// expect(items[0].sellIn).toBe(20);
// });
});