66 lines
2.6 KiB
Python
66 lines
2.6 KiB
Python
from django.test import TestCase
|
|
from django.urls import reverse
|
|
|
|
from wagtail.test.utils import WagtailTestUtils
|
|
from wagtail.users.models import UserProfile
|
|
|
|
|
|
class TestDismissiblesView(WagtailTestUtils, TestCase):
|
|
def setUp(self):
|
|
self.user = self.login()
|
|
self.profile = UserProfile.get_for_user(self.user)
|
|
self.url = reverse("wagtailadmin_dismissibles")
|
|
|
|
def test_get_initial(self):
|
|
response = self.client.get(self.url)
|
|
self.profile.refresh_from_db()
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertEqual(response.json(), {})
|
|
self.assertEqual(self.user.wagtail_userprofile.dismissibles, {})
|
|
|
|
def test_patch_valid(self):
|
|
response = self.client.patch(
|
|
self.url, data={"foo": "bar"}, content_type="application/json"
|
|
)
|
|
self.profile.refresh_from_db()
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertEqual(response.json(), {"foo": "bar"})
|
|
self.assertEqual(self.user.wagtail_userprofile.dismissibles, {"foo": "bar"})
|
|
|
|
def test_patch_invalid(self):
|
|
response = self.client.patch(
|
|
self.url, data="invalid", content_type="application/json"
|
|
)
|
|
self.profile.refresh_from_db()
|
|
self.assertEqual(response.status_code, 400)
|
|
self.assertEqual(self.user.wagtail_userprofile.dismissibles, {})
|
|
|
|
def test_post(self):
|
|
# The view only accepts GET and PATCH
|
|
response = self.client.post(self.url, data={"foo": "bar"})
|
|
self.profile.refresh_from_db()
|
|
self.assertEqual(response.status_code, 405)
|
|
self.assertEqual(self.user.wagtail_userprofile.dismissibles, {})
|
|
|
|
def test_get_without_userprofile(self):
|
|
# GET should work even if the user doesn't have a UserProfile,
|
|
# but it shouldn't create one
|
|
self.profile.delete()
|
|
response = self.client.get(self.url)
|
|
self.user.refresh_from_db()
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertEqual(response.json(), {})
|
|
self.assertIsNone(getattr(self.user, "wagtail_userprofile", None))
|
|
|
|
def test_patch_without_userprofile(self):
|
|
# PATCH should work even if the user doesn't have a UserProfile,
|
|
# in which case it should create one
|
|
self.profile.delete()
|
|
response = self.client.patch(
|
|
self.url, data={"foo": "bar"}, content_type="application/json"
|
|
)
|
|
self.user.refresh_from_db()
|
|
self.assertEqual(response.status_code, 200)
|
|
self.assertEqual(response.json(), {"foo": "bar"})
|
|
self.assertEqual(self.user.wagtail_userprofile.dismissibles, {"foo": "bar"})
|