
- Por Giulio Perrone
- ·
- Publicado 17-abr-2023 10:18:38
Hechizo
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..
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.
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..
Introducción Como un desarrollador que escribe blogs quiero una herramienta que me ayude a entender mejor el texto que estoy redactando. Para ello..
Suscríbete a nuestra newsletter para que podamos hacerte llegar recomendaciones de expertos y casos prácticos inspiradores
Suscríbete a nuestra newsletter para que podamos hacerte llegar recomendaciones de expertos y casos prácticos inspiradores