From 331250e5c6a80ff3c2ebec76a42cf64fd5cb1a07 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Fri, 30 Jan 2015 16:59:59 +0000 Subject: [PATCH] use real models for render tests on InlinePanel --- .../wagtailadmin/tests/test_edit_handlers.py | 92 ++++++++++--------- 1 file changed, 50 insertions(+), 42 deletions(-) diff --git a/wagtail/wagtailadmin/tests/test_edit_handlers.py b/wagtail/wagtailadmin/tests/test_edit_handlers.py index 8331321ffd..2d4fa1e561 100644 --- a/wagtail/wagtailadmin/tests/test_edit_handlers.py +++ b/wagtail/wagtailadmin/tests/test_edit_handlers.py @@ -12,17 +12,14 @@ from wagtail.wagtailadmin.edit_handlers import ( BaseFieldPanel, FieldPanel, BaseRichTextFieldPanel, - WagtailAdminModelForm, - BaseTabbedInterface, TabbedInterface, - BaseObjectList, ObjectList, PageChooserPanel, InlinePanel, ) from wagtail.wagtailadmin.widgets import AdminPageChooser, AdminDateInput -from wagtail.wagtailimages.edit_handlers import BaseImageChooserPanel +from wagtail.wagtailimages.edit_handlers import BaseImageChooserPanel, ImageChooserPanel from wagtail.wagtailcore.models import Page, Site from wagtail.tests.models import PageChooserModel, EventPage, EventPageSpeaker @@ -414,6 +411,8 @@ class TestPageChooserPanel(TestCase): class TestInlinePanel(TestCase): + fixtures = ['test.json'] + class FakeField(object): class FakeFormset(object): class FakeForm(object): @@ -479,45 +478,54 @@ class TestInlinePanel(TestCase): self.mock_model = MagicMock() self.mock_model.formset.related.model.panels = [self.mock_panel] - def test_get_panel_definitions_no_panels(self): - """ - Check that get_panel_definitions returns the panels set on the model - when no panels are set on the InlinePanel - """ - inline_panel = InlinePanel(self.mock_model, 'formset')( - instance=self.fake_instance, - form=self.fake_field) - result = inline_panel.get_panel_definitions() - self.assertEqual(result[0].name, 'mock panel') - - def test_get_panel_definitions(self): - """ - Check that get_panel_definitions returns the panels set on - InlinePanel - """ - other_mock_panel = MagicMock() - other_mock_panel.name = 'other mock panel' - inline_panel = InlinePanel(self.mock_model, - 'formset', - panels=[other_mock_panel])( - instance=self.fake_instance, - form=self.fake_field) - result = inline_panel.get_panel_definitions() - self.assertEqual(result[0].name, 'other mock panel') - - def test_required_formsets(self): - inline_panel = InlinePanel(self.mock_model, 'formset')( - instance=self.fake_instance, - form=self.fake_field) - self.assertEqual(inline_panel.required_formsets(), ['formset']) - def test_render(self): - inline_panel = InlinePanel(self.mock_model, - 'formset', - label='foo')( - instance=self.fake_instance, - form=self.fake_field) - self.assertIn('Add foo', inline_panel.render()) + """ + Check that the inline panel renders the panels set on the model + when no 'panels' parameter is passed in the InlinePanel definition + """ + SpeakerInlinePanel = InlinePanel(EventPage, 'speakers', label="Speakers") + EventPageForm = SpeakerInlinePanel.get_form_class(EventPage) + + # SpeakerInlinePanel should instruct the form class to include a 'speakers' formset + self.assertEqual(['speakers'], EventPageForm.formsets.keys()) + + event_page = EventPage.objects.get(slug='christmas') + + form = EventPageForm(instance=event_page) + panel = SpeakerInlinePanel(instance=event_page, form=form) + + result = panel.render_as_field() + + self.assertIn('', result) + self.assertIn('', result) + self.assertIn('', result) + self.assertIn('value="Choose an image"', result) + + def test_render_with_panel_overrides(self): + """ + Check that inline panel renders the panels listed in the InlinePanel definition + where one is specified + """ + SpeakerInlinePanel = InlinePanel(EventPage, 'speakers', label="Speakers", panels=[ + FieldPanel('first_name'), + ImageChooserPanel('image'), + ]) + EventPageForm = SpeakerInlinePanel.get_form_class(EventPage) + + # SpeakerInlinePanel should instruct the form class to include a 'speakers' formset + self.assertEqual(['speakers'], EventPageForm.formsets.keys()) + + event_page = EventPage.objects.get(slug='christmas') + + form = EventPageForm(instance=event_page) + panel = SpeakerInlinePanel(instance=event_page, form=form) + + result = panel.render_as_field() + + self.assertIn('', result) + self.assertNotIn('', result) + self.assertIn('', result) + self.assertIn('value="Choose an image"', result) def test_render_js_init(self): inline_panel = InlinePanel(self.mock_model,