Exemplo n.º 1
0
def test_trigger_condition_create():
    trigger = TriggerFactory()
    trigger_condition = TriggerCondition.objects.create(
        variable="navigation_path", value="/", trigger=trigger
    )

    assert trigger_condition in TriggerCondition.objects.all()
Exemplo n.º 2
0
def test_tag_count():
    tag1 = TagFactory(name="tag1")
    tag2 = TagFactory(name="tag2")

    trigger = TriggerFactory()
    trigger.tags.add(tag1, tag2)
    trigger_model_admin = TriggerModelAdmin()

    result = trigger_model_admin.tags_count(trigger)
    assert result == "2 tag(s)"
Exemplo n.º 3
0
def test_trigger_condition_create():
    produced_trigger = TriggerFactory()
    produced_trigger_condition = TriggerConditionFactory(trigger=produced_trigger)
    trigger = Trigger(name="Trigger")
    trigger_condition = TriggerCondition(
        variable="navigation_path", value="/", trigger=trigger
    )

    assert produced_trigger.name == trigger.name
    assert produced_trigger_condition.value == trigger_condition.value
def test_trigger_condition_not_starts_with():
    trigger = TriggerFactory()
    trigger_condition = TriggerCondition.objects.create(
        condition_type=TriggerCondition.CONDITION_NOT_STARTS_WITH,
        variable="trigger_value",
        value="test",
        trigger=trigger,
    )

    assert trigger_condition.validate({"trigger_value": "testing"}) is False

    assert trigger_condition.validate({"trigger_value": "esting"}) is True
def test_trigger_condition_not_contains():
    trigger = TriggerFactory()
    trigger_condition = TriggerCondition.objects.create(
        condition_type=TriggerCondition.CONDITION_NOT_CONTAINS,
        variable="trigger_value",
        value="test",
        trigger=trigger,
    )

    assert trigger_condition.validate({"trigger_value": "testing"}) is False

    assert trigger_condition.validate({"trigger_value": "tesing"}) is True
def test_trigger_condition_not_exact_match():
    trigger = TriggerFactory()
    trigger_condition = TriggerCondition.objects.create(
        condition_type=TriggerCondition.CONDITION_NOT_EXACT_MATCH,
        variable="trigger_value",
        value="test",
        trigger=trigger,
    )

    assert trigger_condition.validate({"trigger_value": "test"}) is False

    assert trigger_condition.validate({"trigger_value": "tes"}) is True
def test_trigger_condition_not_regex_imatch():
    trigger = TriggerFactory()
    trigger_condition = TriggerCondition.objects.create(
        condition_type=TriggerCondition.CONDITION_NOT_REGEX_IMATCH,
        variable="trigger_value",
        value=r"^[a-z]+$",
        trigger=trigger,
    )

    assert trigger_condition.validate({"trigger_value": "TEST"}) is False

    assert trigger_condition.validate({"trigger_value": "TEST1"}) is True
def test_trigger_condition_greater_than_equal():
    trigger = TriggerFactory()
    trigger_condition = TriggerCondition.objects.create(
        condition_type=TriggerCondition.CONDITION_GTE,
        variable="trigger_value",
        value="1",
        trigger=trigger,
    )

    assert trigger_condition.validate({"trigger_value": "1.1"}) is True

    assert trigger_condition.validate({"trigger_value": "1"}) is True

    assert trigger_condition.validate({"trigger_value": "0.9"}) is False
def test_passive_view(client, site):
    response = client.get(site.root_page.url)
    assert response.status_code == 200

    tag_functional = TagFactory(
        name="functional lazy",
        active=False,
        tag_loading=Tag.INSTANT_LOAD,
        content='<script>console.log("{{ state }}")</script>',
    )
    tag_analytical = TagFactory(
        name="analytical lazy",
        active=False,
        tag_loading=Tag.INSTANT_LOAD,
        tag_type="analytical",
        content='<script>console.log("{{ state }}")</script>',
    )
    tag_traceable = TagFactory(
        name="traceable lazy",
        active=False,
        tag_loading=Tag.INSTANT_LOAD,
        tag_type="traceable",
        content='<script>console.log("{{ state }}")</script>',
    )

    assert tag_functional in Tag.objects.passive().sorted()
    assert tag_analytical in Tag.objects.passive().sorted()
    assert tag_traceable in Tag.objects.passive().sorted()

    trigger = TriggerFactory(pattern="[?&]state=(?P<state>\S+)")
    trigger.tags.add(tag_functional)
    trigger.tags.add(tag_analytical)
    trigger.tags.add(tag_traceable)

    client.cookies = SimpleCookie({"wtm_functional": "true"})
    response = client.get("/?state=1")
    assert response.status_code == 200
    assert b'console.log("1")' in response.content

    client.cookies = SimpleCookie({"wtm_analytical": "true"})
    response = client.get("/?state=2")
    assert response.status_code == 200
    assert b'console.log("2")' in response.content

    client.cookies = SimpleCookie({"wtm_traceable": "true"})
    response = client.get("/?state=3")
    assert response.status_code == 200
    assert b'console.log("3")' in response.content
