43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
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
|