Add tests for WAGTAIL_AUTO_UPDATE_PREVIEW_INTERVAL

Surprisingly we didn't have any tests for this...
pull/12295/head
Sage Abdullah 2024-08-23 15:31:29 +01:00 zatwierdzone przez LB (Ben Johnston)
rodzic e851717d9c
commit b9f1585a70
2 zmienionych plików z 138 dodań i 2 usunięć

Wyświetl plik

@ -1,7 +1,7 @@
import datetime
from functools import wraps
from django.test import TestCase
from django.test import TestCase, override_settings
from django.urls import reverse
from django.utils import timezone
from freezegun import freeze_time
@ -535,6 +535,18 @@ class TestEnablePreview(WagtailTestUtils, TestCase):
self.assertIsNotNone(controller)
self.assertEqual(controller.get("data-w-preview-url-value"), preview_url)
# Should have a default interval of 500ms and should render the hidden spinner
interval_value = controller.get("data-w-preview-auto-update-interval-value")
self.assertEqual(interval_value, "500")
spinner = controller.select_one('[data-w-preview-target="spinner"]')
self.assertIsNotNone(spinner)
self.assertIsNotNone(spinner.get("hidden"))
self.assertIsNotNone(spinner.select_one("svg.icon-spinner"))
# Should not render any buttons (the refresh button in particular)
refresh_button = controller.select_one("button")
self.assertIsNone(refresh_button)
# Should show the iframe
iframe = controller.select_one("#w-preview-iframe")
self.assertIsNotNone(iframe)
@ -590,6 +602,60 @@ class TestEnablePreview(WagtailTestUtils, TestCase):
self.assertIsNotNone(other_option)
self.assertIsNone(other_option.get("selected"))
@override_settings(WAGTAIL_AUTO_UPDATE_PREVIEW_INTERVAL=12345)
def test_custom_auto_update_interval(self):
edit_url = self.get_url_on_edit("edit", self.single)
preview_url = self.get_url_on_edit("preview_on_edit", self.single)
response = self.client.get(edit_url)
self.assertEqual(response.status_code, 200)
soup = self.get_soup(response.content)
# Should set the custom interval value on the controller
controller = soup.select_one('[data-controller="w-preview"]')
self.assertIsNotNone(controller)
self.assertEqual(controller.get("data-w-preview-url-value"), preview_url)
interval_value = controller.get("data-w-preview-auto-update-interval-value")
self.assertEqual(interval_value, "12345")
# Should render the spinner
spinner = controller.select_one('[data-w-preview-target="spinner"]')
self.assertIsNotNone(spinner)
self.assertIsNotNone(spinner.get("hidden"))
self.assertIsNotNone(spinner.select_one("svg.icon-spinner"))
# Should not render any buttons (the refresh button in particular)
refresh_button = controller.select_one("button")
self.assertIsNone(refresh_button)
@override_settings(WAGTAIL_AUTO_UPDATE_PREVIEW_INTERVAL=0)
def test_disable_auto_update_using_zero_interval(self):
edit_url = self.get_url_on_edit("edit", self.single)
preview_url = self.get_url_on_edit("preview_on_edit", self.single)
response = self.client.get(edit_url)
self.assertEqual(response.status_code, 200)
soup = self.get_soup(response.content)
# Should set the interval value on the controller
controller = soup.select_one('[data-controller="w-preview"]')
self.assertIsNotNone(controller)
self.assertEqual(controller.get("data-w-preview-url-value"), preview_url)
interval_value = controller.get("data-w-preview-auto-update-interval-value")
self.assertEqual(interval_value, "0")
# Should not render the spinner
spinner = controller.select_one('[data-w-preview-target="spinner"]')
self.assertIsNone(spinner)
# Should render the refresh button with the w-progress controller
refresh_button = controller.select_one("button")
self.assertIsNotNone(refresh_button)
self.assertEqual(refresh_button.get("data-controller"), "w-progress")
self.assertEqual(refresh_button.text.strip(), "Refresh")
def test_show_preview_on_revisions_list(self):
latest_revision = self.single.save_revision(log_action=True)
history_url = self.get_url_on_edit("history", self.single)

