From e31793e748b7b4e23e346eca78649c83b25cf3ab Mon Sep 17 00:00:00 2001 From: "nick.moreton" Date: Fri, 18 Nov 2022 16:44:42 +0000 Subject: [PATCH] Fix tests --- setup.py | 18 +++++++++--------- tests/factories/page.py | 4 ++-- tests/factories/rule.py | 14 +++++++------- tests/factories/segment.py | 2 +- tests/factories/site.py | 2 +- tests/unit/test_models.py | 7 ++++--- tests/unit/test_static_dynamic_segments.py | 11 +++++++++++ tests/unit/test_wagtail_hooks.py | 7 ++++++- 8 files changed, 41 insertions(+), 24 deletions(-) diff --git a/setup.py b/setup.py index 9fac74a..905d635 100644 --- a/setup.py +++ b/setup.py @@ -9,19 +9,19 @@ install_requires = [ ] tests_require = [ - 'factory_boy==2.8.1', + "factory_boy==3.2.1", 'flake8-blind-except', 'flake8-debugger', 'flake8-isort', 'flake8', - 'freezegun==0.3.8', - 'pytest-cov==2.5.1', - 'pytest-django==4.1.0', - 'pytest-pythonpath==0.7.2', - 'pytest-sugar==0.9.1', - 'pytest==6.1.2', - 'wagtail_factories==1.1.0', - 'pytest-mock==1.6.3', + "freezegun==1.2.1", + "pytest-cov==3.0.0", + "pytest-django==4.5.2", + "pytest-pythonpath==0.7.4", + "pytest-sugar==0.9.4", + "pytest==6.2.5", + "wagtail_factories==2.0.1", + "pytest-mock==3.8.1", ] docs_require = [ diff --git a/tests/factories/page.py b/tests/factories/page.py index 177ad36..e0e2dc6 100644 --- a/tests/factories/page.py +++ b/tests/factories/page.py @@ -10,7 +10,7 @@ from wagtail_personalisation.models import PersonalisablePageMetadata try: from wagtail.core.models import Locale - class LocaleFactory(factory.DjangoModelFactory): + class LocaleFactory(factory.django.DjangoModelFactory): language_code = "en" class Meta: @@ -35,7 +35,7 @@ class RegularPageFactory(PageFactory): model = models.RegularPage -class PersonalisablePageMetadataFactory(factory.DjangoModelFactory): +class PersonalisablePageMetadataFactory(factory.django.DjangoModelFactory): class Meta: model = PersonalisablePageMetadata diff --git a/tests/factories/rule.py b/tests/factories/rule.py index ef8665c..36f2350 100644 --- a/tests/factories/rule.py +++ b/tests/factories/rule.py @@ -7,32 +7,32 @@ import factory from wagtail_personalisation import rules -class DayRuleFactory(factory.DjangoModelFactory): +class DayRuleFactory(factory.django.DjangoModelFactory): class Meta: model = rules.DayRule -class DeviceRuleFactory(factory.DjangoModelFactory): +class DeviceRuleFactory(factory.django.DjangoModelFactory): class Meta: model = rules.DeviceRule -class QueryRuleFactory(factory.DjangoModelFactory): +class QueryRuleFactory(factory.django.DjangoModelFactory): class Meta: model = rules.QueryRule -class ReferralRuleFactory(factory.DjangoModelFactory): +class ReferralRuleFactory(factory.django.DjangoModelFactory): regex_string = "test.test" class Meta: model = rules.ReferralRule -class TimeRuleFactory(factory.DjangoModelFactory): +class TimeRuleFactory(factory.django.DjangoModelFactory): start_time = datetime.time(8, 0, 0) end_time = datetime.time(23, 0, 0) @@ -40,7 +40,7 @@ class TimeRuleFactory(factory.DjangoModelFactory): model = rules.TimeRule -class VisitCountRuleFactory(factory.DjangoModelFactory): +class VisitCountRuleFactory(factory.django.DjangoModelFactory): operator = "more_than" count = 0 @@ -48,6 +48,6 @@ class VisitCountRuleFactory(factory.DjangoModelFactory): model = rules.VisitCountRule -class OriginCountryRuleFactory(factory.DjangoModelFactory): +class OriginCountryRuleFactory(factory.django.DjangoModelFactory): class Meta: model = rules.OriginCountryRule diff --git a/tests/factories/segment.py b/tests/factories/segment.py index f92f579..d7bbbd9 100644 --- a/tests/factories/segment.py +++ b/tests/factories/segment.py @@ -5,7 +5,7 @@ import factory from wagtail_personalisation import models -class SegmentFactory(factory.DjangoModelFactory): +class SegmentFactory(factory.django.DjangoModelFactory): name = 'TestSegment' status = models.Segment.STATUS_ENABLED diff --git a/tests/factories/site.py b/tests/factories/site.py index 631963b..7d77d8b 100644 --- a/tests/factories/site.py +++ b/tests/factories/site.py @@ -4,7 +4,7 @@ from wagtail.core.models import Site from tests.factories.page import ContentPageFactory -class SiteFactory(factory.DjangoModelFactory): +class SiteFactory(factory.django.DjangoModelFactory): hostname = 'localhost' port = factory.Sequence(lambda n: 81 + n) site_name = 'Test site' diff --git a/tests/unit/test_models.py b/tests/unit/test_models.py index e15571a..0a40105 100644 --- a/tests/unit/test_models.py +++ b/tests/unit/test_models.py @@ -2,6 +2,7 @@ import datetime import pytest from django.db.models import ProtectedError +from wagtail import VERSION as WAGTAIL_VERSION from tests.factories.page import ContentPageFactory from tests.factories.segment import SegmentFactory @@ -76,8 +77,8 @@ def test_sitemap_generation_for_variants_is_disabled(segmented_page): @pytest.mark.django_db def test_segment_edit_view(site, client, django_user_model): test_segment = SegmentFactory() - try: - new_panel = test_segment.panels[1].children[0].bind_to(model=Segment) - except AttributeError: + if WAGTAIL_VERSION >= (3, 0): 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" diff --git a/tests/unit/test_static_dynamic_segments.py b/tests/unit/test_static_dynamic_segments.py index b69cd4a..366a223 100644 --- a/tests/unit/test_static_dynamic_segments.py +++ b/tests/unit/test_static_dynamic_segments.py @@ -13,11 +13,22 @@ from wagtail_personalisation.rules import TimeRule, VisitCountRule def form_with_data(segment, *rules): 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 Meta: model = Segment fields = model_fields + formsets = model_formsets data = model_to_dict(segment, model_fields) for formset in TestSegmentAdminForm().formsets.values(): diff --git a/tests/unit/test_wagtail_hooks.py b/tests/unit/test_wagtail_hooks.py index 917ac2f..3b3a48c 100644 --- a/tests/unit/test_wagtail_hooks.py +++ b/tests/unit/test_wagtail_hooks.py @@ -1,6 +1,11 @@ import pytest 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.segment import SegmentFactory