91 lines
2.3 KiB
Python
91 lines
2.3 KiB
Python
from __future__ import absolute_import, unicode_literals
|
|
|
|
import datetime
|
|
|
|
import pytest
|
|
from freezegun import freeze_time
|
|
|
|
from tests.factories.rule import ReferralRuleFactory, TimeRuleFactory
|
|
from tests.factories.segment import SegmentFactory
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_no_segments(client, site):
|
|
response = client.get('/')
|
|
assert response.status_code == 200
|
|
assert client.session['segments'] == []
|
|
|
|
|
|
@pytest.mark.django_db
|
|
def test_referral_segment(client, site):
|
|
referral_segment = SegmentFactory(name='Referral')
|
|
ReferralRuleFactory(
|
|
regex_string="test.test",
|
|
segment=referral_segment
|
|
)
|
|
|
|
response = client.get('/', **{'HTTP_REFERER': 'test.test'})
|
|
assert response.status_code == 200
|
|
|
|
assert client.session['segments'][0]['encoded_name'] == 'referral'
|
|
|
|
|
|
@pytest.mark.django_db
|
|
@freeze_time("10:00:00")
|
|
def test_time_and_referral_segment(client, site):
|
|
segment = SegmentFactory(name='Both')
|
|
TimeRuleFactory(
|
|
start_time=datetime.time(8, 0, 0),
|
|
end_time=datetime.time(23, 0, 0),
|
|
segment=segment
|
|
)
|
|
ReferralRuleFactory(
|
|
regex_string="test.test",
|
|
segment=segment
|
|
)
|
|
|
|
response = client.get('/', **{'HTTP_REFERER': 'test.test'})
|
|
assert response.status_code == 200
|
|
|
|
assert client.session['segments'][0]['encoded_name'] == 'both'
|
|
|
|
|
|
@pytest.mark.django_db
|
|
@freeze_time("7:00:00")
|
|
def test_no_time_but_referral_segment(client, site):
|
|
segment = SegmentFactory(name='Not both')
|
|
TimeRuleFactory(
|
|
start_time=datetime.time(8, 0, 0),
|
|
end_time=datetime.time(23, 0, 0),
|
|
segment=segment
|
|
)
|
|
ReferralRuleFactory(
|
|
regex_string="test.test",
|
|
segment=segment
|
|
)
|
|
|
|
response = client.get('/', **{'HTTP_REFERER': 'test.test'})
|
|
assert response.status_code == 200
|
|
|
|
assert len(client.session['segments']) == 0
|
|
|
|
|
|
@pytest.mark.django_db
|
|
@freeze_time("9:00:00")
|
|
def test_time_but_no_referral_segment(client, site):
|
|
segment = SegmentFactory(name='Not both')
|
|
TimeRuleFactory(
|
|
start_time=datetime.time(8, 0, 0),
|
|
end_time=datetime.time(23, 0, 0),
|
|
segment=segment
|
|
)
|
|
ReferralRuleFactory(
|
|
regex_string="test.test",
|
|
segment=segment
|
|
)
|
|
|
|
response = client.get('/')
|
|
assert response.status_code == 200
|
|
|
|
assert len(client.session['segments']) == 0
|