Fix normalized quantity basis
This commit is contained in:
@@ -264,6 +264,26 @@ class CostcoPipelineTests(unittest.TestCase):
|
||||
self.assertEqual("6", row["normalized_quantity"])
|
||||
self.assertEqual("count", row["normalized_quantity_unit"])
|
||||
|
||||
volume_row = enrich_costco.parse_costco_item(
|
||||
order_id="abc",
|
||||
order_date="2026-03-12",
|
||||
raw_path=Path("costco_output/raw/abc.json"),
|
||||
line_no=3,
|
||||
item={
|
||||
"itemNumber": "1185912",
|
||||
"itemDescription01": "KS ALMND BAR US 1.74QTS CN",
|
||||
"itemDescription02": None,
|
||||
"itemDepartmentNumber": 18,
|
||||
"transDepartmentNumber": 18,
|
||||
"unit": 2,
|
||||
"itemIdentifier": "E",
|
||||
"amount": 21.98,
|
||||
"itemUnitPriceAmount": 10.99,
|
||||
},
|
||||
)
|
||||
self.assertEqual("3.48", volume_row["normalized_quantity"])
|
||||
self.assertEqual("qt", volume_row["normalized_quantity_unit"])
|
||||
|
||||
discount = enrich_costco.parse_costco_item(
|
||||
order_id="abc",
|
||||
order_date="2026-03-12",
|
||||
|
||||
@@ -111,9 +111,25 @@ class EnrichGiantTests(unittest.TestCase):
|
||||
self.assertEqual("weight", row["measure_type"])
|
||||
self.assertEqual("6", row["pack_qty"])
|
||||
self.assertEqual("7.5", row["size_value"])
|
||||
self.assertEqual("90", row["normalized_quantity"])
|
||||
self.assertEqual("oz", row["normalized_quantity_unit"])
|
||||
self.assertEqual("0.0667", row["price_per_oz"])
|
||||
self.assertEqual("1.0667", row["price_per_lb"])
|
||||
|
||||
def test_derive_normalized_quantity_handles_count_volume_and_each(self):
|
||||
self.assertEqual(
|
||||
("18", "count"),
|
||||
enrich_giant.derive_normalized_quantity("1", "", "", "18", "count"),
|
||||
)
|
||||
self.assertEqual(
|
||||
("3.48", "qt"),
|
||||
enrich_giant.derive_normalized_quantity("2", "1.74", "qt", "", "volume"),
|
||||
)
|
||||
self.assertEqual(
|
||||
("2", "each"),
|
||||
enrich_giant.derive_normalized_quantity("2", "", "", "", "each"),
|
||||
)
|
||||
|
||||
def test_build_items_enriched_reads_raw_order_files_and_writes_csv(self):
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
raw_dir = Path(tmpdir) / "raw"
|
||||
|
||||
@@ -47,6 +47,8 @@ class PurchaseLogTests(unittest.TestCase):
|
||||
"upc": "4011",
|
||||
"qty": "1",
|
||||
"unit": "LB",
|
||||
"normalized_quantity": "1",
|
||||
"normalized_quantity_unit": "lb",
|
||||
"line_total": "1.29",
|
||||
"unit_price": "1.29",
|
||||
"measure_type": "weight",
|
||||
@@ -71,6 +73,8 @@ class PurchaseLogTests(unittest.TestCase):
|
||||
"retailer_item_id": "30669",
|
||||
"qty": "1",
|
||||
"unit": "E",
|
||||
"normalized_quantity": "3",
|
||||
"normalized_quantity_unit": "lb",
|
||||
"line_total": "2.98",
|
||||
"unit_price": "2.98",
|
||||
"size_value": "3",
|
||||
@@ -155,6 +159,8 @@ class PurchaseLogTests(unittest.TestCase):
|
||||
self.assertTrue(all(row["catalog_id"] == "cat_banana" for row in rows))
|
||||
self.assertEqual({"giant", "costco"}, {row["retailer"] for row in rows})
|
||||
self.assertEqual("https://example.test/banana.jpg", rows[0]["image_url"])
|
||||
self.assertEqual("1", rows[0]["normalized_quantity"])
|
||||
self.assertEqual("lb", rows[0]["normalized_quantity_unit"])
|
||||
|
||||
def test_main_writes_purchase_and_example_csvs(self):
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
@@ -184,6 +190,8 @@ class PurchaseLogTests(unittest.TestCase):
|
||||
"upc": "4011",
|
||||
"qty": "1",
|
||||
"unit": "LB",
|
||||
"normalized_quantity": "1",
|
||||
"normalized_quantity_unit": "lb",
|
||||
"line_total": "1.29",
|
||||
"unit_price": "1.29",
|
||||
"measure_type": "weight",
|
||||
@@ -208,6 +216,8 @@ class PurchaseLogTests(unittest.TestCase):
|
||||
"retailer_item_id": "30669",
|
||||
"qty": "1",
|
||||
"unit": "E",
|
||||
"normalized_quantity": "3",
|
||||
"normalized_quantity_unit": "lb",
|
||||
"line_total": "2.98",
|
||||
"unit_price": "2.98",
|
||||
"size_value": "3",
|
||||
@@ -346,6 +356,8 @@ class PurchaseLogTests(unittest.TestCase):
|
||||
"upc": "",
|
||||
"qty": "1",
|
||||
"unit": "EA",
|
||||
"normalized_quantity": "1",
|
||||
"normalized_quantity_unit": "each",
|
||||
"line_total": "3.50",
|
||||
"unit_price": "3.50",
|
||||
"measure_type": "each",
|
||||
@@ -403,6 +415,8 @@ class PurchaseLogTests(unittest.TestCase):
|
||||
self.assertEqual("approved", rows[0]["review_status"])
|
||||
self.assertEqual("create", rows[0]["resolution_action"])
|
||||
self.assertEqual("cat_ice", links[0]["catalog_id"])
|
||||
self.assertEqual("1", rows[0]["normalized_quantity"])
|
||||
self.assertEqual("each", rows[0]["normalized_quantity_unit"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user