Wyświetl plik

@ -1,6 +1,6 @@
import datetime
from django.test import TestCase
from django.test import TestCase, override_settings
from django.urls import reverse
from django.utils import timezone
from freezegun import freeze_time
@ -423,6 +423,18 @@ class TestEnablePreview(WagtailTestUtils, TestCase):
self.assertIsNotNone(controller)
self.assertEqual(controller.get("data-w-preview-url-value"), preview_url)
# Should have a default interval of 500ms and should render the hidden spinner
interval_value = controller.get("data-w-preview-auto-update-interval-value")
self.assertEqual(interval_value, "500")
spinner = controller.select_one('[data-w-preview-target="spinner"]')
self.assertIsNotNone(spinner)
self.assertIsNotNone(spinner.get("hidden"))
self.assertIsNotNone(spinner.select_one("svg.icon-spinner"))
# Should not render any buttons (the refresh button in particular)
refresh_button = controller.select_one("button")
self.assertIsNone(refresh_button)
# Should show the iframe
iframe = controller.select_one("#w-preview-iframe")
self.assertIsNotNone(iframe)
@ -446,6 +458,64 @@ class TestEnablePreview(WagtailTestUtils, TestCase):
self.assertEqual(other_option.text.strip(), "Normal")
self.assertIsNone(other_option.get("selected"))
@override_settings(WAGTAIL_AUTO_UPDATE_PREVIEW_INTERVAL=12345)
def test_custom_auto_update_interval(self):
edit_url = self.get_url(self.single, "edit", args=(self.single.pk,))
preview_url = self.get_url(
self.single, "preview_on_edit", args=(self.multiple.pk,)
)
response = self.client.get(edit_url)
self.assertEqual(response.status_code, 200)
soup = self.get_soup(response.content)
# Should set the custom interval value on the controller
controller = soup.select_one('[data-controller="w-preview"]')
self.assertIsNotNone(controller)
self.assertEqual(controller.get("data-w-preview-url-value"), preview_url)
interval_value = controller.get("data-w-preview-auto-update-interval-value")
self.assertEqual(interval_value, "12345")
# Should render the spinner
spinner = controller.select_one('[data-w-preview-target="spinner"]')
self.assertIsNotNone(spinner)
self.assertIsNotNone(spinner.get("hidden"))
self.assertIsNotNone(spinner.select_one("svg.icon-spinner"))
# Should not render any buttons (the refresh button in particular)
refresh_button = controller.select_one("button")
self.assertIsNone(refresh_button)
@override_settings(WAGTAIL_AUTO_UPDATE_PREVIEW_INTERVAL=0)
def test_disable_auto_update_using_zero_interval(self):
edit_url = self.get_url(self.single, "edit", args=(self.single.pk,))
preview_url = self.get_url(
self.single, "preview_on_edit", args=(self.multiple.pk,)
)
response = self.client.get(edit_url)
self.assertEqual(response.status_code, 200)
soup = self.get_soup(response.content)
# Should set the interval value on the controller
controller = soup.select_one('[data-controller="w-preview"]')
self.assertIsNotNone(controller)
self.assertEqual(controller.get("data-w-preview-url-value"), preview_url)
interval_value = controller.get("data-w-preview-auto-update-interval-value")
self.assertEqual(interval_value, "0")
# Should not render the spinner
spinner = controller.select_one('[data-w-preview-target="spinner"]')
self.assertIsNone(spinner)
# Should render the refresh button with the w-progress controller
refresh_button = controller.select_one("button")
self.assertIsNotNone(refresh_button)
self.assertEqual(refresh_button.get("data-controller"), "w-progress")
self.assertEqual(refresh_button.text.strip(), "Refresh")
def test_show_preview_on_revisions_list(self):
latest_revision = self.multiple.save_revision(log_action=True)
history_url = self.get_url(self.multiple, "history", args=(self.multiple.pk,))