Complete name-first 1C adapter saved-state support
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
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"]
|
||||
Reference in New Issue
Block a user