Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test #21

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open

Test #21

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
18 changes: 15 additions & 3 deletions app/gilded-rose.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export class Item {

constructor(name, sellIn, quality) {
this.name = name;
this.sellIn = sellIn;
this.sellIn = sellIn;
this.quality = quality;
}
}
Expand All @@ -22,7 +22,13 @@ export class GildedRose {
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') {
this.items[i].quality = this.items[i].quality - 1
if(this.items[i].name.split(" ")[0] == 'Conjured') {
this.items[i].quality = this.items[i].quality - 2;
if(this.items[i].quality < 0)
this.items[i].quality = 0;
} else {
this.items[i].quality = this.items[i].quality - 1;
}
}
}
} else {
Expand Down Expand Up @@ -52,6 +58,12 @@ export class GildedRose {
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
this.items[i].quality = this.items[i].quality - 1
}
if(this.items[i].name.split(" ")[0] == 'Conjured') {
this.items[i].quality = this.items[i].quality - 1;
if(this.items[i].quality < 0)
this.items[i].quality = 0;
}

}
} else {
this.items[i].quality = this.items[i].quality - this.items[i].quality
Expand All @@ -66,4 +78,4 @@ export class GildedRose {

return this.items;
}
}
}
158 changes: 157 additions & 1 deletion test/jest/gilded-rose.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ describe('Gilded Rose', () => {
const items = gildedRose.updateQuality();

// Assert
expect(items[0].name).toBe('bar');
expect(items[0].name).toBe('foo');
});

it('sword quality drops by 1', () => {
Expand All @@ -19,7 +19,163 @@ describe('Gilded Rose', () => {
// Act
const items = gildedRose.updateQuality();

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

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

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

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

it('sword sellIn can be negative', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Sword', 0, 0)]);

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

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

it('Once the sell by date has passed, Quality degrades twice as fast', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Sword', 0, 10)]);

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

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

it('The 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('"Aged Brie" actually increases in Quality the older it gets', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Aged Brie', 5, 0)]);

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

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

it('The Quality of an item is never more than 50', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Aged Brie', 5, 50)]);

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

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

it('"Sulfuras", never has to be sold or decreases in Quality', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Sulfuras, Hand of Ragnaros', 5, 80)]);

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

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

it('"Backstage passes", Quality increases by 2 when there are 10 days or less; ', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 10, 10)]);

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

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

it('"Backstage passes", Quality increases by 3 when there are 5 days or less; ', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 5, 10)]);

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

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

it('"Backstage passes", Quality drops to 0 after the concert; ', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Backstage passes to a TAFKAL80ETC concert', 0, 10)]);

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

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

//teste pentru Conjured
it('conjured degrade in quality twice as fast as normal items', () => {
// 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('conjured degrade in quality twice as fast as normal items', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Conjured Mana Cake', 1, 1)]);

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

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

it('conjured degrade in quality twice as fast as normal items', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Conjured Mana Cake', -1, 5)]);

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

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

it('conjured degrade in quality twice as fast as normal items', () => {
// Arrange
const gildedRose = new GildedRose([new Item('Aged Brie', 5, 48)]);

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

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