mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-12 16:22:17 -05:00
136 lines
4.1 KiB
Python
136 lines
4.1 KiB
Python
import pytest
|
|
|
|
from notifications_utils.template_change import TemplateChange
|
|
|
|
from .test_base_template import ConcreteTemplate
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("old_template", "new_template", "should_differ"),
|
|
[
|
|
(
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
False,
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
ConcreteTemplate({"content": "((3)) ((2)) ((1))"}),
|
|
False,
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
ConcreteTemplate({"content": "((1)) ((1)) ((2)) ((2)) ((3)) ((3))"}),
|
|
False,
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((1))"}),
|
|
ConcreteTemplate({"content": "((1)) ((2))"}),
|
|
True,
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((1)) ((2))"}),
|
|
ConcreteTemplate({"content": "((1))"}),
|
|
True,
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((a)) ((b))"}),
|
|
ConcreteTemplate({"content": "((A)) (( B_ ))"}),
|
|
False,
|
|
),
|
|
],
|
|
)
|
|
def test_checking_for_difference_between_templates(
|
|
old_template, new_template, should_differ
|
|
):
|
|
assert (
|
|
TemplateChange(old_template, new_template).has_different_placeholders
|
|
== should_differ
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("old_template", "new_template", "placeholders_added"),
|
|
[
|
|
(
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
set(),
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
ConcreteTemplate({"content": "((1)) ((1)) ((2)) ((2)) ((3)) ((3))"}),
|
|
set(),
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
ConcreteTemplate({"content": "((1))"}),
|
|
set(),
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((1))"}),
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
set(["2", "3"]),
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((a))"}),
|
|
ConcreteTemplate({"content": "((A)) ((B)) ((C))"}),
|
|
set(["B", "C"]),
|
|
),
|
|
],
|
|
)
|
|
def test_placeholders_added(old_template, new_template, placeholders_added):
|
|
assert (
|
|
TemplateChange(old_template, new_template).placeholders_added
|
|
== placeholders_added
|
|
)
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
("old_template", "new_template", "placeholders_removed"),
|
|
[
|
|
(
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
set(),
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
ConcreteTemplate({"content": "((1)) ((1)) ((2)) ((2)) ((3)) ((3))"}),
|
|
set(),
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((1))"}),
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
set(),
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((1)) ((2)) ((3))"}),
|
|
ConcreteTemplate({"content": "((1))"}),
|
|
set(["2", "3"]),
|
|
),
|
|
(
|
|
ConcreteTemplate({"content": "((a)) ((b)) ((c))"}),
|
|
ConcreteTemplate({"content": "((A))"}),
|
|
set(["b", "c"]),
|
|
),
|
|
],
|
|
)
|
|
def test_placeholders_removed(old_template, new_template, placeholders_removed):
|
|
assert (
|
|
TemplateChange(old_template, new_template).placeholders_removed
|
|
== placeholders_removed
|
|
)
|
|
|
|
|
|
def test_ordering_of_placeholders_is_preserved():
|
|
before = ConcreteTemplate({"content": "((dog)) ((cat)) ((rat))"})
|
|
after = ConcreteTemplate({"content": "((platypus)) ((echidna)) ((quokka))"})
|
|
change = TemplateChange(before, after)
|
|
assert change.placeholders_removed == ["dog", "cat", "rat"] == before.placeholders
|
|
assert (
|
|
change.placeholders_added
|
|
== ["platypus", "echidna", "quokka"]
|
|
== after.placeholders
|
|
)
|