class TestTabbedInterface(TestCase): def setUp(self): # a custom tabbed interface for EventPage self.EventPageTabbedInterface = TabbedInterface([ ObjectList([ FieldPanel('title', widget=forms.Textarea), FieldPanel('date_from'), FieldPanel('date_to'), ], heading='Event details', classname="shiny"), ObjectList([ InlinePanel('speakers', label="Speakers"), ], heading='Speakers'), ]).bind_to_model(EventPage) def test_get_form_class(self): EventPageForm = self.EventPageTabbedInterface.get_form_class(EventPage) form = EventPageForm() # form must include the 'speakers' formset required by the speakers InlinePanel self.assertIn('speakers', form.formsets) # form must respect any overridden widgets self.assertEqual(type(form.fields['title'].widget), forms.Textarea) def test_render(self): EventPageForm = self.EventPageTabbedInterface.get_form_class(EventPage) event = EventPage(title='Abergavenny sheepdog trials') form = EventPageForm(instance=event) tabbed_interface = self.EventPageTabbedInterface(instance=event, form=form) result = tabbed_interface.render() # result should contain tab buttons self.assertIn( '<a href="#tab-event-details" class="active">Event details</a>', result) self.assertIn('<a href="#tab-speakers" class="">Speakers</a>', result) # result should contain tab panels self.assertIn('<div class="tab-content">', result) self.assertIn('<section id="tab-event-details" class="shiny active">', result) self.assertIn('<section id="tab-speakers" class=" ">', result) # result should contain rendered content from descendants self.assertIn('Abergavenny sheepdog trials</textarea>', result) # this result should not include fields that are not covered by the panel definition self.assertNotIn('signup_link', result) def test_required_fields(self): # required_fields should report the set of form fields to be rendered recursively by children of TabbedInterface result = set(self.EventPageTabbedInterface.required_fields()) self.assertEqual(result, set(['title', 'date_from', 'date_to'])) def test_render_form_content(self): EventPageForm = self.EventPageTabbedInterface.get_form_class(EventPage) event = EventPage(title='Abergavenny sheepdog trials') form = EventPageForm(instance=event) tabbed_interface = self.EventPageTabbedInterface(instance=event, form=form) result = tabbed_interface.render_form_content() # rendered output should contain field content as above self.assertIn('Abergavenny sheepdog trials</textarea>', result) # rendered output should NOT include fields that are in the model but not represented # in the panel definition self.assertNotIn('signup_link', result)
class TestTabbedInterface(TestCase): def setUp(self): # a custom tabbed interface for EventPage self.EventPageTabbedInterface = TabbedInterface([ ObjectList([ FieldPanel('title', widget=forms.Textarea), FieldPanel('date_from'), FieldPanel('date_to'), ], heading='Event details', classname="shiny"), ObjectList([ InlinePanel('speakers', label="Speakers"), ], heading='Speakers'), ]).bind_to_model(EventPage) def test_get_form_class(self): EventPageForm = self.EventPageTabbedInterface.get_form_class(EventPage) form = EventPageForm() # form must include the 'speakers' formset required by the speakers InlinePanel self.assertIn('speakers', form.formsets) # form must respect any overridden widgets self.assertEqual(type(form.fields['title'].widget), forms.Textarea) def test_render(self): EventPageForm = self.EventPageTabbedInterface.get_form_class(EventPage) event = EventPage(title='Abergavenny sheepdog trials') form = EventPageForm(instance=event) tabbed_interface = self.EventPageTabbedInterface( instance=event, form=form ) result = tabbed_interface.render() # result should contain tab buttons self.assertIn('<a href="#event-details" class="active">Event details</a>', result) self.assertIn('<a href="#speakers" class="">Speakers</a>', result) # result should contain tab panels self.assertIn('<div class="tab-content">', result) self.assertIn('<section id="event-details" class="shiny active">', result) self.assertIn('<section id="speakers" class=" ">', result) # result should contain rendered content from descendants self.assertIn('Abergavenny sheepdog trials</textarea>', result) # this result should not include fields that are not covered by the panel definition self.assertNotIn('signup_link', result) def test_required_fields(self): # required_fields should report the set of form fields to be rendered recursively by children of TabbedInterface result = set(self.EventPageTabbedInterface.required_fields()) self.assertEqual(result, set(['title', 'date_from', 'date_to'])) def test_render_form_content(self): EventPageForm = self.EventPageTabbedInterface.get_form_class(EventPage) event = EventPage(title='Abergavenny sheepdog trials') form = EventPageForm(instance=event) tabbed_interface = self.EventPageTabbedInterface( instance=event, form=form ) result = tabbed_interface.render_form_content() # rendered output should contain field content as above self.assertIn('Abergavenny sheepdog trials</textarea>', result) # rendered output should NOT include fields that are in the model but not represented # in the panel definition self.assertNotIn('signup_link', result)