reducer replaces merge_strategy.
This commit is contained in:
@@ -4,9 +4,9 @@ from wf_core import SchemaRef, StateField, StateSchema, Workflow
|
||||
from wf_core.runtime.ops.state import write_state_value
|
||||
|
||||
|
||||
def test_exact_nested_state_path_uses_declared_merge_strategy() -> None:
|
||||
def test_exact_nested_state_path_uses_declared_reducer() -> None:
|
||||
workflow = _workflow(
|
||||
fields={"person.tags": StateField(type="array", merge_strategy="append")}
|
||||
fields={"person.tags": StateField(type="array", reducer="wf.std.append")}
|
||||
)
|
||||
state = {"person": {"tags": ["seed"]}}
|
||||
|
||||
@@ -17,7 +17,7 @@ def test_exact_nested_state_path_uses_declared_merge_strategy() -> None:
|
||||
|
||||
def test_parent_state_declaration_does_not_apply_to_nested_write() -> None:
|
||||
workflow = _workflow(
|
||||
fields={"person": StateField(type="object", merge_strategy="merge_object")}
|
||||
fields={"person": StateField(type="object", reducer="wf.std.merge_object")}
|
||||
)
|
||||
state = {"person": {"tags": ["seed"]}}
|
||||
|
||||
@@ -35,6 +35,22 @@ def test_undeclared_nested_state_path_defaults_to_replace() -> None:
|
||||
assert state["person"]["tags"] == ["next"]
|
||||
|
||||
|
||||
def test_state_field_defaults_to_replace_reducer() -> None:
|
||||
assert StateField(type="string").reducer == "wf.std.replace"
|
||||
|
||||
|
||||
def test_unknown_state_reducer_fails_clearly() -> None:
|
||||
workflow = _workflow(fields={"person.tags": StateField(type="array", reducer="x.nope")})
|
||||
state = {"person": {"tags": ["seed"]}}
|
||||
|
||||
try:
|
||||
write_state_value(workflow, state, "state.person.tags", ["next"])
|
||||
except Exception as exc:
|
||||
assert "unknown reducer 'x.nope'" in str(exc)
|
||||
else:
|
||||
raise AssertionError("expected unknown reducer to fail")
|
||||
|
||||
|
||||
def _workflow(*, fields: dict[str, StateField]) -> Workflow:
|
||||
return Workflow(
|
||||
name="nested_state_paths",
|
||||
|
||||
Reference in New Issue
Block a user