goofish / tests /unit /test_utils.py
host1syan's picture
Upload 212 files
5378afe verified
import json
import asyncio
from src.utils import (
format_registration_days,
get_link_unique_key,
safe_get,
save_to_jsonl,
)
def test_safe_get_nested_and_default():
data = {"a": {"b": [{"c": "value"}]}}
assert asyncio.run(safe_get(data, "a", "b", 0, "c")) == "value"
assert asyncio.run(safe_get(data, "a", "b", 1, "c", default="missing")) == "missing"
def test_format_registration_days():
assert format_registration_days(400).startswith("\u6765\u95f2\u9c7c")
assert format_registration_days(-1) == "\u672a\u77e5"
def test_get_link_unique_key():
link = "https://www.goofish.com/item?id=123&foo=bar"
assert get_link_unique_key(link) == "https://www.goofish.com/item?id=123"
def test_save_to_jsonl(tmp_path, monkeypatch):
monkeypatch.chdir(tmp_path)
record = {"id": 1, "title": "Sony A7M4"}
ok = asyncio.run(save_to_jsonl(record, keyword="sony a7m4"))
assert ok is True
output = tmp_path / "jsonl" / "sony_a7m4_full_data.jsonl"
assert output.exists()
lines = output.read_text(encoding="utf-8").splitlines()
assert json.loads(lines[0]) == record