forked from WorldconVotingSystems/nomnom
-
Notifications
You must be signed in to change notification settings - Fork 1
/
conftest.py
92 lines (70 loc) · 2.74 KB
/
conftest.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
from datetime import datetime
from unittest import mock
import pytest
import social_core.strategy
import svcs
from django.apps import apps
from django.conf import settings
from django.test import override_settings
from social_django.storage import BaseDjangoStorage
from nomnom.convention import ConventionConfiguration, ConventionTheme
# some top level fixtures we use in other modules
class DictStrategy(social_core.strategy.BaseStrategy):
def __init__(self, settings=None):
self.settings = {} if settings is None else settings
# we also need a request here, for svcs context; the strategy instance is plenty
self.request = self
super().__init__(storage=BaseDjangoStorage())
def setting(self, name, default=None, backend=None):
return self.settings.get(name, default)
def request_data(self, merge=True):
return {}
def build_absolute_uri(self, path=None):
return path
@pytest.fixture(name="registry", autouse=True)
def get_registry():
registry = svcs.Registry()
with mock.patch.object(apps.get_app_config("django_svcs"), "registry", registry):
yield registry
@pytest.fixture(autouse=True, name="convention")
def test_convention(registry: svcs.Registry) -> ConventionConfiguration:
convention = ConventionConfiguration(
name="NomNom Testing",
subtitle="Test Convention",
slug="test",
site_url="https://example.com/",
hugo_help_email="[email protected]",
hugo_admin_email="[email protected]",
registration_email="[email protected]",
logo_alt_text="Nominate logo",
nomination_eligibility_cutoff=datetime(2024, 1, 31),
)
registry.register_value(ConventionConfiguration, convention)
return convention
@pytest.fixture(autouse=True, name="theme")
def test_theme(registry: svcs.Registry) -> ConventionTheme:
theme = ConventionTheme(
stylesheets="css/nominate.css",
font_urls="https://fonts.googleapis.com/css2?family=Roboto&family=Roboto+Slab&family=Gruppo&display=swap",
)
registry.register_value(ConventionTheme, theme)
return theme
@pytest.fixture(autouse=True)
def disable_whitenoise():
original_middleware = settings.MIDDLEWARE
# Create a modified middleware list excluding the one you want to disable
modified_middleware = list(
filter(
lambda x: x != "whitenoise.middleware.WhiteNoiseMiddleware",
original_middleware,
)
)
# Apply the modified middleware list
with override_settings(MIDDLEWARE=modified_middleware):
yield
@pytest.fixture
def social_core_settings():
return {}
@pytest.fixture
def social_core_strategy(social_core_settings):
return DictStrategy(social_core_settings)