68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
import unittest
|
|
|
|
import build_observed_products
|
|
|
|
|
|
class ObservedProductTests(unittest.TestCase):
|
|
def test_build_observed_products_aggregates_rows_with_same_key(self):
|
|
rows = [
|
|
{
|
|
"retailer": "giant",
|
|
"order_id": "1",
|
|
"line_no": "1",
|
|
"order_date": "2026-01-01",
|
|
"item_name": "SB GALA APPLE 5LB",
|
|
"item_name_norm": "GALA APPLE",
|
|
"retailer_item_id": "11",
|
|
"upc": "111",
|
|
"brand_guess": "SB",
|
|
"variant": "",
|
|
"size_value": "5",
|
|
"size_unit": "lb",
|
|
"pack_qty": "",
|
|
"measure_type": "weight",
|
|
"image_url": "https://example.test/a.jpg",
|
|
"is_store_brand": "true",
|
|
"is_fee": "false",
|
|
"is_discount_line": "false",
|
|
"is_coupon_line": "false",
|
|
"line_total": "7.99",
|
|
},
|
|
{
|
|
"retailer": "giant",
|
|
"order_id": "2",
|
|
"line_no": "1",
|
|
"order_date": "2026-01-10",
|
|
"item_name": "SB GALA APPLE 5 LB",
|
|
"item_name_norm": "GALA APPLE",
|
|
"retailer_item_id": "11",
|
|
"upc": "111",
|
|
"brand_guess": "SB",
|
|
"variant": "",
|
|
"size_value": "5",
|
|
"size_unit": "lb",
|
|
"pack_qty": "",
|
|
"measure_type": "weight",
|
|
"image_url": "",
|
|
"is_store_brand": "true",
|
|
"is_fee": "false",
|
|
"is_discount_line": "false",
|
|
"is_coupon_line": "false",
|
|
"line_total": "8.49",
|
|
},
|
|
]
|
|
|
|
observed = build_observed_products.build_observed_products(rows)
|
|
|
|
self.assertEqual(1, len(observed))
|
|
self.assertEqual("2", observed[0]["times_seen"])
|
|
self.assertEqual("2026-01-01", observed[0]["first_seen_date"])
|
|
self.assertEqual("2026-01-10", observed[0]["last_seen_date"])
|
|
self.assertEqual("11", observed[0]["representative_retailer_item_id"])
|
|
self.assertEqual("111", observed[0]["representative_upc"])
|
|
self.assertIn("SB GALA APPLE 5LB", observed[0]["raw_name_examples"])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|