Apéndice C. Cambiar la infraestructura: Hazlo todo con CSV
Este apéndice pretende ser una pequeña ilustración de las ventajas de los patrones Repositorio, Unidad de Trabajo y Capa de Servicio. Está pensado como continuación del Capítulo 6.
Justo cuando terminamos de crear nuestra API de Flask y de prepararla para su lanzamiento, la empresa se dirige a nosotros disculpándose, diciendo que no están preparados para utilizar nuestra API y preguntando si podríamos crear algo que sólo leyera los lotes y los pedidos de un par de CSV y diera como resultado un tercer CSV con las asignaciones.
Normalmente, este es el tipo de cosas que harían que un equipo maldijera, escupiera y tomara notas para sus memorias. Pero nosotros no. No, nos hemos asegurado de que nuestros problemas de infraestructura estén bien desacoplados de nuestro modelo de dominio y capa de servicio. Cambiar a CSV será una simple cuestión de escribir un par de nuevas clases Repository y UnitOfWork, y entonces podremos reutilizartoda nuestra lógica de la capa de dominio y la capa de servicio.
Aquí tienes una prueba E2E para que veas cómo entran y salen los CSV:
Una primera prueba CSV (tests/e2e/test_csv.py)
deftest_cli_app_reads_csvs_with_batches_and_orders_and_outputs_allocations(make_csv):sku1,sku2=random_ref('s1'),random_ref('s2')batch1,batch2,batch3=random_ref('b1'),random_ref('b2'),random_ref('b3')order_ref=random_ref('o')make_csv('batches.csv',[['ref','sku','qty','eta'],[batch1,sku1,100