You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_widgets.py 1.8KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from django import forms
  2. from django.test import TestCase, override_settings
  3. from oscar.apps.dashboard.widgets import RelatedFieldWidgetWrapper
  4. from oscar.test.factories import Member
  5. @override_settings(ROOT_URLCONF='oscar.test.factories.urls')
  6. class RelatedFieldWidgetWrapperTests(TestCase):
  7. def test_custom_widget_render(self):
  8. class CustomWidget(forms.Select):
  9. def render(self, *args, **kwargs):
  10. return 'custom render output'
  11. remote_field = Member._meta.get_field('band').remote_field
  12. widget = CustomWidget()
  13. wrapper = RelatedFieldWidgetWrapper(widget, remote_field)
  14. output = wrapper.render('name', 'value')
  15. self.assertIn('custom render output', output)
  16. def test_widget_delegates_value_omitted_from_data(self):
  17. class CustomWidget(forms.Select):
  18. def value_omitted_from_data(self, data, files, name):
  19. return False
  20. remote_field = Member._meta.get_field('band').remote_field
  21. widget = CustomWidget()
  22. wrapper = RelatedFieldWidgetWrapper(widget, remote_field)
  23. self.assertIs(wrapper.value_omitted_from_data({}, {}, 'band'), False)
  24. def test_widget_render(self):
  25. remote_field = Member._meta.get_field('band').remote_field
  26. widget = forms.Select()
  27. wrapper = RelatedFieldWidgetWrapper(widget, remote_field)
  28. context = wrapper.get_context('name', 'value', None)
  29. self.assertTrue(context, 'rendered_widget')
  30. self.assertTrue(context, 'name')
  31. self.assertTrue(context, 'url_params')
  32. self.assertTrue(context, 'model')
  33. self.assertTrue(context, 'add_related_url')
  34. self.assertTrue(context, 'change_related_template_url')
  35. self.assertTrue(context, 'delete_related_template_url')