We cannot track anonymous users as the session expires after 10 minutes of inactivity. This also avoids an issue where there is an error when the user's session has expired and they navigate a page
52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
import pytest
|
|
from django.contrib.auth.models import AnonymousUser
|
|
from django.contrib.messages.storage.fallback import FallbackStorage
|
|
from django.contrib.sessions.backends.db import SessionStore
|
|
from django.test.client import RequestFactory as BaseRequestFactory
|
|
|
|
from tests.factories.page import ContentPageFactory, RegularPageFactory
|
|
from tests.factories.segment import SegmentFactory
|
|
from tests.factories.site import SiteFactory
|
|
|
|
|
|
@pytest.fixture(scope='function')
|
|
def site():
|
|
root_page = ContentPageFactory(parent=None, slug='')
|
|
site = SiteFactory(is_default_site=True, root_page=root_page)
|
|
|
|
page1 = ContentPageFactory(parent=root_page, slug='page-1')
|
|
page2 = ContentPageFactory(parent=root_page, slug='page-2')
|
|
ContentPageFactory(parent=page1, slug='page-1-1')
|
|
ContentPageFactory(parent=page2, slug='page-2-1')
|
|
|
|
RegularPageFactory(parent=root_page, slug='regular')
|
|
return site
|
|
|
|
|
|
@pytest.fixture
|
|
def segmented_page(site):
|
|
page = ContentPageFactory(parent=site.root_page, slug='personalised')
|
|
segment = SegmentFactory()
|
|
return page.personalisation_metadata.copy_for_segment(segment)
|
|
|
|
|
|
@pytest.fixture()
|
|
def rf():
|
|
"""RequestFactory instance"""
|
|
return RequestFactory()
|
|
|
|
|
|
class RequestFactory(BaseRequestFactory):
|
|
|
|
def request(self, user=None, **request):
|
|
request = super(RequestFactory, self).request(**request)
|
|
request.user = AnonymousUser()
|
|
request.session = SessionStore()
|
|
request._messages = FallbackStorage(request)
|
|
return request
|
|
|
|
|
|
@pytest.fixture
|
|
def user(django_user_model):
|
|
return django_user_model.objects.create(username='user')
|