6
0
Fork 0
This repository has been archived on 2023-05-07. You can view files and clone it, but cannot push or open issues or pull requests.
cavemanon-wagtail-personali.../tests/unit/test_rules_query.py

105 lines
3.0 KiB
Python

import pytest
from tests.factories.rule import QueryRuleFactory
from tests.factories.segment import SegmentFactory
@pytest.mark.django_db
def test_request_query_rule(client, site):
segment = SegmentFactory(name="Query")
QueryRuleFactory(
parameter="query",
value="value",
segment=segment,
)
response = client.get("/?query=value")
assert response.status_code == 200
assert any(item["encoded_name"] == "query" for item in client.session["segments"])
@pytest.mark.django_db
def test_request_only_one_query_rule(client, site):
segment = SegmentFactory(name="Query")
QueryRuleFactory(parameter="query", value="value", segment=segment)
response = client.get("/?test=test&query=value")
assert response.status_code == 200
assert any(item["encoded_name"] == "query" for item in client.session["segments"])
@pytest.mark.django_db
def test_request_multiple_queries(client, site):
segment = SegmentFactory(name="Multiple queries")
QueryRuleFactory(parameter="test", value="test", segment=segment)
QueryRuleFactory(
parameter="query",
value="value",
segment=segment,
)
response = client.get("/?test=test&query=value")
assert response.status_code == 200
assert any(
item["encoded_name"] == "multiple-queries"
for item in client.session["segments"]
)
@pytest.mark.django_db
def test_request_persistent_segmenting(client, site):
segment = SegmentFactory(name="Persistent", persistent=True)
QueryRuleFactory(parameter="test", value="test", segment=segment)
response = client.get("/?test=test")
assert response.status_code == 200
assert any(
item["encoded_name"] == "persistent" for item in client.session["segments"]
)
response = client.get("/")
assert response.status_code == 200
assert any(
item["encoded_name"] == "persistent" for item in client.session["segments"]
)
@pytest.mark.django_db
def test_request_non_persistent_segmenting(client, site):
segment = SegmentFactory(name="Non Persistent")
QueryRuleFactory(parameter="test", value="test", segment=segment)
response = client.get("/?test=test")
assert response.status_code == 200
assert any(
item["encoded_name"] == "non-persistent" for item in client.session["segments"]
)
response = client.get("/")
assert response.status_code == 200
assert not any(
item["encoded_name"] == "non-persistent" for item in client.session["segments"]
)
@pytest.mark.django_db
def test_request_match_any_segmenting(client, site):
segment = SegmentFactory(name="Match any", match_any=True)
QueryRuleFactory(
parameter="test",
value="test",
segment=segment,
)
QueryRuleFactory(parameter="test2", value="test2", segment=segment)
response = client.get("/?test=test")
assert response.status_code == 200
assert any(
item["encoded_name"] == "match-any" for item in client.session["segments"]
)