feat: orchestrate accountable Campaign work
Module Package Release / publish-packages (push) Successful in 13s
Module Package Release / publish-packages (push) Successful in 13s
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from govoplan_campaign.backend.manifest import get_manifest
|
||||
from govoplan_campaign.backend.workflow_definitions import (
|
||||
campaign_workflow_definitions,
|
||||
)
|
||||
from govoplan_core.core.campaigns import CAPABILITY_CAMPAIGNS_WORK_ORCHESTRATION
|
||||
|
||||
|
||||
def test_campaign_work_handoff_is_an_opt_in_reusable_template() -> None:
|
||||
contribution = campaign_workflow_definitions(module_version="0.1.23")[0]
|
||||
|
||||
assert contribution.origin_module_id == "campaigns"
|
||||
assert contribution.definition_kind == "template"
|
||||
assert contribution.activate_on_install is False
|
||||
assert contribution.allow_reuse is True
|
||||
assert contribution.required_capabilities == (
|
||||
CAPABILITY_CAMPAIGNS_WORK_ORCHESTRATION,
|
||||
)
|
||||
assert contribution.policy_metadata["assignment_authorization_neutral"] is True
|
||||
|
||||
nodes = {
|
||||
str(node["id"]): node
|
||||
for node in contribution.graph["nodes"] # type: ignore[index]
|
||||
}
|
||||
prepare = nodes["prepare"]
|
||||
handoff = nodes["campaign_work"]
|
||||
assert prepare["config"]["operation"] == "campaigns.work.prepare" # type: ignore[index]
|
||||
assert handoff["type"] == "workflow.external_handoff"
|
||||
assert handoff["config"]["event_type"] == "campaign.work.changed" # type: ignore[index]
|
||||
assert handoff["config"]["terminal_outcomes"] == { # type: ignore[index]
|
||||
"completed": "completed",
|
||||
"rejected": "rejected",
|
||||
"cancelled": "cancelled",
|
||||
}
|
||||
|
||||
|
||||
def test_manifest_contributes_the_current_campaign_work_template() -> None:
|
||||
manifest = get_manifest()
|
||||
|
||||
assert len(manifest.workflow_definitions) == 1
|
||||
assert manifest.workflow_definitions[0].origin_module_version == manifest.version
|
||||
Reference in New Issue
Block a user