Package giis.demo.descuento
package giis.demo.descuento
Ejemplo de descuentos a clientes (implementacion Spring Boot).
Este ejemplo es el mismo que en samples-test-java, pero desarrollado como aplicación web con Spring Boot, aplicable a la siguiente historia de usuario:
- Como empleado del banco quiero filtrar la informacion del informe de descuentos por la edad del cliente (Problema 3d).
- Criterios de aceptación: El descuento a aplicar
para un cliente como se indica a continuación: Los descuentos son acumulables.
Si el cliente acaba de abrir una cuenta de crédito obtiene el 15% de descuento en todas sus compras de hoy,
si es un cliente habitual con tarjeta de fidelización obtiene un 10% de descuento.
Si el cliente tiene un cupón de descuento obtiene el 20% de descuento
(no acumulable con el descuento de nuevo cliente).
El informe tiene un parámetro opcional (edad) que si está presente, oculta los resultados de aquellos con edad menor que la especificada. Este parámetro es indicado desde la pantalla del usuario (se supone que ya está validado el formulario). -
Notas sobre la implementación:
El punto de acceso a la aplicacion web es *Application.java, accesible a traves de http://localhost:8080/
La vista es html y se localiza en subcarpetas de src/main/resources.
La logica de negocio se basa en un unico repositorio asociado al correspondiente servicio.
Para ilustrar otras formas de realizar pruebas se incluye un controlador REST que proporciona la misma funcionalidad que la aplicacion web. Se incluye tambien otra funcionalidad en la que se debe acceder a un microservicio externo que todavia no esta implementado para ilustrar el uso de mocks. - Notas sobre pruebas (JUnit): Se incluyen pruebas unitarias de un repositorio, de un servicio utilizando mocks para parte de la funcionalidad, del acceso como servicio rest e integracion con el interfaz de usuario con Selenium.
- Notas sobre pruebas (BDD): Se incluyen pruebas unitarias del repositorio y de integracion con el interfaz de usuario utilizando JBehave.
- Criterios de aceptación: El descuento a aplicar
para un cliente como se indica a continuación: Los descuentos son acumulables.
Si el cliente acaba de abrir una cuenta de crédito obtiene el 15% de descuento en todas sus compras de hoy,
si es un cliente habitual con tarjeta de fidelización obtiene un 10% de descuento.
Si el cliente tiene un cupón de descuento obtiene el 20% de descuento
(no acumulable con el descuento de nuevo cliente).
-
ClassDescriptionClientes de la entidad bancaria, mapeados directamente a la tabla Cliente.Logica de negocio: Spring autogenera todos los DAOs y otros metodos del repositorio, aqui solo se implementan los metodos adicionales que se necesiten.Obgiene datos, descuentos y promociones de clientesPunto de entrada que arranca la aplicacion en el puerto 8080: Solamente personaliza la configuracion del nombre de los paquetes donde se tienen los repositorios y las entidades (para simplificar el ejemplo, en este caso se ponen bajo el mismo paquete)Cada una de las filas que muestran al usuario la lista de clientes y descuentosParametros del formulario que son enviados al controlador desde la vista de DescuentosControlador REST para obtener los descuentos bajo una url /api/decuentos?edad=xxx (edad es opcional, si no se indica, se obtienen todos).Controlador web para la funcionalidad de visualizacion descuentos de clientes.Api cliente para acceder al microservicio de marketing (obtendion de promociones)Cada una de las filas que muestran al usuario la lista de clientes y descuentos