Gilded Rose Kata (JavaScript)
Especificaciones de la Rosa Dorada (Gilded Rose)
Bienvenido al equipo de Gilded Rose. Somos una pequeña posada. También compramos y vendemos mercadería de alta calidad. Por desgracia, nuestra mercadería va bajando de calidad a medida que se aproxima la fecha de venta.
Tenemos un sistema instalado que actualiza automáticamente el inventario
.
Tu tarea es agregar una nueva característica al sistema para que podamos comenzar a vender una nueva categoría de items.
Descripción preliminar
Pero primero, vamos a introducir el sistema:
- Todos los artículos (
Item
) tienen una propiedadsellIn
que denota el número de días que tenemos para venderlo - Todos los artículos tienen una propiedad
quality
que denota cúan valioso es el artículo - Al final de cada día, nuestro sistema decrementa ambos valores para cada artículo mediante el método
updateQuality
Bastante simple, ¿no? Bueno, ahora es donde se pone interesante:
- Una vez que ha pasado la fecha recomendada de venta, la
calidad
se degrada al doble de velocidad - La
calidad
de un artículo nunca es negativa - El "Queso Brie envejecido" (
Aged brie
) incrementa sucalidad
a medida que se pone viejo:- Su
calidad
aumenta en1
unidad cada día - luego de la
fecha de venta
sucalidad
aumenta2
unidades por día
- Su
- La
calidad
de un artículo nunca es mayor a50
- El artículo "Sulfuras" (
Sulfuras
), siendo un artículo legendario, no modifica sufecha de venta
ni se degrada encalidad
- Una "Entrada al Backstage", como el queso brie, incrementa su
calidad
a medida que lafecha de venta
se aproxima:- si faltan 10 días o menos para el concierto, la
calidad
se incrementa en2
unidades - si faltan 5 días o menos, la
calidad
se incrementa en3
unidades - luego de la
fecha de venta
lacalidad
cae a0
- si faltan 10 días o menos para el concierto, la
El requerimiento
Hace poco contratamos a un proveedor de artículos conjurados mágicamente. Esto requiere una actualización del sistema:
- Los artículos
conjurados
degradan sucalidad
al doble de velocidad que los normales
Siéntete libre de realizar cualquier cambio al método updateQuality
y agregar el código que sea necesario, mientras que todo siga funcionando correctamente. Sin embargo, no alteres la clase Item
ni las propiedades de sus instancias.
Notas finales
Para aclarar: un artículo nunca puede tener una calidad
superior a 50
, sin embargo las Sulfuras siendo un artículo legendario posee una calidad inmutable de 80
.
Tools
Jasmine.js is the library used for testing. Documentation are available here.
How to use:
This boilerplate requires Node.js 10 or higher installed on your computer.
Clone or download this repository and then install the dependencies: npm install
.
Useful commands:
- Run the code:
npm run start
. - Run the test:
npm run test
. - Run the test with 'watch' option:
npm run test:watch
. - Run the test with code coverage (reporters: html + text):
npm run test:coverage
. - Run a basic linter:
npm run lint
.