127 lines
3.2 KiB
Python
127 lines
3.2 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'])
|