initial
This commit is contained in:
0
tests/plugins/notifications/__init__.py
Normal file
0
tests/plugins/notifications/__init__.py
Normal file
9
tests/plugins/notifications/test_forms.py
Normal file
9
tests/plugins/notifications/test_forms.py
Normal file
@@ -0,0 +1,9 @@
|
||||
from django.test import TestCase
|
||||
from wiki.plugins.notifications.forms import SettingsFormSet
|
||||
|
||||
from tests.base import RequireSuperuserMixin
|
||||
|
||||
|
||||
class SettingsFormTests(RequireSuperuserMixin, TestCase):
|
||||
def test_formset(self):
|
||||
SettingsFormSet(user=self.superuser1)
|
||||
76
tests/plugins/notifications/test_views.py
Normal file
76
tests/plugins/notifications/test_views.py
Normal file
@@ -0,0 +1,76 @@
|
||||
from django.shortcuts import resolve_url
|
||||
from django_nyt.models import Settings
|
||||
|
||||
from tests.base import ArticleWebTestUtils
|
||||
from tests.base import DjangoClientTestBase
|
||||
from tests.base import RequireRootArticleMixin
|
||||
|
||||
|
||||
class NotificationSettingsTests(
|
||||
RequireRootArticleMixin, ArticleWebTestUtils, DjangoClientTestBase
|
||||
):
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
|
||||
def test_login_required(self):
|
||||
self.client.logout()
|
||||
response = self.client.get(resolve_url("wiki:notification_settings"))
|
||||
self.assertEqual(response.status_code, 302)
|
||||
|
||||
def test_when_logged_in(self):
|
||||
response = self.client.get(resolve_url("wiki:notification_settings"))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(
|
||||
response, "wiki/plugins/notifications/settings.html"
|
||||
)
|
||||
|
||||
def test_change_settings(self):
|
||||
self.settings, __ = Settings.objects.get_or_create(
|
||||
user=self.superuser1, is_default=True
|
||||
)
|
||||
|
||||
url = resolve_url("wiki:notification_settings")
|
||||
|
||||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
data = {"csrf_token": response.context["csrf_token"]}
|
||||
|
||||
# management form information, needed because of the formset
|
||||
management_form = response.context["form"].management_form
|
||||
|
||||
for i in (
|
||||
"TOTAL_FORMS",
|
||||
"INITIAL_FORMS",
|
||||
"MIN_NUM_FORMS",
|
||||
"MAX_NUM_FORMS",
|
||||
):
|
||||
data[f"{management_form.prefix}-{i}"] = management_form[i].value()
|
||||
|
||||
for i in range(response.context["form"].total_form_count()):
|
||||
# get form index 'i'
|
||||
current_form = response.context["form"].forms[i]
|
||||
|
||||
# retrieve all the fields
|
||||
for field_name in current_form.fields:
|
||||
value = current_form[field_name].value()
|
||||
data[f"{current_form.prefix}-{field_name}"] = (
|
||||
value if value is not None else ""
|
||||
)
|
||||
|
||||
data["form-TOTAL_FORMS"] = 1
|
||||
data["form-0-email"] = 2
|
||||
data["form-0-interval"] = 0
|
||||
# post the request without any change
|
||||
|
||||
response = self.client.post(url, data, follow=True)
|
||||
|
||||
self.assertEqual(len(response.context.get("messages")), 1)
|
||||
|
||||
message = response.context.get("messages")._loaded_messages[0]
|
||||
self.assertIn(
|
||||
message.message,
|
||||
"You will receive notifications instantly for 0 articles",
|
||||
)
|
||||
|
||||
# Ensure we didn't create redundant Settings objects
|
||||
assert self.superuser1.nyt_settings.all().count() == 1
|
||||
Reference in New Issue
Block a user