Spaces:
Running
Running
| 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) | |