def test_override_page_type(self): # Model has a foreign key to Page, but we specify EventPage in the PageChooserPanel # to restrict the chooser to that page type MyPageChooserPanel = PageChooserPanel('page', 'tests.EventPage').bind_to_model(EventPageChooserModel) PageChooserForm = MyPageChooserPanel.get_form_class(EventPageChooserModel) form = PageChooserForm(instance=self.test_instance) page_chooser_panel = self.MyPageChooserPanel(instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", "{model}", {parent});'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result)
def test_autodetect_page_type(self): # Model has a foreign key to EventPage, which we want to autodetect # instead of specifying the page type in PageChooserPanel MyPageChooserPanel = PageChooserPanel('page').bind_to_model(EventPageChooserModel) PageChooserForm = MyPageChooserPanel.get_form_class(EventPageChooserModel) form = PageChooserForm(instance=self.test_instance) page_chooser_panel = self.MyPageChooserPanel(instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", "{model}", {parent});'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result)
def test_render_js_init_with_can_choose_root_true(self): # construct an alternative page chooser panel object, with can_choose_root=True MyPageChooserPanel = PageChooserPanel('page', can_choose_root=True).bind_to_model(PageChooserModel) PageChooserForm = MyPageChooserPanel.get_form_class(PageChooserModel) form = PageChooserForm(instance=self.test_instance) page_chooser_panel = MyPageChooserPanel(instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() # the canChooseRoot flag on createPageChooser should now be true expected_js = 'createPageChooser("{id}", ["{model}"], {parent}, true);'.format( id="id_page", model="wagtailcore.page", parent=self.events_index_page.id) self.assertIn(expected_js, result)
def test_autodetect_page_type(self): # Model has a foreign key to EventPage, which we want to autodetect # instead of specifying the page type in PageChooserPanel MyPageChooserPanel = PageChooserPanel('page').bind_to_model(EventPageChooserModel) PageChooserForm = MyPageChooserPanel.get_form_class(EventPageChooserModel) form = PageChooserForm(instance=self.test_instance) page_chooser_panel = self.MyPageChooserPanel(instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", ["{model}"], {parent}, false);'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result)
def test_override_page_type(self): # Model has a foreign key to Page, but we specify EventPage in the PageChooserPanel # to restrict the chooser to that page type MyPageChooserPanel = PageChooserPanel('page', 'tests.EventPage').bind_to_model(EventPageChooserModel) PageChooserForm = MyPageChooserPanel.get_form_class(EventPageChooserModel) form = PageChooserForm(instance=self.test_instance) page_chooser_panel = self.MyPageChooserPanel(instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", ["{model}"], {parent}, false);'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result)
def test_render_js_init_with_can_choose_root_true(self): # construct an alternative page chooser panel object, with can_choose_root=True MyPageChooserPanel = PageChooserPanel('page', can_choose_root=True).bind_to_model(PageChooserModel) PageChooserForm = MyPageChooserPanel.get_form_class(PageChooserModel) form = PageChooserForm(instance=self.test_instance) page_chooser_panel = MyPageChooserPanel(instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() # the canChooseRoot flag on createPageChooser should now be true expected_js = 'createPageChooser("{id}", ["{model}"], {parent}, true);'.format( id="id_page", model="wagtailcore.page", parent=self.events_index_page.id) self.assertIn(expected_js, result)
class TestPageChooserPanel(TestCase): fixtures = ['test.json'] def setUp(self): model = PageChooserModel # a model with a foreign key to Page which we want to render as a page chooser # a PageChooserPanel class that works on PageChooserModel's 'page' field self.MyPageChooserPanel = PageChooserPanel('page').bind_to_model(PageChooserModel) # build a form class containing the fields that MyPageChooserPanel wants self.PageChooserForm = self.MyPageChooserPanel.get_form_class(PageChooserModel) # a test instance of PageChooserModel, pointing to the 'christmas' page self.christmas_page = Page.objects.get(slug='christmas') self.events_index_page = Page.objects.get(slug='events') self.test_instance = model.objects.create(page=self.christmas_page) self.form = self.PageChooserForm(instance=self.test_instance) self.page_chooser_panel = self.MyPageChooserPanel(instance=self.test_instance, form=self.form) def test_page_chooser_uses_correct_widget(self): self.assertEqual(type(self.form.fields['page'].widget), AdminPageChooser) def test_render_js_init(self): result = self.page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", "{model}", {parent});'.format( id="id_page", model="wagtailcore.page", parent=self.events_index_page.id) self.assertIn(expected_js, result) def test_get_chosen_item(self): result = self.page_chooser_panel.get_chosen_item() self.assertEqual(result, self.christmas_page) def test_render_as_field(self): result = self.page_chooser_panel.render_as_field() self.assertIn('<p class="help">help text</p>', result) self.assertIn('<span class="title">Christmas</span>', result) self.assertIn( '<a href="/admin/pages/%d/edit/" class="edit-link button button-small button-secondary" target="_blank">Edit this page</a>' % self.christmas_page.id, result) def test_render_error(self): form = self.PageChooserForm({'page': ''}, instance=self.test_instance) self.assertFalse(form.is_valid()) page_chooser_panel = self.MyPageChooserPanel(instance=self.test_instance, form=form) self.assertIn('<span>This field is required.</span>', page_chooser_panel.render_as_field()) def test_override_page_type(self): # Model has a foreign key to Page, but we specify EventPage in the PageChooserPanel # to restrict the chooser to that page type MyPageChooserPanel = PageChooserPanel('page', 'tests.EventPage').bind_to_model(EventPageChooserModel) PageChooserForm = MyPageChooserPanel.get_form_class(EventPageChooserModel) form = PageChooserForm(instance=self.test_instance) page_chooser_panel = self.MyPageChooserPanel(instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", "{model}", {parent});'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result) def test_autodetect_page_type(self): # Model has a foreign key to EventPage, which we want to autodetect # instead of specifying the page type in PageChooserPanel MyPageChooserPanel = PageChooserPanel('page').bind_to_model(EventPageChooserModel) PageChooserForm = MyPageChooserPanel.get_form_class(EventPageChooserModel) form = PageChooserForm(instance=self.test_instance) page_chooser_panel = self.MyPageChooserPanel(instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", "{model}", {parent});'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result) def test_target_content_type(self): result = PageChooserPanel( 'barbecue', 'wagtailcore.site' ).bind_to_model(PageChooserModel).target_content_type() self.assertEqual(result.name, 'site') def test_target_content_type_malformed_type(self): result = PageChooserPanel( 'barbecue', 'snowman' ).bind_to_model(PageChooserModel) self.assertRaises(ImproperlyConfigured, result.target_content_type) def test_target_content_type_nonexistent_type(self): result = PageChooserPanel( 'barbecue', 'snowman.lorry' ).bind_to_model(PageChooserModel) self.assertRaises(ImproperlyConfigured, result.target_content_type)
class TestPageChooserPanel(TestCase): fixtures = ['test.json'] def setUp(self): model = PageChooserModel # a model with a foreign key to Page which we want to render as a page chooser # a PageChooserPanel class that works on PageChooserModel's 'page' field self.MyPageChooserPanel = PageChooserPanel('page').bind_to_model( PageChooserModel) # build a form class containing the fields that MyPageChooserPanel wants self.PageChooserForm = self.MyPageChooserPanel.get_form_class( PageChooserModel) # a test instance of PageChooserModel, pointing to the 'christmas' page self.christmas_page = Page.objects.get(slug='christmas') self.events_index_page = Page.objects.get(slug='events') self.test_instance = model.objects.create(page=self.christmas_page) self.form = self.PageChooserForm(instance=self.test_instance) self.page_chooser_panel = self.MyPageChooserPanel( instance=self.test_instance, form=self.form) def test_page_chooser_uses_correct_widget(self): self.assertEqual(type(self.form.fields['page'].widget), AdminPageChooser) def test_render_js_init(self): result = self.page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", "{model}", {parent});'.format( id="id_page", model="wagtailcore.page", parent=self.events_index_page.id) self.assertIn(expected_js, result) def test_get_chosen_item(self): result = self.page_chooser_panel.get_chosen_item() self.assertEqual(result, self.christmas_page) def test_render_as_field(self): result = self.page_chooser_panel.render_as_field() self.assertIn('<p class="help">help text</p>', result) self.assertIn('<span class="title">Christmas</span>', result) self.assertIn( '<a href="/admin/pages/%d/edit/" class="edit-link button button-small button-secondary" target="_blank">Edit this page</a>' % self.christmas_page.id, result) def test_render_error(self): form = self.PageChooserForm({'page': ''}, instance=self.test_instance) self.assertFalse(form.is_valid()) page_chooser_panel = self.MyPageChooserPanel( instance=self.test_instance, form=form) self.assertIn('<span>This field is required.</span>', page_chooser_panel.render_as_field()) def test_override_page_type(self): # Model has a foreign key to Page, but we specify EventPage in the PageChooserPanel # to restrict the chooser to that page type MyPageChooserPanel = PageChooserPanel( 'page', 'tests.EventPage').bind_to_model(EventPageChooserModel) PageChooserForm = MyPageChooserPanel.get_form_class( EventPageChooserModel) form = PageChooserForm(instance=self.test_instance) page_chooser_panel = self.MyPageChooserPanel( instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", "{model}", {parent});'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result) def test_autodetect_page_type(self): # Model has a foreign key to EventPage, which we want to autodetect # instead of specifying the page type in PageChooserPanel MyPageChooserPanel = PageChooserPanel('page').bind_to_model( EventPageChooserModel) PageChooserForm = MyPageChooserPanel.get_form_class( EventPageChooserModel) form = PageChooserForm(instance=self.test_instance) page_chooser_panel = self.MyPageChooserPanel( instance=self.test_instance, form=form) result = page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", "{model}", {parent});'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result) def test_target_content_type(self): result = PageChooserPanel('barbecue', 'wagtailcore.site').bind_to_model( PageChooserModel).target_content_type() self.assertEqual(result.name, 'site') def test_target_content_type_malformed_type(self): result = PageChooserPanel('barbecue', 'snowman').bind_to_model(PageChooserModel) self.assertRaises(ImproperlyConfigured, result.target_content_type) def test_target_content_type_nonexistent_type(self): result = PageChooserPanel( 'barbecue', 'snowman.lorry').bind_to_model(PageChooserModel) self.assertRaises(ImproperlyConfigured, result.target_content_type)
class TestPageChooserPanel(TestCase): fixtures = ['test.json'] def setUp(self): model = PageChooserModel # a model with a foreign key to Page which we want to render as a page chooser # a PageChooserPanel class that works on PageChooserModel's 'page' field self.MyPageChooserPanel = PageChooserPanel('page', 'tests.EventPage') # build a form class containing the fields that MyPageChooserPanel wants self.PageChooserForm = self.MyPageChooserPanel.get_form_class( PageChooserModel) # a test instance of PageChooserModel, pointing to the 'christmas' page self.christmas_page = Page.objects.get(slug='christmas') self.events_index_page = Page.objects.get(slug='events') self.test_instance = model.objects.create(page=self.christmas_page) self.form = self.PageChooserForm(instance=self.test_instance) # self.form.errors['page'] = self.form.error_class(['errors']) # FIXME: wat self.page_chooser_panel = self.MyPageChooserPanel( instance=self.test_instance, form=self.form) def test_page_chooser_uses_correct_widget(self): self.assertEqual(type(self.form.fields['page'].widget), AdminPageChooser) def test_render_js_init(self): result = self.page_chooser_panel.render_as_field() expected_js = 'createPageChooser("{id}", "{model}", {parent});'.format( id="id_page", model="tests.eventpage", parent=self.events_index_page.id) self.assertIn(expected_js, result) def test_get_chosen_item(self): result = self.page_chooser_panel.get_chosen_item() self.assertEqual(result, self.christmas_page) def test_render_as_field(self): result = self.page_chooser_panel.render_as_field() self.assertIn('<p class="help">help text</p>', result) def test_render_error(self): form = self.PageChooserForm({'page': ''}, instance=self.test_instance) self.assertFalse(form.is_valid()) page_chooser_panel = self.MyPageChooserPanel( instance=self.test_instance, form=form) self.assertIn('<span>This field is required.</span>', page_chooser_panel.render_as_field()) def test_target_content_type(self): result = PageChooserPanel('barbecue', 'wagtailcore.site').target_content_type() self.assertEqual(result.name, 'site') def test_target_content_type_malformed_type(self): result = PageChooserPanel('barbecue', 'snowman') self.assertRaises(ImproperlyConfigured, result.target_content_type) def test_target_content_type_nonexistent_type(self): result = PageChooserPanel('barbecue', 'snowman.lorry') self.assertRaises(ImproperlyConfigured, result.target_content_type)