Files
llm/tests/1c/test_scheduled_job_parser.py
T

72 lines
1.9 KiB
Python

from __future__ import annotations
import sys
from pathlib import Path
from typing import Any
ROOT = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(ROOT / "plugins" / "1c"))
from parser.scheduled_job import decode_schedule, schedule_write_edits # noqa: E402
def atom(value: Any) -> dict[str, Any]:
return {"type": "atom", "value": str(value)}
def schedule_tree() -> dict[str, Any]:
return {
"type": "list",
"items": [
atom("00010101000000"),
atom("00010101000000"),
atom("00010101090000"),
atom("00010101180000"),
atom("00010101000000"),
atom(0),
atom(0),
atom(0),
atom(2),
atom(1),
atom(5),
atom(0),
atom(0),
atom(1),
atom(1),
atom(1),
atom(1),
],
}
def test_decode_schedule_is_adapter_independent() -> None:
result = decode_schedule(schedule_tree())
assert result["status"] == "ok"
assert result["begin_time"] == "09:00:00"
assert result["end_time"] == "18:00:00"
assert result["week_days"] == [1, 5]
assert result["months"] == [1]
def test_schedule_write_edits_rebuilds_resized_collections() -> None:
result = schedule_write_edits(
schedule_tree(),
{"week_days": [1, 2, 3, 4, 5], "months": [1, 6, 12]},
)
assert result["status"] == "ok"
assert result["counts"]["resized_collections"] == 2
rebuilt = decode_schedule(result["edits"][0]["replace_root"])
assert rebuilt["week_days"] == [1, 2, 3, 4, 5]
assert rebuilt["months"] == [1, 6, 12]
def test_schedule_write_edits_rejects_unknown_named_field() -> None:
result = schedule_write_edits(schedule_tree(), {"sql_path": "1.2.3"})
assert result["status"] == "invalid_argument"
assert result["error"] == "unsupported_schedule_fields"
assert result["diagnostics"]["fields"] == ["sql_path"]