Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion app/gilded-rose.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,14 @@ export class GildedRose {
for (let i = 0; i < this.items.length; i++) {
if (this.items[i].name != 'Aged Brie' && this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') {
if (this.items[i].quality > 0) {
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {

if (this.items[i].name == 'Golden Sword') {
this.items[i].quality = this.items[i].quality - 0.5
}
else
if (this.items[i].name == "Conjured Mana Cake") {
this.items[i].quality = this.items[i].quality - 2
} else if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
this.items[i].quality = this.items[i].quality - 1
}
}
Expand Down
4 changes: 2 additions & 2 deletions test/golden-master-text-test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ const items = [
new Item("Backstage passes to a TAFKAL80ETC concert", 15, 20),
new Item("Backstage passes to a TAFKAL80ETC concert", 10, 49),
new Item("Backstage passes to a TAFKAL80ETC concert", 5, 49),
// this conjured item does not work properly yet
new Item("Conjured Mana Cake", 3, 6)];
new Item("Conjured Mana Cake", 3, 6),
new Item("Golden Sword", 10, 20)];


const gildedRose = new GildedRose(items);
Expand Down
163 changes: 161 additions & 2 deletions test/jest/gilded-rose.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { Item, GildedRose } from '@/gilded-rose';
describe('Gilded Rose', () => {
it('should foo', () => {
// Arrange
const gildedRose = new GildedRose([new Item('foo', 0, 0)]);
const gildedRose = new GildedRose([new Item('bar', 0, 0)]);

// Act
const items = gildedRose.updateQuality();
Expand All @@ -14,12 +14,171 @@ describe('Gilded Rose', () => {

it('sword quality drops by 1', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Sword', 1, 1)]);
const gildedRose = new GildedRose([new Item('Sword', 1, 2)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(1);
})

it('sword quality does not drop below 0', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Sword', 1, 0)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(0);
})

// sell by date passed decrese quality by 2
it('sword quality drops by 2 when sellIn is negative', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Sword', -1, 2)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(0);
})

// Aged Brie quality increases by 1 when sellIn is positive
it('Aged Brie quality increases by 1 when sellIn is positive', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Aged Brie', 10, 20)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(21);
}
)

it('Aged Brie quality does not exceed 50', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Aged Brie', 10, 50)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(50);
}
);

it('Backstage passes quality increases by 1 when sellIn is positive and more than 10 days', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 15, 20)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(21);
}
);
it('Backstage passes quality increases by 2 when sellIn is between 10 and 5 days', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 10, 20)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(22);
}
);
it('Backstage passes quality increases by 3 when sellIn is between 5 and 0 days', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 5, 20)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(23);
}
);

it('Backstage passes quality drops to 0 when sellIn is negative', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', -1, 20)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(0);
}
);

it('Sulfuras quality does not change', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Sulfuras, Hand of Ragnaros', 0, 80)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(80);
}
);
it('Sulfuras quality does not change when sellIn is negative', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Sulfuras, Hand of Ragnaros', -1, 80)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(80);
}
);

it('quality of an item is never negative', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Sword', 0, 0)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(0);
}
);

it('conjured item quality decreases by 2 when sellIn is positive', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Conjured Mana Cake', 1, 10)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(8);
}
);

it('Golden Sword quality decreases by 0.5 when sellIn is positive', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Golden Sword', 1, 10)]);

// Act
const items = gildedRose.updateQuality();

// Assert
expect(items[0].quality).toBe(9.5);
}
);






});