105 lines
3.0 KiB
Python
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"]
|
|
)
|