7

Fix tests

This commit is contained in:
nick.moreton
2022-11-18 16:44:42 +00:00
parent 5642e117f1
commit e31793e748
8 changed files with 41 additions and 24 deletions

View File

@ -9,19 +9,19 @@ install_requires = [
] ]
tests_require = [ tests_require = [
'factory_boy==2.8.1', "factory_boy==3.2.1",
'flake8-blind-except', 'flake8-blind-except',
'flake8-debugger', 'flake8-debugger',
'flake8-isort', 'flake8-isort',
'flake8', 'flake8',
'freezegun==0.3.8', "freezegun==1.2.1",
'pytest-cov==2.5.1', "pytest-cov==3.0.0",
'pytest-django==4.1.0', "pytest-django==4.5.2",
'pytest-pythonpath==0.7.2', "pytest-pythonpath==0.7.4",
'pytest-sugar==0.9.1', "pytest-sugar==0.9.4",
'pytest==6.1.2', "pytest==6.2.5",
'wagtail_factories==1.1.0', "wagtail_factories==2.0.1",
'pytest-mock==1.6.3', "pytest-mock==3.8.1",
] ]
docs_require = [ docs_require = [

View File

@ -10,7 +10,7 @@ from wagtail_personalisation.models import PersonalisablePageMetadata
try: try:
from wagtail.core.models import Locale from wagtail.core.models import Locale
class LocaleFactory(factory.DjangoModelFactory): class LocaleFactory(factory.django.DjangoModelFactory):
language_code = "en" language_code = "en"
class Meta: class Meta:
@ -35,7 +35,7 @@ class RegularPageFactory(PageFactory):
model = models.RegularPage model = models.RegularPage
class PersonalisablePageMetadataFactory(factory.DjangoModelFactory): class PersonalisablePageMetadataFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = PersonalisablePageMetadata model = PersonalisablePageMetadata

View File

@ -7,32 +7,32 @@ import factory
from wagtail_personalisation import rules from wagtail_personalisation import rules
class DayRuleFactory(factory.DjangoModelFactory): class DayRuleFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = rules.DayRule model = rules.DayRule
class DeviceRuleFactory(factory.DjangoModelFactory): class DeviceRuleFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = rules.DeviceRule model = rules.DeviceRule
class QueryRuleFactory(factory.DjangoModelFactory): class QueryRuleFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = rules.QueryRule model = rules.QueryRule
class ReferralRuleFactory(factory.DjangoModelFactory): class ReferralRuleFactory(factory.django.DjangoModelFactory):
regex_string = "test.test" regex_string = "test.test"
class Meta: class Meta:
model = rules.ReferralRule model = rules.ReferralRule
class TimeRuleFactory(factory.DjangoModelFactory): class TimeRuleFactory(factory.django.DjangoModelFactory):
start_time = datetime.time(8, 0, 0) start_time = datetime.time(8, 0, 0)
end_time = datetime.time(23, 0, 0) end_time = datetime.time(23, 0, 0)
@ -40,7 +40,7 @@ class TimeRuleFactory(factory.DjangoModelFactory):
model = rules.TimeRule model = rules.TimeRule
class VisitCountRuleFactory(factory.DjangoModelFactory): class VisitCountRuleFactory(factory.django.DjangoModelFactory):
operator = "more_than" operator = "more_than"
count = 0 count = 0
@ -48,6 +48,6 @@ class VisitCountRuleFactory(factory.DjangoModelFactory):
model = rules.VisitCountRule model = rules.VisitCountRule
class OriginCountryRuleFactory(factory.DjangoModelFactory): class OriginCountryRuleFactory(factory.django.DjangoModelFactory):
class Meta: class Meta:
model = rules.OriginCountryRule model = rules.OriginCountryRule

View File

@ -5,7 +5,7 @@ import factory
from wagtail_personalisation import models from wagtail_personalisation import models
class SegmentFactory(factory.DjangoModelFactory): class SegmentFactory(factory.django.DjangoModelFactory):
name = 'TestSegment' name = 'TestSegment'
status = models.Segment.STATUS_ENABLED status = models.Segment.STATUS_ENABLED

View File

@ -4,7 +4,7 @@ from wagtail.core.models import Site
from tests.factories.page import ContentPageFactory from tests.factories.page import ContentPageFactory
class SiteFactory(factory.DjangoModelFactory): class SiteFactory(factory.django.DjangoModelFactory):
hostname = 'localhost' hostname = 'localhost'
port = factory.Sequence(lambda n: 81 + n) port = factory.Sequence(lambda n: 81 + n)
site_name = 'Test site' site_name = 'Test site'

View File

@ -2,6 +2,7 @@ import datetime
import pytest import pytest
from django.db.models import ProtectedError from django.db.models import ProtectedError
from wagtail import VERSION as WAGTAIL_VERSION
from tests.factories.page import ContentPageFactory from tests.factories.page import ContentPageFactory
from tests.factories.segment import SegmentFactory from tests.factories.segment import SegmentFactory
@ -76,8 +77,8 @@ def test_sitemap_generation_for_variants_is_disabled(segmented_page):
@pytest.mark.django_db @pytest.mark.django_db
def test_segment_edit_view(site, client, django_user_model): def test_segment_edit_view(site, client, django_user_model):
test_segment = SegmentFactory() test_segment = SegmentFactory()
try: if WAGTAIL_VERSION >= (3, 0):
new_panel = test_segment.panels[1].children[0].bind_to(model=Segment)
except AttributeError:
new_panel = test_segment.panels[1].children[0].bind_to_model(Segment) new_panel = test_segment.panels[1].children[0].bind_to_model(Segment)
else:
new_panel = test_segment.panels[1].children[0].bind_to(model=Segment)
assert new_panel.related.name == "wagtail_personalisation_timerules" assert new_panel.related.name == "wagtail_personalisation_timerules"

View File

@ -13,11 +13,22 @@ from wagtail_personalisation.rules import TimeRule, VisitCountRule
def form_with_data(segment, *rules): def form_with_data(segment, *rules):
model_fields = ['type', 'status', 'count', 'name', 'match_any', 'randomisation_percent'] model_fields = ['type', 'status', 'count', 'name', 'match_any', 'randomisation_percent']
model_formsets = [
"wagtail_personalisation_timerules",
"wagtail_personalisation_dayrules",
"wagtail_personalisation_referralrules",
"wagtail_personalisation_visitcountrules",
"wagtail_personalisation_queryrules",
"wagtail_personalisation_devicerules",
"wagtail_personalisation_userisloggedinrules",
"wagtail_personalisation_origincountryrules",
]
class TestSegmentAdminForm(SegmentAdminForm): class TestSegmentAdminForm(SegmentAdminForm):
class Meta: class Meta:
model = Segment model = Segment
fields = model_fields fields = model_fields
formsets = model_formsets
data = model_to_dict(segment, model_fields) data = model_to_dict(segment, model_fields)
for formset in TestSegmentAdminForm().formsets.values(): for formset in TestSegmentAdminForm().formsets.values():

View File

@ -1,6 +1,11 @@
import pytest import pytest
from django.http import Http404 from django.http import Http404
from wagtail.core.models import Page from wagtail import VERSION as WAGTAIL_VERSION
if WAGTAIL_VERSION >= (3, 0):
from wagtail.models import Page
else:
from wagtail.core.models import Page
from tests.factories.page import ContentPageFactory from tests.factories.page import ContentPageFactory
from tests.factories.segment import SegmentFactory from tests.factories.segment import SegmentFactory