small-shop-ledger / tests /test_processor.py
keshan's picture
Submit Small Shop Ledger to Build Small Hackathon
3e02e4b verified
Raw
History Blame Contribute Delete
1.66 kB
import unittest
from unittest.mock import patch
from shop_ledger.llama_backend import LlamaLedgerBackend
from shop_ledger.processor import LedgerProcessor, resolve_model_path_from_env
class ProcessorTests(unittest.TestCase):
def test_mock_processor_returns_rows(self):
processor = LedgerProcessor(mode="mock")
result = processor.process("paid Ravi 1200 for rice bags")
self.assertEqual(result.model_used, "mock heuristic")
self.assertEqual(len(result.entries), 1)
self.assertEqual(result.entries[0].amount, 1200)
def test_llama_mode_falls_back_without_model(self):
processor = LedgerProcessor(mode="llama", model_path="/missing/model.gguf")
result = processor.process("customer Nimal owes 750")
self.assertIn("fallback", result.model_used)
self.assertEqual(result.entries[0].amount, 750)
def test_llama_backend_uses_readable_model_label(self):
label = "unsloth/gemma-4-12b-it-GGUF / gemma-4-12b-it-UD-Q4_K_XL.gguf / llama.cpp"
with patch.dict("os.environ", {"LLAMA_MODEL_LABEL": label}):
backend = LlamaLedgerBackend(model_path="/models/model.gguf")
self.assertEqual(backend.model_label, label)
def test_env_model_path_wins_for_modal_mounts(self):
with patch.dict(
"os.environ",
{
"LLAMA_GGUF_PATH": "/models/model.gguf",
"LLAMA_GGUF_REPO": "unused/repo",
"LLAMA_GGUF_FILE": "unused.gguf",
},
):
self.assertEqual(resolve_model_path_from_env(), "/models/model.gguf")
if __name__ == "__main__":
unittest.main()