feat(campaign): complete reusable template workflow
This commit is contained in:
@@ -3,7 +3,10 @@ from __future__ import annotations
|
||||
from datetime import UTC, datetime
|
||||
|
||||
from govoplan_campaign.backend.integrations import TemplatesCampaignIntegration
|
||||
from govoplan_campaign.backend.routes.campaigns import _campaign_content_library_item
|
||||
from govoplan_campaign.backend.routes.campaigns import (
|
||||
_campaign_content_library_item,
|
||||
_campaign_content_required_fields,
|
||||
)
|
||||
from govoplan_campaign.backend.schemas import CampaignContentLibrarySaveRequest
|
||||
from govoplan_core.core.templates import (
|
||||
TemplateContentDraftRequest,
|
||||
@@ -109,6 +112,26 @@ def test_campaign_content_payload_keeps_revision_and_declared_target() -> None:
|
||||
assert payload["text"] == "Mit freundlichen Grussen"
|
||||
assert payload["published"] is True
|
||||
assert payload["revision"] == 3
|
||||
assert payload["required_fields"] == []
|
||||
|
||||
|
||||
def test_campaign_content_required_fields_are_normalized_and_deduplicated() -> None:
|
||||
payload = CampaignContentLibrarySaveRequest(
|
||||
name="Greeting",
|
||||
kind="campaign_part",
|
||||
subject="Hello {{ local:display_name }}",
|
||||
text="Reference ${global.case_reference}; hello {{local::display_name}}",
|
||||
html="<p>{{fields.salutation}} {{local:to[2].email}} {{unsupported namespace}}</p>",
|
||||
)
|
||||
|
||||
requirements = _campaign_content_required_fields(payload)
|
||||
|
||||
assert [item.path for item in requirements] == [
|
||||
"global.case_reference",
|
||||
"local.display_name",
|
||||
"local.to.2.email",
|
||||
"salutation",
|
||||
]
|
||||
|
||||
|
||||
def test_content_save_request_rejects_empty_selected_fragment() -> None:
|
||||
|
||||
Reference in New Issue
Block a user