- Por Emmanuel Valverde
- ·
- Publicado 28-feb-2024 0:00:00
Morning routine
Como soy una persona olvidadiza, necesito un método que me ayude a recordar mi rutina matutina. Por eso he creado un programa que, según la hora del..
Estamos creando un carrito de la compra para una tienda de comestibles en línea. La idea de esta kata es construir el producto de forma iterativa.
Nombre | Precio | % Ingresos | Precio por unidad | Impuestos | Precio final |
Lechuga 🥬 | 1.55 € | 15 % | 1,79 € | Normal (21%) | 2.17 € |
Tomate 🍅 | 0.52 € | 15 % | 0.60 € | Normal (21%) | 0.73 € |
Pollo 🍗 | 1.34 € | 12 % | 1.51 € | Normal (21%) | 1.83 € |
Pan 🍞 | 0.71 € | 12 % | 0.80 € | First necessity (10%) | 0.88 € |
Maíz 🌽 | 1.21 € | 12 % | 1.36 € | First necessity (10%) | 1.50 € |
Código de descuento | Porcentaje de descuento |
---|---|
PROMO_5 | 5% |
PROMO_10 | 10% |
Como cliente
Quiero ver mi cesta de la compra
--------------------------------------------
| Producto | Precio con IVA | Cantidad |
| ----------- | -------------- | -------- |
|------------------------------------------|
| Promoción: |
--------------------------------------------
| Total de productos: 0 |
| Precio total: 0.00 € |
--------------------------------------------
Como cliente
Quiero añadir lechuga 🥬 a mi cesta de envío
Quiero añadir tomate 🍅 a mi carrito de envío
Quiero añadir pollo 🍗 a mi carrito de envío
Quiero añadir pan 🍞 a mi cesta de envío
Quiero añadir maíz 🌽 a mi cesta de envío
Quiero ver mi pedido
--------------------------------------------
| Producto | Price con IVA | Cantidad |
| ----------- | -------------- | -------- |
| Lechuga 🥬 | 2.17 € | 1 |
| Tomate 🍅 | 0.73 € | 1 |
| Pollo 🍗 | 1.83 € | 1 |
| Pan 🍞 | 0.88 € | 1 |
| Maíz 🌽 | 1.50 € | 1 |
|------------------------------------------|
| Promoción: |
--------------------------------------------
| Total productos: 5 |
| Precio total: 7.11 € |
--------------------------------------------
Como cliente
Quiero añadir lechuga 🥬 a mi cesta de envío
Quiero añadir lechuga 🥬 a mi cesta de envío
Quiero añadir lechuga 🥬 a mi cesta de envío
Quiero añadir tomate 🍅 a mi carrito de envío
Quiero añadir pollo 🍗 a mi carrito de envío
Quiero añadir pan 🍞 a mi cesta de envío
Quiero añadir pan 🍞 a mi cesta de envío
Quiero añadir maíz 🌽 a mi cesta de envío
Quiero ver mi pedido
--------------------------------------------
| Producto | Precio con IVA | Cantidad |
| ----------- | -------------- | -------- |
| Lechuga 🥬 | 2.17 € | 3 |
| Tomate 🍅 | 0.73 € | 1 |
| Pollo 🍗 | 1.83 € | 1 |
| Pan 🍞 | 0.88 € | 2 |
| Maíz 🌽 | 1.50 € | 1 |
|------------------------------------------|
| Promoción: |
--------------------------------------------
| Total productos: 8 |
| Precio total: 12.33 € |
--------------------------------------------
Como cliente
Quiero añadir lechuga 🥬 a mi cesta de envío
Quiero añadir lechuga 🥬 a mi cesta de envío
Quiero añadir lechuga 🥬 a mi cesta de envío
Quiero añadir tomate 🍅 a mi carrito de envío
Quiero añadir pollo 🍗 a mi carrito de envío
Quiero añadir pan 🍞 a mi cesta de envío
Quiero añadir pan 🍞 a mi cesta de envío
Quiero añadir maíz 🌽 a mi cesta de envío
Quiero aplicar mi cupón descuento PROMO_5
Quiero ver mi pedido
--------------------------------------------
| Producto. | Precio con IVA | Cantidad |
| ----------- | -------------- | -------- |
| Lechuga 🥬 | 2.17 € | 3 |
| Tomate 🍅 | 0.73 € | 1 |
| Pollo 🍗 | 1.83 € | 1 |
| Pan 🍞 | 0.88 € | 2 |
| Maíz 🌽 | 1.50 € | 1 |
|------------------------------------------|
| Promoción: 5% de descuento PROMO_5 |
--------------------------------------------
| Total productos: 8 |
| Total price: 11.71 € |
--------------------------------------------
Esta API se puede modificar, este es sólo un ejemplo.
Enfoque 1: pasar objetos como argumentos podría ser DTO
public interface ShoppingCart {
public void addItem(Product product);
public void deletItem(Product product);
public void applyDiscount(Discount discount)
public void printShoppingCart();
}
public interface ShoppingCart {
public void addItem(String productName);
public void deletItem(String productName);
public void applyDiscount(Double discount)
public void printShoppingCart();
}
Enfoque 3: pasar primitivas como argumentos y
devolver un DTO
public interface ShoppingCart {
public void addItem(String productName);
public void deletItem(String productName);
public void applyDiscount(Double discount)
public ShoppingCartList getShoppingCart();
}
Los ejemplos gráficos que ves son una referencia de cómo funciona la kata, no tienes que aplicarlos si no quieres.
Como soy una persona olvidadiza, necesito un método que me ayude a recordar mi rutina matutina. Por eso he creado un programa que, según la hora del..
Historia: Durance ha encontrado un libro de magia en una de sus aventuras y ha decidido aprender a encantar sus armas. Debido a la naturaleza..
Introducción Con el propósito de practicar TDD, esta es una de las katas más avanzadas que puedes hacer. A estas alturas ya deberías dominar las..
Suscríbete a nuestra newsletter para que podamos hacerte llegar recomendaciones de expertos y casos prácticos inspiradores