Files
odysseus/tests/test_calendar_utils_dates_js.py
2026-06-03 14:16:58 +09:00

65 lines
1.7 KiB
Python

import json
import shutil
import subprocess
from pathlib import Path
import pytest
ROOT = Path(__file__).resolve().parents[1]
pytestmark = pytest.mark.skipif(not shutil.which("node"), reason="node binary not on PATH")
def _node_eval(source: str):
result = subprocess.run(
["node", "--input-type=module", "-e", source],
cwd=ROOT,
check=True,
capture_output=True,
text=True,
)
return json.loads(result.stdout)
def test_calendar_date_helpers_ignore_non_string_inputs():
values = _node_eval(
"""
import { _addDays, _shiftDT, _localDateOf } from './static/js/calendar/utils.js';
console.log(JSON.stringify({
addNull: _addDays(null, 1),
addObject: _addDays({bad: true}, 1),
shiftNull: _shiftDT(null, 1),
shiftObject: _shiftDT({bad: true}, 1),
localNull: _localDateOf(null),
localNumber: _localDateOf(123)
}));
"""
)
assert values == {
"addNull": "",
"addObject": "",
"shiftNull": "",
"shiftObject": "",
"localNull": "",
"localNumber": "",
}
def test_calendar_date_helpers_keep_valid_strings():
values = _node_eval(
"""
import { _addDays, _shiftDT, _localDateOf } from './static/js/calendar/utils.js';
console.log(JSON.stringify({
add: _addDays('2026-06-01', 2),
shift: _shiftDT('2026-06-01T10:30:00', 1),
local: _localDateOf('2026-06-01T23:30:00Z')
}));
"""
)
assert values["add"] == "2026-06-03"
assert values["shift"] == "2026-06-02T10:30:00"
assert isinstance(values["local"], str)
assert len(values["local"]) == 10