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)