
- By Emmanuel Valverde y Fran Iglesias
- ·
- Posted 22-mar-2023 11:07:35
Validación de contraseña
Iteración 1 - Validación de contraseña básica Objetivo Diseñar e implementar un software que valide una contraseña utilizando TDD.
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.
Iteración 1 - Validación de contraseña básica Objetivo Diseñar e implementar un software que valide una contraseña utilizando TDD.
El objetivo de esta kata navideña es imprimir la letra de la canción "Doce días de Navidad" con el menor número de líneas posible.
Hay una escasez de árboles de Navidad, sin embargo, ¡tú puedes ayudar! A falta de árboles de verdad, Papá Noel va a enseñar a los niños del mundo la..
Suscríbete a nuestra newsletter para que podamos hacerte llegar recomendaciones de expertos y casos prácticos inspiradores
¡Tu correo electrónico de bienvenida está de camino! Puedes elegir el tipo de newsletter que te gustaría recibir haciendo clic en el enlace al Centro de preferencias.
Suscríbete a nuestra newsletter para que podamos hacerte llegar recomendaciones de expertos y casos prácticos inspiradores
¡Tu correo electrónico de bienvenida está de camino! Puedes elegir el tipo de newsletter que te gustaría recibir haciendo clic en el enlace al Centro de preferencias.