mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 14:31:28 +00:00
Added starndjs for linting, resolved initial errors, tested inheritance approach to tackle constraint of not touching the Item class
This commit is contained in:
parent
e2c5826e71
commit
9cbeedd736
1
js-jest/.gitignore
vendored
1
js-jest/.gitignore
vendored
@ -1 +1,2 @@
|
||||
/node_modules/
|
||||
.vscode
|
||||
2882
js-jest/package-lock.json
generated
2882
js-jest/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -23,6 +23,18 @@
|
||||
},
|
||||
"homepage": "https://github.com/emilybache/GildedRose-Refactoring-Kata",
|
||||
"devDependencies": {
|
||||
"jest": "^24.9.0"
|
||||
"babel-eslint": "^10.1.0",
|
||||
"jest": "^24.9.0",
|
||||
"standard": "^5.0.0"
|
||||
},
|
||||
"standard": {
|
||||
"parser": "babel-eslint",
|
||||
"env": [
|
||||
"jest",
|
||||
"node"
|
||||
],
|
||||
"ignore": [
|
||||
"node_modules"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,67 +1,95 @@
|
||||
|
||||
/**
|
||||
* Do not alter the Item class or Items property as those belong to the goblin in the corner who
|
||||
* will insta-rage and one-shot you as he doesn't believe in shared code ownership
|
||||
*/
|
||||
class Item {
|
||||
constructor(name, sellIn, quality){
|
||||
this.name = name;
|
||||
this.sellIn = sellIn;
|
||||
this.quality = quality;
|
||||
constructor (name, sellIn, quality) {
|
||||
this.name = name
|
||||
this.sellIn = sellIn
|
||||
this.quality = quality
|
||||
}
|
||||
}
|
||||
|
||||
class Blade extends Item {
|
||||
constructor(...args) {
|
||||
super(...args)
|
||||
}
|
||||
|
||||
whatAmI() {
|
||||
console.log(`[Blade] I am a Blade with: name: ${this.name}, sellIn: ${this.sellIn}, quality: ${this.quality}`)
|
||||
}
|
||||
}
|
||||
|
||||
class Sword extends Blade {
|
||||
constructor(...args) {
|
||||
super(...args)
|
||||
}
|
||||
|
||||
whoAmI() {
|
||||
console.log('[Sword] I am a sword! AND...')
|
||||
this.whatAmI()
|
||||
}
|
||||
}
|
||||
|
||||
class Shop {
|
||||
constructor(items=[]){
|
||||
this.items = items;
|
||||
constructor (items = []) {
|
||||
this.items = items
|
||||
}
|
||||
updateQuality() {
|
||||
|
||||
updateQuality () {
|
||||
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].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 !== 'Sulfuras, Hand of Ragnaros') {
|
||||
this.items[i].quality = this.items[i].quality - 1
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (this.items[i].quality < 50) {
|
||||
this.items[i].quality = this.items[i].quality + 1;
|
||||
if (this.items[i].name == 'Backstage passes to a TAFKAL80ETC concert') {
|
||||
this.items[i].quality = this.items[i].quality + 1
|
||||
if (this.items[i].name === 'Backstage passes to a TAFKAL80ETC concert') {
|
||||
if (this.items[i].sellIn < 11) {
|
||||
if (this.items[i].quality < 50) {
|
||||
this.items[i].quality = this.items[i].quality + 1;
|
||||
this.items[i].quality = this.items[i].quality + 1
|
||||
}
|
||||
}
|
||||
if (this.items[i].sellIn < 6) {
|
||||
if (this.items[i].quality < 50) {
|
||||
this.items[i].quality = this.items[i].quality + 1;
|
||||
this.items[i].quality = this.items[i].quality + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') {
|
||||
this.items[i].sellIn = this.items[i].sellIn - 1;
|
||||
if (this.items[i].name !== 'Sulfuras, Hand of Ragnaros') {
|
||||
this.items[i].sellIn = this.items[i].sellIn - 1
|
||||
}
|
||||
if (this.items[i].sellIn < 0) {
|
||||
if (this.items[i].name != 'Aged Brie') {
|
||||
if (this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') {
|
||||
if (this.items[i].name !== 'Aged Brie') {
|
||||
if (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 !== 'Sulfuras, Hand of Ragnaros') {
|
||||
this.items[i].quality = this.items[i].quality - 1
|
||||
}
|
||||
}
|
||||
} else {
|
||||
this.items[i].quality = this.items[i].quality - this.items[i].quality;
|
||||
this.items[i].quality = this.items[i].quality - this.items[i].quality
|
||||
}
|
||||
} else {
|
||||
if (this.items[i].quality < 50) {
|
||||
this.items[i].quality = this.items[i].quality + 1;
|
||||
this.items[i].quality = this.items[i].quality + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return this.items;
|
||||
return this.items
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
Item,
|
||||
Shop
|
||||
Shop,
|
||||
Sword
|
||||
}
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
const {Shop, Item} = require("../src/gilded_rose");
|
||||
const { Shop, Item } = require('../src/gilded_rose')
|
||||
|
||||
describe("Gilded Rose", function() {
|
||||
it("should foo", function() {
|
||||
const gildedRose = new Shop([new Item("foo", 0, 0)]);
|
||||
const items = gildedRose.updateQuality();
|
||||
expect(items[0].name).toBe("fixme");
|
||||
});
|
||||
});
|
||||
describe('Gilded Rose', function () {
|
||||
it('should foo', function () {
|
||||
const gildedRose = new Shop([new Item('foo', 0, 0)])
|
||||
const items = gildedRose.updateQuality()
|
||||
expect(items[0].name).toBe('fixme')
|
||||
})
|
||||
})
|
||||
|
||||
@ -1,27 +1,30 @@
|
||||
|
||||
const { Shop, Item } = require("../src/gilded_rose");
|
||||
const { Shop, Item, Sword } = require('../src/gilded_rose')
|
||||
|
||||
const items = [
|
||||
new Item("+5 Dexterity Vest", 10, 20),
|
||||
new Item("Aged Brie", 2, 0),
|
||||
new Item("Elixir of the Mongoose", 5, 7),
|
||||
new Item("Sulfuras, Hand of Ragnaros", 0, 80),
|
||||
new Item("Sulfuras, Hand of Ragnaros", -1, 80),
|
||||
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),
|
||||
new Item('+5 Dexterity Vest', 10, 20),
|
||||
new Item('Aged Brie', 2, 0),
|
||||
new Item('Elixir of the Mongoose', 5, 7),
|
||||
new Item('Sulfuras, Hand of Ragnaros', 0, 80),
|
||||
new Item('Sulfuras, Hand of Ragnaros', -1, 80),
|
||||
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)
|
||||
]
|
||||
|
||||
const days = Number(process.argv[2]) || 2;
|
||||
const gildedRose = new Shop(items);
|
||||
const mySword = new Sword('Awesome Sword', 10, 20)
|
||||
mySword.whoAmI()
|
||||
|
||||
console.log("OMGHAI!");
|
||||
const days = Number(process.argv[2]) || 2
|
||||
const gildedRose = new Shop(items)
|
||||
|
||||
console.log('OMGHAI!')
|
||||
for (let day = 0; day < days; day++) {
|
||||
console.log(`\n-------- day ${day} --------`);
|
||||
console.log("name, sellIn, quality");
|
||||
items.forEach(item => console.log(`${item.name}, ${item.sellIn}, ${item.quality}`));
|
||||
gildedRose.updateQuality();
|
||||
console.log(`\n-------- day ${day} --------`)
|
||||
console.log('name, sellIn, quality')
|
||||
items.forEach(item => console.log(`${item.name}, ${item.sellIn}, ${item.quality}`))
|
||||
gildedRose.updateQuality()
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user