Add tests for PageChooserBlock and AdminPageChooser adapters

pull/6931/head
Karl Hobley 2021-02-01 11:33:02 +00:00 zatwierdzone przez Matt Westcott
rodzic dac969a372
commit 0bef68cc3f
2 zmienionych plików z 71 dodań i 36 usunięć

Wyświetl plik

@ -26,6 +26,31 @@ class TestAdminPageChooserWidget(TestCase):
widget = widgets.AdminPageChooser()
self.assertFalse(widget.is_hidden)
def test_adapt(self):
widget = widgets.AdminPageChooser()
js_args = widgets.PageChooserAdapter().js_args(widget)
self.assertInHTML("""<input id="__ID__" name="__NAME__" type="hidden" />""", js_args[0])
self.assertIn(">Choose a page<", js_args[0])
self.assertEqual(js_args[1], '__ID__')
self.assertEqual(js_args[2], {
'can_choose_root': False,
'model_names': ['wagtailcore.page'],
'user_perms': None
})
def test_adapt_with_target_model(self):
widget = widgets.AdminPageChooser(target_models=[SimplePage, EventPage])
js_args = widgets.PageChooserAdapter().js_args(widget)
self.assertEqual(js_args[2]['model_names'], ['tests.simplepage', 'tests.eventpage'])
def test_adapt_with_can_choose_root(self):
widget = widgets.AdminPageChooser(can_choose_root=True)
js_args = widgets.PageChooserAdapter().js_args(widget)
self.assertTrue(js_args[2]['can_choose_root'])
def test_render_html(self):
# render_html is mostly an internal API, but we do want to support calling it with None as
# a value, to render a blank field without the JS initialiser (so that we can call that

Wyświetl plik

@ -3593,55 +3593,65 @@ class TestPageChooserBlock(TestCase):
# None should deserialize to None
self.assertEqual(block.to_python(None), None)
@unittest.expectedFailure # TODO(telepath)
def test_form_render(self):
def test_adapt(self):
from wagtail.admin.widgets.chooser import AdminPageChooser
block = blocks.PageChooserBlock(help_text="pick a page, any page")
empty_form_html = block.render_form(None, 'page')
self.assertInHTML('<input id="page" name="page" placeholder="" type="hidden" />', empty_form_html)
self.assertIn('createPageChooser("page", null, {"model_names": ["wagtailcore.page"], "can_choose_root": false, "user_perms": null});', empty_form_html)
block.set_name('test_pagechooserblock')
js_args = FieldBlockAdapter().js_args(block)
christmas_page = Page.objects.get(slug='christmas')
christmas_form_html = block.render_form(christmas_page, 'page')
expected_html = '<input id="page" name="page" placeholder="" type="hidden" value="%d" />' % christmas_page.id
self.assertInHTML(expected_html, christmas_form_html)
self.assertIn("pick a page, any page", christmas_form_html)
self.assertEqual(js_args[0], 'test_pagechooserblock')
self.assertIsInstance(js_args[1], AdminPageChooser)
self.assertEqual(js_args[1].target_models, [Page])
self.assertFalse(js_args[1].can_choose_root)
self.assertEqual(js_args[2], {
'label': 'Test pagechooserblock',
'required': True,
'icon': 'redirect',
'helpText': 'pick a page, any page',
'classname': 'field model_choice_field widget-admin_page_chooser fieldname-test_pagechooserblock'
})
@unittest.expectedFailure # TODO(telepath)
def test_form_render_with_target_model_default(self):
block = blocks.PageChooserBlock()
empty_form_html = block.render_form(None, 'page')
self.assertIn('createPageChooser("page", null, {"model_names": ["wagtailcore.page"], "can_choose_root": false, "user_perms": null});', empty_form_html)
@unittest.expectedFailure # TODO(telepath)
def test_form_render_with_target_model_string(self):
def test_adapt_with_target_model_string(self):
block = blocks.PageChooserBlock(help_text="pick a page, any page", page_type='tests.SimplePage')
empty_form_html = block.render_form(None, 'page')
self.assertIn('createPageChooser("page", null, {"model_names": ["tests.simplepage"], "can_choose_root": false, "user_perms": null});', empty_form_html)
@unittest.expectedFailure # TODO(telepath)
def test_form_render_with_target_model_literal(self):
block.set_name('test_pagechooserblock')
js_args = FieldBlockAdapter().js_args(block)
self.assertEqual(js_args[1].target_models, [SimplePage])
def test_adapt_with_target_model_literal(self):
block = blocks.PageChooserBlock(help_text="pick a page, any page", page_type=SimplePage)
empty_form_html = block.render_form(None, 'page')
self.assertIn('createPageChooser("page", null, {"model_names": ["tests.simplepage"], "can_choose_root": false, "user_perms": null});', empty_form_html)
@unittest.expectedFailure # TODO(telepath)
def test_form_render_with_target_model_multiple_strings(self):
block.set_name('test_pagechooserblock')
js_args = FieldBlockAdapter().js_args(block)
self.assertEqual(js_args[1].target_models, [SimplePage])
def test_adapt_with_target_model_multiple_strings(self):
block = blocks.PageChooserBlock(help_text="pick a page, any page", page_type=['tests.SimplePage', 'tests.EventPage'])
empty_form_html = block.render_form(None, 'page')
self.assertIn('createPageChooser("page", null, {"model_names": ["tests.simplepage", "tests.eventpage"], "can_choose_root": false, "user_perms": null});', empty_form_html)
@unittest.expectedFailure # TODO(telepath)
def test_form_render_with_target_model_multiple_literals(self):
block.set_name('test_pagechooserblock')
js_args = FieldBlockAdapter().js_args(block)
self.assertEqual(js_args[1].target_models, [SimplePage, EventPage])
def test_adapt_with_target_model_multiple_literals(self):
block = blocks.PageChooserBlock(help_text="pick a page, any page", page_type=[SimplePage, EventPage])
empty_form_html = block.render_form(None, 'page')
self.assertIn('createPageChooser("page", null, {"model_names": ["tests.simplepage", "tests.eventpage"], "can_choose_root": false, "user_perms": null});', empty_form_html)
@unittest.expectedFailure # TODO(telepath)
def test_form_render_with_can_choose_root(self):
block.set_name('test_pagechooserblock')
js_args = FieldBlockAdapter().js_args(block)
self.assertEqual(js_args[1].target_models, [SimplePage, EventPage])
def test_adapt_with_can_choose_root(self):
block = blocks.PageChooserBlock(help_text="pick a page, any page", can_choose_root=True)
empty_form_html = block.render_form(None, 'page')
self.assertIn('createPageChooser("page", null, {"model_names": ["wagtailcore.page"], "can_choose_root": true, "user_perms": null});', empty_form_html)
block.set_name('test_pagechooserblock')
js_args = FieldBlockAdapter().js_args(block)
self.assertTrue(js_args[1].can_choose_root)
def test_form_response(self):
block = blocks.PageChooserBlock()