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()
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)"
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
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
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
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"]
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"]
def test_trigger_create(): produced_trigger = TriggerFactory() trigger = Trigger(name="Trigger") assert produced_trigger.name == trigger.name
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