import pytest import os import tempfile import json from dataset.problem_21.buggy import process_inventory_data def test_process_inventory_data(): data = { "store_id": "ST-001", "items": [ {"id": "A1", "name": "Widget", "stock": 50, "price": 10.0, "category": "tools"}, {"id": "A2", "name": "Gadget", "stock": 10, "price": 25.0, "category": "electronics"}, {"id": "A3", "name": "Hammer", "stock": 5, "price": 15.0, "category": "tools"}, {"id": "A4", "name": "Cable", "stock": "20", "price": "5.5", "category": "electronics"} ] } with tempfile.NamedTemporaryFile(mode='w', delete=False) as f: json.dump(data, f) filepath = f.name try: result = process_inventory_data(filepath, 15) # total_value = (50*10) + (10*25) + (5*15) + (20*5.5) = 500 + 250 + 75 + 110 = 935.0 assert result['total_value'] == 935.0 # low_stock: Gadget (10), Hammer (5) -> < 15 assert set(result['low_stock_items']) == {"Gadget", "Hammer"} # categories: tools (50 + 5 = 55), electronics (10 + 20 = 30) assert result['categories']['tools'] == 55 assert result['categories']['electronics'] == 30 finally: os.remove(filepath) def test_missing_items_key(): data = {"store_id": "ST-002"} with tempfile.NamedTemporaryFile(mode='w', delete=False) as f: json.dump(data, f) filepath = f.name try: # Should handle missing items gracefully, perhaps returning empty stats result = process_inventory_data(filepath, 15) assert result['total_value'] == 0 assert result['low_stock_items'] == [] assert result['categories'] == {} finally: os.remove(filepath)