Spaces:
Sleeping
Sleeping
File size: 1,898 Bytes
03a907a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | 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)
|