Skip to content

Commit

Permalink
support multiple uses of the mixin class (#140)
Browse files Browse the repository at this point in the history
  • Loading branch information
pjstevns authored and robmoorman committed May 31, 2017
1 parent 4deaaa9 commit 99d2e4a
Show file tree
Hide file tree
Showing 8 changed files with 74 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/wagtail_personalisation/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ class Meta:
blank=True, null=True
)
segment = models.ForeignKey(
Segment, related_name='segments', on_delete=models.PROTECT,
Segment, related_name='+', on_delete=models.PROTECT,
blank=True, null=True
)
is_segmented = models.BooleanField(default=False)
Expand Down
12 changes: 10 additions & 2 deletions tests/factories/page.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,20 @@
from django.utils.text import slugify
from wagtail_factories.factories import MP_NodeFactory

from tests.sandbox.pages.models import HomePage
from tests.sandbox.pages.models import HomePage, SpecialPage


class PageFactory(MP_NodeFactory):
class HomePageFactory(MP_NodeFactory):
title = 'Test page'
slug = factory.LazyAttribute(lambda obj: slugify(obj.title))

class Meta:
model = HomePage


class SpecialPageFactory(MP_NodeFactory):
title = 'Test page'
slug = factory.LazyAttribute(lambda obj: slugify(obj.title))

class Meta:
model = SpecialPage
4 changes: 2 additions & 2 deletions tests/factories/site.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import factory
from wagtail.wagtailcore.models import Site

from tests.factories.page import PageFactory
from tests.factories.page import HomePageFactory


class SiteFactory(factory.DjangoModelFactory):
hostname = 'localhost'
port = factory.Sequence(lambda n: 81 + n)
site_name = 'Test site'
root_page = factory.SubFactory(PageFactory, parent=None)
root_page = factory.SubFactory(HomePageFactory, parent=None)
is_default_site = False

class Meta:
Expand Down
12 changes: 7 additions & 5 deletions tests/fixtures.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,27 @@
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 PageFactory

from tests.factories.page import HomePageFactory, SpecialPageFactory
from tests.factories.segment import SegmentFactory
from tests.factories.site import SiteFactory


@pytest.fixture(scope='function')
def site():
site = SiteFactory(is_default_site=True)
PageFactory(parent=site.root_page, slug='page-1')
PageFactory(parent=site.root_page, slug='page-2')
page1 = HomePageFactory(parent=site.root_page, slug='page-1')
page2 = HomePageFactory(parent=site.root_page, slug='page-2')
SpecialPageFactory(parent=page1, slug='page-1-1')
SpecialPageFactory(parent=page2, slug='page-2-1')
return site


@pytest.fixture
def segmented_page(site):
page = PageFactory(parent=site.root_page)
page = HomePageFactory(parent=site.root_page)
segment = SegmentFactory()
return page.copy_for_segment(segment)

Expand Down
40 changes: 40 additions & 0 deletions tests/sandbox/pages/migrations/0002_auto_20170531_0915.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.1 on 2017-05-31 09:15
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion
import wagtail.wagtailcore.fields


class Migration(migrations.Migration):

dependencies = [
('wagtail_personalisation', '0009_auto_20170531_0428'),
('wagtailcore', '0033_remove_golive_expiry_help_text'),
('pages', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='SpecialPage',
fields=[
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.Page')),
('is_segmented', models.BooleanField(default=False)),
('subtitle', models.CharField(blank=True, default='', max_length=255)),
('body', wagtail.wagtailcore.fields.RichTextField(blank=True, default='')),
('special', wagtail.wagtailcore.fields.RichTextField(blank=True, default='')),
('canonical_page', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='variations', to='pages.SpecialPage')),
('segment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtail_personalisation.Segment')),
],
options={
'abstract': False,
},
bases=('wagtailcore.page', models.Model),
),
migrations.AlterField(
model_name='homepage',
name='segment',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtail_personalisation.Segment'),
),
]
12 changes: 12 additions & 0 deletions tests/sandbox/pages/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,15 @@ class HomePage(PersonalisablePageMixin, Page):
FieldPanel('subtitle'),
FieldPanel('body'),
]


class SpecialPage(PersonalisablePageMixin, Page):
subtitle = models.CharField(max_length=255, blank=True, default='')
body = RichTextField(blank=True, default='')
special = RichTextField(blank=True, default='')

content_panels = Page.content_panels + [
FieldPanel('subtitle'),
FieldPanel('body'),
FieldPanel('special'),
]
4 changes: 2 additions & 2 deletions tests/unit/test_factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@

import pytest

from tests.factories.page import HomePageFactory
from tests.factories.rule import (
DayRuleFactory, DeviceRuleFactory, ReferralRuleFactory, TimeRuleFactory)
from tests.factories.segment import SegmentFactory
from tests.factories.site import SiteFactory
from tests.factories.page import PageFactory
from wagtail_personalisation.models import Segment
from wagtail_personalisation.rules import TimeRule

Expand Down Expand Up @@ -98,5 +98,5 @@ def test_site_factory():
def test_page_factory():
site = SiteFactory()
assert site.root_page
page = PageFactory(parent=site.root_page)
page = HomePageFactory(parent=site.root_page)
assert page.get_parent() == site.root_page
1 change: 0 additions & 1 deletion tests/unit/test_middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import pytest
from freezegun import freeze_time

from tests.factories.page import PageFactory
from tests.factories.rule import (
DayRuleFactory, DeviceRuleFactory, QueryRuleFactory, ReferralRuleFactory,
TimeRuleFactory, VisitCountRuleFactory)
Expand Down

0 comments on commit 99d2e4a

Please sign in to comment.