Files
set50-system/backend/tests/test_auto_npl.py
Kunthawat Greethong 1e75377732 [verified] Add BOT auto NPL (credit-quality) factor; deepen auto_credit theme
- auto_npl.py: parse BOT Gross NPLs by business (reportID=794); extract auto loan NPL (20,602 mn THB, 3.95% of NPLs, 2.06% of loans)
- /api/v1/themes now exposes auto_npl_pct + auto_npl_amount alongside car-sales volume
- 3 new tests; full suite 188 OK; live verified (themes shows auto_npl_pct 3.95)
2026-08-25 19:06:48 +07:00

43 lines
1.6 KiB
Python

"""Tests for the auto NPL (BOT) collector."""
from __future__ import annotations
import unittest
from app import auto_npl
def _bot_npl_html() -> str:
return """
<html><body>
<table>
<tr><th></th><th></th><th>Q2/2568</th><th></th><th></th><th>Q1/2568</th><th></th><th></th></tr>
<tr><th></th><th></th><th>ยอดคงค้าง NPL</th><th>% ต่อ NPLs</th><th>% ต่อสินเชื่อรวม</th><th>ยอดคงค้าง NPL</th><th>% ต่อ NPLs</th><th>% ต่อสินเชื่อรวม</th></tr>
<tr><td>1</td><td>การเกษตร</td><td>10,325</td><td>1.98</td><td>11.81</td><td>10,669</td><td>2.07</td><td>11.94</td></tr>
<tr><td>12</td><td>รถยนต์</td><td>20,602</td><td>3.95</td><td>2.06</td><td>22,046</td><td>4.10</td><td>2.15</td></tr>
</table>
</body></html>
"""
class AutoNplParseTest(unittest.TestCase):
def test_parses_auto_npl(self) -> None:
snap = auto_npl.parse_auto_npl_html(_bot_npl_html())
self.assertEqual(snap.npl_amount, 20602.0)
self.assertEqual(snap.pct_of_npls, 3.95)
self.assertEqual(snap.pct_of_loans, 2.06)
def test_no_table_raises(self) -> None:
with self.assertRaises(auto_npl.AutoNplError):
auto_npl.parse_auto_npl_html("<html>no data</html>")
def test_to_dict(self) -> None:
snap = auto_npl.parse_auto_npl_html(_bot_npl_html())
d = snap.to_dict()
self.assertEqual(d["source"], "bot")
self.assertEqual(d["npl_amount"], 20602.0)
if __name__ == "__main__":
unittest.main()