adds segment middleware testing (simple)
This commit is contained in:
@ -14,8 +14,6 @@ class SegmentFactory(factory.DjangoModelFactory):
|
|||||||
def create_rules(self, create, extracted, **kwargs):
|
def create_rules(self, create, extracted, **kwargs):
|
||||||
if not create:
|
if not create:
|
||||||
return
|
return
|
||||||
self.time_rule = TimeRuleFactory(segment=self)
|
|
||||||
self.referral_rule = ReferralRuleFactory(segment=self)
|
|
||||||
|
|
||||||
|
|
||||||
class TimeRuleFactory(factory.DjangoModelFactory):
|
class TimeRuleFactory(factory.DjangoModelFactory):
|
||||||
|
@ -13,7 +13,7 @@ DATABASES = {
|
|||||||
|
|
||||||
SECRET_KEY = 'not needed'
|
SECRET_KEY = 'not needed'
|
||||||
|
|
||||||
ROOT_URLCONF = 'tests.urls'
|
ROOT_URLCONF = 'tests.sandbox.urls'
|
||||||
|
|
||||||
STATIC_URL = '/static/'
|
STATIC_URL = '/static/'
|
||||||
|
|
||||||
|
18
tests/sandbox/urls.py
Normal file
18
tests/sandbox/urls.py
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
from __future__ import absolute_import, unicode_literals
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.conf.urls import include, url
|
||||||
|
from django.contrib import admin
|
||||||
|
from wagtail.wagtailadmin import urls as wagtailadmin_urls
|
||||||
|
from wagtail.wagtailcore import urls as wagtail_urls
|
||||||
|
from wagtail.wagtaildocs import urls as wagtaildocs_urls
|
||||||
|
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
url(r'^django-admin/', include(admin.site.urls)),
|
||||||
|
|
||||||
|
url(r'^admin/', include(wagtailadmin_urls)),
|
||||||
|
url(r'^documents/', include(wagtaildocs_urls)),
|
||||||
|
|
||||||
|
url(r'', include(wagtail_urls)),
|
||||||
|
]
|
@ -14,33 +14,28 @@ def test_create_segment_factory():
|
|||||||
|
|
||||||
assert factoried_segment.name == segment.name
|
assert factoried_segment.name == segment.name
|
||||||
assert factoried_segment.status == segment.status
|
assert factoried_segment.status == segment.status
|
||||||
assert factoried_segment.time_rule.start_time == time_rule.start_time
|
|
||||||
|
|
||||||
"""TimeRuleFactory tests"""
|
"""TimeRuleFactory tests"""
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_create_segment_with_time_rule():
|
def test_create_segment_with_time_rule():
|
||||||
segment = SegmentFactory()
|
segment = SegmentFactory(name='TimeSegment')
|
||||||
|
time_rule = TimeRuleFactory(start_time=datetime.time(8, 0, 0), end_time=datetime.time(23, 0, 0), segment=segment)
|
||||||
|
|
||||||
assert segment.time_rule.start_time == datetime.time(8,0,0)
|
assert time_rule.start_time == datetime.time(8,0,0)
|
||||||
|
|
||||||
@pytest.mark.django_db
|
|
||||||
def test_create_segment_with_new_time_rule():
|
|
||||||
segment = SegmentFactory()
|
|
||||||
segment.time_rule = TimeRuleFactory(start_time=datetime.time(9,0,0), segment=segment)
|
|
||||||
|
|
||||||
assert segment.time_rule.start_time == datetime.time(9,0,0)
|
|
||||||
|
|
||||||
"""ReferralRuleFactory tests"""
|
"""ReferralRuleFactory tests"""
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_create_segment_with_referral_rule():
|
def test_create_segment_with_referral_rule():
|
||||||
segment = SegmentFactory()
|
segment = SegmentFactory(name='Referral')
|
||||||
|
referral_rule = ReferralRuleFactory(regex_string='test.test', segment=segment)
|
||||||
|
|
||||||
assert segment.referral_rule.regex_string == "test.test"
|
assert referral_rule.regex_string == 'test.test'
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_create_segment_with_new_referral_rule():
|
def test_create_segment_with_new_referral_rule():
|
||||||
segment = SegmentFactory()
|
segment = SegmentFactory()
|
||||||
|
|
||||||
segment.referral_rule = ReferralRuleFactory(regex_string="test.notest", segment=segment)
|
segment.referral_rule = ReferralRuleFactory(regex_string='test.notest', segment=segment)
|
||||||
|
|
||||||
|
assert segment.referral_rule.regex_string == 'test.notest'
|
||||||
|
|
||||||
assert segment.referral_rule.regex_string == "test.notest"
|
|
||||||
|
@ -1,21 +1,45 @@
|
|||||||
import pytest
|
import datetime
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
from freezegun import freeze_time
|
||||||
|
|
||||||
|
from django.test.client import Client
|
||||||
from tests.factories.site import SiteFactory
|
from tests.factories.site import SiteFactory
|
||||||
from tests.factories.segment import SegmentFactory
|
from tests.factories.segment import SegmentFactory, TimeRuleFactory, ReferralRuleFactory
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
class TestUserSegmenting(object):
|
class TestUserSegmenting(object):
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
"""
|
"""
|
||||||
Sets up a user segment and a site root to test segmenting
|
Sets up a site root to test segmenting
|
||||||
"""
|
"""
|
||||||
self.standard_segment = SegmentFactory(name='Standard')
|
|
||||||
self.time_only_segment = SegmentFactory(name='Time only')
|
|
||||||
self.site = SiteFactory()
|
self.site = SiteFactory()
|
||||||
|
|
||||||
|
def test_no_segments(self, client):
|
||||||
|
request = client.get('/')
|
||||||
|
|
||||||
def test_standard_segment(self, rf):
|
assert client.session['segments'] == []
|
||||||
request = rf.get('/')
|
|
||||||
|
|
||||||
|
@freeze_time("10:00:00")
|
||||||
|
def test_time_segment(self, client):
|
||||||
|
time_only_segment = SegmentFactory(name='Time only')
|
||||||
|
time_rule = TimeRuleFactory(
|
||||||
|
start_time=datetime.time(8, 0, 0),
|
||||||
|
end_time=datetime.time(23, 0, 0),
|
||||||
|
segment=time_only_segment)
|
||||||
|
|
||||||
|
request = client.get('/')
|
||||||
|
|
||||||
|
assert client.session['segments'][0]['encoded_name'] == 'time-only'
|
||||||
|
|
||||||
|
def test_referral_segment(self, client):
|
||||||
|
referral_segment = SegmentFactory(name='Referral')
|
||||||
|
referral_rule = ReferralRuleFactory(
|
||||||
|
regex_string="test.test",
|
||||||
|
segment=referral_segment
|
||||||
|
)
|
||||||
|
|
||||||
|
client.get('/', **{ 'HTTP_REFERER': 'test.test'})
|
||||||
|
|
||||||
|
assert client.session['segments'][0]['encoded_name'] == 'referral'
|
||||||
|
@ -9,12 +9,6 @@ from personalisation import models
|
|||||||
from tests.factories.site import SiteFactory
|
from tests.factories.site import SiteFactory
|
||||||
|
|
||||||
|
|
||||||
"""Base Rule tests"""
|
|
||||||
def test_create_base_rule():
|
|
||||||
base_rule = models.AbstractBaseRule()
|
|
||||||
|
|
||||||
assert base_rule.test_user() is True
|
|
||||||
|
|
||||||
"""Time Rule tests"""
|
"""Time Rule tests"""
|
||||||
@freeze_time("10:00:00")
|
@freeze_time("10:00:00")
|
||||||
def test_create_time_rule():
|
def test_create_time_rule():
|
||||||
|
Reference in New Issue
Block a user