feat(naver-fetch): NAS realestate 클라이언트 (targets/ingest)
This commit is contained in:
41
services/naver-fetch/tests/test_nas_client.py
Normal file
41
services/naver-fetch/tests/test_nas_client.py
Normal file
@@ -0,0 +1,41 @@
|
||||
"""NASClient — targets/ingest + X-Internal-Key (respx)."""
|
||||
import json as _json
|
||||
|
||||
import httpx
|
||||
import respx
|
||||
|
||||
from nas_client import NASClient
|
||||
|
||||
BASE = "http://nas.test"
|
||||
|
||||
|
||||
@respx.mock
|
||||
async def test_get_targets_sends_key():
|
||||
route = respx.get(f"{BASE}/api/internal/realestate/targets").mock(
|
||||
return_value=httpx.Response(200, json={
|
||||
"dongs": [{"dong": "신대방동", "cortar_no": "1159010100"}],
|
||||
"deal_types": ["전세", "매매"], "page_limit": 2}))
|
||||
c = NASClient(BASE, "KEY")
|
||||
tg = await c.get_targets()
|
||||
assert tg["page_limit"] == 2
|
||||
assert tg["dongs"][0]["cortar_no"] == "1159010100"
|
||||
assert route.calls.last.request.headers["X-Internal-Key"] == "KEY"
|
||||
await c.close()
|
||||
|
||||
|
||||
@respx.mock
|
||||
async def test_post_ingest_payload():
|
||||
captured = {}
|
||||
|
||||
def _resp(request):
|
||||
captured.update(_json.loads(request.content))
|
||||
return httpx.Response(200, json={"received": 3, "new": 2, "matched": 1})
|
||||
|
||||
respx.post(f"{BASE}/api/internal/realestate/listings-ingest").mock(side_effect=_resp)
|
||||
c = NASClient(BASE, "KEY")
|
||||
batches = [{"dong": "신대방동", "articles": [{"articleNo": "1"}, {"articleNo": "2"}]}]
|
||||
out = await c.post_ingest("2026-07-10T05:00:00Z", batches)
|
||||
assert out == {"received": 3, "new": 2, "matched": 1}
|
||||
assert captured["fetched_at"] == "2026-07-10T05:00:00Z"
|
||||
assert captured["batches"] == batches
|
||||
await c.close()
|
||||
Reference in New Issue
Block a user