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'])