Skip to content

Commit bdac765

Browse files
Modify updateQuality method in the gilded-rose.ts file
Change the test for the Suflura item in the gilded-rose.spec.ts file: fix the name of the item. Modify the updateQuality method in the gilded-rose.ts file. Also change the test for Conjured items in the gilded-rose.spec.ts file. Signed-off-by: Alexandra Stroiu <[email protected]>
1 parent 04a6437 commit bdac765

File tree

2 files changed

+52
-68
lines changed

2 files changed

+52
-68
lines changed

app/gilded-rose.ts

Lines changed: 45 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,55 @@
11
export class Item {
2-
name: string;
3-
sellIn: number;
4-
quality: number;
2+
name: string;
3+
sellIn: number;
4+
quality: number;
55

6-
constructor(name, sellIn, quality) {
7-
this.name = name;
8-
this.sellIn = sellIn;
9-
this.quality = quality;
10-
}
6+
constructor(name, sellIn, quality) {
7+
this.name = name;
8+
this.sellIn = sellIn;
9+
this.quality = quality;
10+
}
1111
}
1212

1313
export class GildedRose {
14-
items: Array<Item>;
14+
items: Array<Item>;
1515

16-
constructor(items = [] as Array<Item>) {
17-
this.items = items;
18-
}
16+
constructor(items = [] as Array<Item>) {
17+
this.items = items;
18+
}
19+
20+
updateQuality() {
21+
for (let i = 0; i < this.items.length; i++) {
22+
if (this.items[i].name != "Sulfuras, Hand of Ragnaros") {
23+
let qualityDifference = 1;
24+
if (this.items[i].name.includes("Conjured")) {
25+
qualityDifference = 2;
26+
}
27+
if (this.items[i].sellIn <= 0) {
28+
qualityDifference *= 2;
29+
}
1930

20-
updateQuality() {
21-
for (let i = 0; i < this.items.length; i++) {
22-
if (this.items[i].name != 'Aged Brie' && this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') {
23-
if (this.items[i].quality > 0) {
24-
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
25-
this.items[i].quality = this.items[i].quality - 1
26-
}
27-
}
28-
} else {
29-
if (this.items[i].quality < 50) {
30-
this.items[i].quality = this.items[i].quality + 1
31-
if (this.items[i].name == 'Backstage passes to a TAFKAL80ETC concert') {
32-
if (this.items[i].sellIn < 11) {
33-
if (this.items[i].quality < 50) {
34-
this.items[i].quality = this.items[i].quality + 1
35-
}
36-
}
37-
if (this.items[i].sellIn < 6) {
38-
if (this.items[i].quality < 50) {
39-
this.items[i].quality = this.items[i].quality + 1
40-
}
41-
}
42-
}
43-
}
44-
}
45-
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
46-
this.items[i].sellIn = this.items[i].sellIn - 1;
47-
}
48-
if (this.items[i].sellIn < 0) {
49-
if (this.items[i].name != 'Aged Brie') {
50-
if (this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') {
51-
if (this.items[i].quality > 0) {
52-
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
53-
this.items[i].quality = this.items[i].quality - 1
54-
}
55-
}
56-
} else {
57-
this.items[i].quality = this.items[i].quality - this.items[i].quality
58-
}
59-
} else {
60-
if (this.items[i].quality < 50) {
61-
this.items[i].quality = this.items[i].quality + 1
62-
}
63-
}
64-
}
31+
if (this.items[i].name != "Aged Brie" && this.items[i].name != "Backstage passes to a TAFKAL80ETC concert" && this.items[i].quality > 0) {
32+
this.items[i].quality = this.items[i].quality >= qualityDifference ? (this.items[i].quality - qualityDifference) : 0;
6533
}
6634

67-
return this.items;
35+
if (this.items[i].name == "Aged Brie" && this.items[i].quality < 50) {
36+
this.items[i].quality = (this.items[i].quality + qualityDifference) <= 50 ? (this.items[i].quality + qualityDifference) : 50;
37+
}
38+
39+
if (this.items[i].name == "Backstage passes to a TAFKAL80ETC concert" && this.items[i].quality < 50) {
40+
if (this.items[i].sellIn > 10) {
41+
this.items[i].quality += qualityDifference;
42+
} else if (5 < this.items[i].sellIn && this.items[i].sellIn <= 10) {
43+
this.items[i].quality = (this.items[i].quality + 2 * qualityDifference) <= 50 ? (this.items[i].quality + 2 * qualityDifference) : 50;
44+
} else if (0 < this.items[i].sellIn && this.items[i].sellIn <= 5) {
45+
this.items[i].quality = (this.items[i].quality + 3 * qualityDifference) <= 50 ? (this.items[i].quality + 3 * qualityDifference) : 50;
46+
} else {
47+
this.items[i].quality = 0;
48+
}
49+
}
50+
this.items[i].sellIn -= 1;
51+
}
6852
}
69-
}
53+
return this.items;
54+
}
55+
}

test/jest/gilded-rose.spec.ts

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ describe("Gilded Rose", () => {
1414

1515
it("Sulfuras quality is 80 and it never alters", () => {
1616
// Arrange
17-
const gildedRose = new GildedRose([new Item("Sulfuras", 1, 80)]);
17+
const gildedRose = new GildedRose([new Item("Sulfuras, Hand of Ragnaros", 1, 80)]);
1818

1919
// Act
2020
const items = gildedRose.updateQuality();
@@ -25,7 +25,7 @@ describe("Gilded Rose", () => {
2525

2626
it("Sulfuras SellIn date never alters", () => {
2727
// Arrange
28-
const gildedRose = new GildedRose([new Item("Sulfuras", 8, 80)]);
28+
const gildedRose = new GildedRose([new Item("Sulfuras, Hand of Ragnaros", 8, 80)]);
2929

3030
// Act
3131
const items = gildedRose.updateQuality();
@@ -132,7 +132,6 @@ describe("Gilded Rose", () => {
132132
it("Once the sell by date has passed, Quality degrades twice as fast.", () => {
133133
const gildedRose = new GildedRose([
134134
new Item("Aged Brie", -2, 6),
135-
new Item("Backstage passes to a TAFKAL80ETC concert", 0, 50),
136135
new Item("Sword", 0, 2),
137136
new Item("Sword", 0, 3),
138137
new Item("Sword", -1, 1),
@@ -142,9 +141,8 @@ describe("Gilded Rose", () => {
142141

143142
expect(items[0].quality).toBe(8);
144143
expect(items[1].quality).toBe(0);
145-
expect(items[2].quality).toBe(0);
146-
expect(items[3].quality).toBe(1);
147-
expect(items[4].quality).toBe(0);
144+
expect(items[2].quality).toBe(1);
145+
expect(items[3].quality).toBe(0);
148146
});
149147

150148
it('"Conjured" items degrade in Quality twice as fast as normal items.', () => {
@@ -158,9 +156,9 @@ describe("Gilded Rose", () => {
158156

159157
expect(items[0].sellIn).toBe(2);
160158
expect(items[0].quality).toBe(4);
161-
expect(items[2].sellIn).toBe(-1);
159+
expect(items[1].sellIn).toBe(-1);
160+
expect(items[1].quality).toBe(0);
161+
expect(items[2].sellIn).toBe(-4);
162162
expect(items[2].quality).toBe(0);
163-
expect(items[3].sellIn).toBe(-4);
164-
expect(items[3].quality).toBe(0);
165163
});
166164
});

0 commit comments

Comments
 (0)