Exemplo n.º 10
0
def test_no_description_display():
    constant = ConstantFactory()
    constant_model_admin = ConstantModelAdmin()

    description = constant_model_admin.name_display(constant)
    assert constant.name == description

    variable = VariableFactory(key="var")
    variable_model_admin = VariableModelAdmin()

    description = variable_model_admin.name_display(variable)
    assert variable.name == description

    tag = TagFactory()
    tag_model_admin = TagModelAdmin()

    description = tag_model_admin.name_display(tag)
    assert tag.name == description

    trigger = TriggerFactory()
    trigger_model_admin = TriggerModelAdmin()

    description = trigger_model_admin.name_display(trigger)
    assert trigger.name == description
Exemplo n.º 11
0
def test_trigger_condition_empty():
    trigger = TriggerFactory()
    trigger_condition = TriggerCondition.objects.create(
        variable="trigger_value", value="test", trigger=trigger)

    assert trigger_condition.validate({}) is False
Exemplo n.º 12
0
def test_passive_tags(client, site):
    tag_necessary = TagFactory(
        name="necessary lazy",
        auto_load=False,
        tag_loading=Tag.LAZY_LOAD,
        content=
        '<script>console.log("necessary: {{ trigger_value }}")</script>',
    )
    tag_preferences = TagFactory(
        name="preferences lazy",
        auto_load=False,
        tag_loading=Tag.LAZY_LOAD,
        tag_type="preferences",
        content=
        '<script>console.log("preferences: {{ trigger_value }}")</script>',
    )
    tag_statistics = TagFactory(
        name="statistics lazy",
        auto_load=False,
        tag_loading=Tag.LAZY_LOAD,
        tag_type="statistics",
        content=
        '<script>console.log("statistics: {{ trigger_value }}")</script>',
    )
    tag_marketing = TagFactory(
        name="marketing lazy",
        auto_load=False,
        tag_loading=Tag.LAZY_LOAD,
        tag_type="marketing",
        content=
        '<script>console.log("marketing: {{ trigger_value }}")</script>',
    )

    assert tag_necessary in Tag.objects.passive().sorted()
    assert tag_preferences in Tag.objects.passive().sorted()
    assert tag_statistics in Tag.objects.passive().sorted()
    assert tag_marketing in Tag.objects.passive().sorted()

    trigger = TriggerFactory()
    trigger.tags.add(tag_necessary)
    trigger.tags.add(tag_preferences)
    trigger.tags.add(tag_statistics)
    trigger.tags.add(tag_marketing)

    response = client.post(
        "/wtm/lazy/",
        json.dumps({
            "pathname": "/",
            "search": ""
        }),
        content_type="application/json",
    )
    data = response.json()

    assert response.status_code == 200
    assert "tags" in data
    assert len(data["tags"]) == 0

    response = client.post(
        "/wtm/lazy/",
        json.dumps({
            "pathname": "/",
            "search": "",
            "trigger": {
                "slug": "trigger",
                "type": Trigger.TYPE_FORM_SUBMIT,
                "value": "1",
            },
        }),
        content_type="application/json",
    )
    data = response.json()

    assert response.status_code == 200
    assert "tags" in data
    assert 'console.log("necessary: 1")' in data["tags"][0]["string"]

    client.cookies = SimpleCookie({"wtm": "preferences:true"})
    response = client.post(
        "/wtm/lazy/",
        json.dumps({
            "pathname": "/",
            "search": "",
            "trigger": {
                "slug": "trigger",
                "type": Trigger.TYPE_FORM_SUBMIT,
                "value": "2",
            },
        }),
        content_type="application/json",
    )
    data = response.json()

    assert response.status_code == 200
    assert "tags" in data
    assert 'console.log("preferences: 2")' in data["tags"][1]["string"]

    client.cookies = SimpleCookie({"wtm": "preferences:false|statistics:true"})
    response = client.post(
        "/wtm/lazy/",
        json.dumps({
            "pathname": "/",
            "search": "",
            "trigger": {
                "slug": "trigger",
                "type": Trigger.TYPE_FORM_SUBMIT,
                "value": "3",
            },
        }),
        content_type="application/json",
    )
    data = response.json()

    assert response.status_code == 200
    assert "tags" in data
    assert 'console.log("statistics: 3")' in data["tags"][1]["string"]

    client.cookies = SimpleCookie({"wtm": "preferences:false|marketing:true"})
    response = client.post(
        "/wtm/lazy/",
        json.dumps({
            "pathname": "/",
            "search": "",
            "trigger": {
                "slug": "trigger",
                "type": Trigger.TYPE_FORM_SUBMIT,
                "value": "4",
            },
        }),
        content_type="application/json",
    )
    data = response.json()

    assert response.status_code == 200
    assert "tags" in data
    assert 'console.log("marketing: 4")' in data["tags"][1]["string"]
