mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51:27 +00:00
feat: add calculation methods
This commit is contained in:
parent
c0f15cf713
commit
8c090978fd
@ -4,12 +4,12 @@ import Item from './Item';
|
||||
function App() {
|
||||
return (
|
||||
<div className="App">
|
||||
<Item name="+5 Dexterity Vest" sellIn={10} quality={20} isConjured={true} />
|
||||
<Item name="+5 Dexterity Vest" sellIn={10} quality={20} isConjured={false} />
|
||||
<Item name="Aged Brie" sellIn={2} quality={0} isConjured={false} />
|
||||
<Item name="Elixir of the Mongoose" sellIn={5} quality={7} isConjured={false} />
|
||||
<Item name="Sulfuras, Hand of Ragnaros" sellIn={0} quality={80} isConjured={false} />
|
||||
<Item name="Sulfuras, Hand of Ragnaros" sellIn={1} quality={80} isConjured={false} />
|
||||
<Item name="Backstage passes to a TAFKAL80ETC concert" sellIn={15} quality={20} isConjured={false} />
|
||||
<Item name="Conjured Mana Cake" sellIn={3} quality={6} isConjured={false} />
|
||||
<Item name="Conjured Mana Cake" sellIn={3} quality={6} isConjured={true} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@ -1,22 +1,60 @@
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
function calculateQuality(quality: number, isConjured: boolean): number {
|
||||
const calculatedQuality = quality;
|
||||
const calculatedBias = isConjured ? 2 : 1;
|
||||
function calculateQuality(name:string, quality: number, sellIn: number,isConjured: boolean): number {
|
||||
const sellInAmount = sellIn;
|
||||
|
||||
if(calculatedQuality > 50) {
|
||||
let calculatedQuality = quality;
|
||||
let degradeRate = 1;
|
||||
let qualityIdentifier = 1;
|
||||
|
||||
if(sellInAmount <= 0) {
|
||||
return calculatedQuality;
|
||||
}
|
||||
|
||||
if(name.includes("Sulfuras")) {
|
||||
return 80;
|
||||
};
|
||||
|
||||
if(calculatedQuality >= 50) {
|
||||
return 50;
|
||||
} else if(calculatedQuality < 0) {
|
||||
} else if(calculatedQuality <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
if(isConjured) {
|
||||
degradeRate = 2;
|
||||
}
|
||||
|
||||
return calculatedQuality * calculatedBias;
|
||||
if(name.includes('Aged Brie')) {
|
||||
qualityIdentifier = -1;
|
||||
}
|
||||
|
||||
if(name.includes('Backstage passes')) {
|
||||
if(sellInAmount <= 10 && sellInAmount > 5) {
|
||||
qualityIdentifier = -3;
|
||||
} else if(sellInAmount <= 5 && sellInAmount > 0) {
|
||||
qualityIdentifier = -2;
|
||||
} else if(sellInAmount <= 0) {
|
||||
qualityIdentifier = 0;
|
||||
degradeRate = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return degradeRate * calculatedQuality - qualityIdentifier;
|
||||
};
|
||||
|
||||
function calculateSellIn(sellIn: number): number {
|
||||
return sellIn - 1;
|
||||
function calculateSellIn(name:string, sellIn: number): number {
|
||||
let sellInAmount = sellIn;
|
||||
|
||||
if(name.includes("Sulfuras")) {
|
||||
return sellInAmount;
|
||||
};
|
||||
|
||||
if(sellInAmount <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return sellIn - 1;
|
||||
};
|
||||
|
||||
type ItemProps = {
|
||||
@ -49,17 +87,17 @@ const Item = (props: ItemProps) => {
|
||||
|
||||
return (
|
||||
<div>
|
||||
<p color={isConjured ? 'Red' : 'Green'}>The name {name}</p>
|
||||
<p color={isConjured ? 'Red' : 'Green'}>{name}</p>
|
||||
|
||||
<p>The quality {quality}</p>
|
||||
<p>{quality}</p>
|
||||
|
||||
<p>The sellIn {sellIn}</p>
|
||||
<p>{sellIn}</p>
|
||||
<br></br>
|
||||
<button onClick={() => {
|
||||
setSellIn(calculateSellIn(sellIn));
|
||||
setQuality(calculateQuality(quality, isConjured));
|
||||
setQuality(calculateQuality(name, sellIn, quality, isConjured));
|
||||
setSellIn(calculateSellIn(name, sellIn));
|
||||
}}>
|
||||
Next Day
|
||||
Purchase
|
||||
</button>
|
||||
<br></br>
|
||||
</div>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user