From 436f5300fa3efc1839a14953b9d9b982e46f6c44 Mon Sep 17 00:00:00 2001 From: monomono Date: Sat, 10 Oct 2026 16:45:32 -0500 Subject: [PATCH] #51 feat: categorias anidadas en el listado legacy de productos Issue #51: discriminacion y administracion de categorias de productos. - Product.to_list() devuelve categorias como objetos (id, name, alternative_name, active) en vez de solo nombres --- tienda_ilusion/don_confiao/models/products.py | 10 +++++++- .../tests/test_product_categories.py | 25 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/tienda_ilusion/don_confiao/models/products.py b/tienda_ilusion/don_confiao/models/products.py index 495c8f2..191d43c 100644 --- a/tienda_ilusion/don_confiao/models/products.py +++ b/tienda_ilusion/don_confiao/models/products.py @@ -49,7 +49,15 @@ class Product(models.Model): "price_list": product.price, "uom": product.measuring_unit, "external_id": product.external_id, - "categories": [c.name for c in product.categories.all()], + "categories": [ + { + "id": c.id, + "name": c.name, + "alternative_name": c.alternative_name, + "active": c.active, + } + for c in product.categories.all() + ], } products_list.append(rproduct) return products_list diff --git a/tienda_ilusion/don_confiao/tests/test_product_categories.py b/tienda_ilusion/don_confiao/tests/test_product_categories.py index d20b42c..d32d1c1 100644 --- a/tienda_ilusion/don_confiao/tests/test_product_categories.py +++ b/tienda_ilusion/don_confiao/tests/test_product_categories.py @@ -74,4 +74,29 @@ class TestProductCategorySerializers(TestCase): "active": True, } ], + ) + + def test_product_to_list_incluye_categorias_anidadas(self): + category = ProductCategory.objects.create( + name="Bebidas", external_id="8", alternative_name="Jugos" + ) + product = Product.objects.create( + name="Jugo de naranja", + price=2500, + measuring_unit="UNIT", + external_id="10", + ) + product.categories.add(category) + + data = Product.to_list() + self.assertEqual( + data[0]["categories"], + [ + { + "id": category.pk, + "name": "Bebidas", + "alternative_name": "Jugos", + "active": True, + } + ], ) \ No newline at end of file