refactor: Convert to UV Python project with proper package structure

- Restructured project to use src/stocktool package layout
- Migrated to UV for dependency management
- Added pyproject.toml with all dependencies (sv-ttk, pillow, requests, pyyaml)
- Organized test files into tests/ directory
- Updated .gitignore for UV projects
- Comprehensive README with installation and usage instructions
- Removed old unused files (main.py, stock_tool_gui.py, duplicate copy)
- Added CLI entry point: stock-tool command

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-10-29 10:52:10 +07:00
parent abad7d3fa5
commit 9c742af585
24 changed files with 1563 additions and 192 deletions

67
tests/test_add_stock.py Normal file
View File

@@ -0,0 +1,67 @@
#!/usr/bin/env python3
"""Test script to verify the add stock response handling."""
def handle_add_stock_response(response_data):
"""
Simulate the add stock response handling logic.
Args:
response_data: The response from POST /api/stock/
Returns:
Stock item ID
"""
if isinstance(response_data, list):
# If it's a list, get the first item
stock_item = response_data[0] if response_data else {}
else:
# If it's a dict, use it directly
stock_item = response_data
sid = stock_item.get('pk', stock_item.get('id'))
return sid
print("Testing add stock response handling:\n")
# Test 1: Response is a dict with 'pk' key
print("Test 1: API returns dict with 'pk'")
response = {'pk': 123, 'quantity': 150, 'part': 456, 'location': 476}
sid = handle_add_stock_response(response)
print(f" Response: {response}")
print(f" Stock ID: {sid}")
print(f" Expected: 123, Got: {sid} - {'PASS' if sid == 123 else 'FAIL'}\n")
# Test 2: Response is a dict with 'id' key
print("Test 2: API returns dict with 'id'")
response = {'id': 456, 'quantity': 150, 'part': 789, 'location': 476}
sid = handle_add_stock_response(response)
print(f" Response: {response}")
print(f" Stock ID: {sid}")
print(f" Expected: 456, Got: {sid} - {'PASS' if sid == 456 else 'FAIL'}\n")
# Test 3: Response is a list with dict containing 'pk'
print("Test 3: API returns list with dict containing 'pk'")
response = [{'pk': 789, 'quantity': 150, 'part': 123, 'location': 476}]
sid = handle_add_stock_response(response)
print(f" Response: {response}")
print(f" Stock ID: {sid}")
print(f" Expected: 789, Got: {sid} - {'PASS' if sid == 789 else 'FAIL'}\n")
# Test 4: Response is a list with dict containing 'id'
print("Test 4: API returns list with dict containing 'id'")
response = [{'id': 999, 'quantity': 150, 'part': 123, 'location': 476}]
sid = handle_add_stock_response(response)
print(f" Response: {response}")
print(f" Stock ID: {sid}")
print(f" Expected: 999, Got: {sid} - {'PASS' if sid == 999 else 'FAIL'}\n")
# Test 5: Empty response
print("Test 5: API returns empty dict")
response = {}
sid = handle_add_stock_response(response)
print(f" Response: {response}")
print(f" Stock ID: {sid}")
print(f" Expected: None, Got: {sid} - {'PASS' if sid is None else 'FAIL'}\n")
print("All tests completed!")