Exemplo n.º 13
0
def test_passive_tags(client, site):
    tag_functional = TagFactory(
        name="functional lazy",
        active=False,
        tag_loading=Tag.LAZY_LOAD,
        content='<script>console.log("{{ state }}")</script>',
    )
    tag_analytical = TagFactory(
        name="analytical lazy",
        active=False,
        tag_loading=Tag.LAZY_LOAD,
        tag_type="analytical",
        content='<script>console.log("{{ state }}")</script>',
    )
    tag_traceable = TagFactory(
        name="traceable lazy",
        active=False,
        tag_loading=Tag.LAZY_LOAD,
        tag_type="traceable",
        content='<script>console.log("{{ state }}")</script>',
    )

    assert tag_functional in Tag.objects.passive().sorted()
    assert tag_analytical in Tag.objects.passive().sorted()
    assert tag_traceable in Tag.objects.passive().sorted()

    trigger = TriggerFactory(pattern="[?&]state=(?P<state>\S+)")
    trigger.tags.add(tag_functional)
    trigger.tags.add(tag_analytical)
    trigger.tags.add(tag_traceable)

    response = client.post(
        "/wtm/lazy/",
        json.dumps({"pathname": "/", "search": ""}),
        content_type="application/json",
    )
    data = response.json()

    assert response.status_code == 200
    assert "tags" in data
    assert len(data["tags"]) == 0

    response = client.post(
        "/wtm/lazy/",
        json.dumps({"pathname": "/", "search": "?state=1"}),
        content_type="application/json",
    )
    data = response.json()

    assert response.status_code == 200
    assert "tags" in data
    assert len(data["tags"]) == 1
    assert 'console.log("1")' in data["tags"][0]["string"]

    client.cookies = SimpleCookie({"wtm_analytical": "unset"})

    response = client.post(
        "/wtm/lazy/",
        json.dumps({"pathname": "/", "search": "?state=2"}),
        content_type="application/json",
    )
    data = response.json()

    assert response.status_code == 200
    assert "tags" in data
    assert len(data["tags"]) == 2
    assert 'console.log("2")' in data["tags"][1]["string"]

    response = client.post(
        "/wtm/lazy/",
        json.dumps({"consent": "true", "pathname": "/", "search": "?state=3"}),
        content_type="application/json",
    )
    data = response.json()

    assert response.status_code == 200
    assert "tags" in data
    assert len(data["tags"]) == 3
    assert 'console.log("3")' in data["tags"][2]["string"]
Exemplo n.º 14
0
def test_trigger_create():
    produced_trigger = TriggerFactory()
    trigger = Trigger(name="Trigger")

    assert produced_trigger.name == trigger.name
Exemplo n.º 15
0
def test_trigger_create():
    produced_trigger = TriggerFactory()
    trigger = Trigger(name="Trigger", pattern="[?&]state=(?P<state>\S+)")

    assert produced_trigger.name == trigger.name
    assert produced_trigger.pattern == trigger.pattern