Ejercicio que muestra cómo se implementa un decorator en ECMAScript 6.
Tenemos el enunciado que consiste en
- un cliente que sabe comprar y pagar al vencimiento de su tarjeta
- un cliente con safe shop que evita compras por más de un monto
- un cliente con promoción que suma puntos por cada compra mayor a un monto
- se pueden combinar safe shop y promoción
La implementación se hace en el archivo clientes, mediante una clase que representa al cliente, una clase decoradora abstracta y dos subclases decoradoras que implementan el safe shop y la promoción.
El proyecto viene con tests hechos en Jasmine. Para facilitar la introducción al lector ya están copiados en el presente repositorio. Para correr los tests
- Clonar el proyecto (o descargarlo como zip)
# git clone https://github.com/uqbar-project/clientesDecorator-es6
- Abrir el archivo SpecRunner.html en un navegador
- Eso corre todos los tests definidos en la carpeta spec.
Otra opción consiste en correr los tests mediante el script de npm desde la consola o el Git Bash
$ npm install
$ npm test
Los archivos de configuración que pueden mirar son:
- package.json: que contiene el script para instalar dependencias y ejecutar los tests de Karma
- karma.conf.js: la configuración de Karma para correr los tests contra un browser oculto llamado PhantomJS, que requiere transpilar los archivos fuente en ECMAScript6 a Javascript 5.