Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

test_widgets.py 2.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from django import VERSION as DJANGO_VERSION
  2. from django import forms
  3. from django.test import override_settings
  4. from oscar.core.loading import get_class
  5. from oscar.test.factories import Member
  6. from oscar.test.testcases import WebTestCase
  7. RelatedFieldWidgetWrapper = get_class('dashboard.widgets',
  8. 'RelatedFieldWidgetWrapper')
  9. @override_settings(ROOT_URLCONF='oscar.test.factories.urls')
  10. class RelatedFieldWidgetWrapperTests(WebTestCase):
  11. def test_custom_widget_render(self):
  12. class CustomWidget(forms.Select):
  13. def render(self, *args, **kwargs):
  14. return 'custom render output'
  15. # The "Field.rel" attribute was renamed to "remote_field" in Django 1.9
  16. # Documentation URL: <https://docs.djangoproject.com/en/1.11/releases/1.9/#field-rel-changes>
  17. if DJANGO_VERSION < (1, 9):
  18. rel = Member._meta.get_field('band').rel
  19. else:
  20. rel = Member._meta.get_field('band').remote_field
  21. widget = CustomWidget()
  22. wrapper = RelatedFieldWidgetWrapper(widget, rel)
  23. output = wrapper.render('name', 'value')
  24. self.assertIn('custom render output', output)
  25. def test_widget_delegates_value_omitted_from_data(self):
  26. class CustomWidget(forms.Select):
  27. def value_omitted_from_data(self, data, files, name):
  28. return False
  29. # The "Field.rel" attribute was renamed to "remote_field" in Django 1.9
  30. # Documentation URL: <https://docs.djangoproject.com/en/1.11/releases/1.9/#field-rel-changes>
  31. if DJANGO_VERSION < (1, 9):
  32. rel = Member._meta.get_field('band').rel
  33. else:
  34. rel = Member._meta.get_field('band').remote_field
  35. widget = CustomWidget()
  36. wrapper = RelatedFieldWidgetWrapper(widget, rel)
  37. self.assertIs(wrapper.value_omitted_from_data({}, {}, 'band'), False)
  38. def test_widget_render(self):
  39. # The "Field.rel" attribute was renamed to "remote_field" in Django 1.9
  40. # Documentation URL: <https://docs.djangoproject.com/en/1.11/releases/1.9/#field-rel-changes>
  41. if DJANGO_VERSION < (1, 9):
  42. rel = Member._meta.get_field('band').rel
  43. else:
  44. rel = Member._meta.get_field('band').remote_field
  45. widget = forms.Select()
  46. wrapper = RelatedFieldWidgetWrapper(widget, rel)
  47. context = wrapper.get_context('name', 'value', None)
  48. self.assertTrue(context, 'rendered_widget')
  49. self.assertTrue(context, 'name')
  50. self.assertTrue(context, 'url_params')
  51. self.assertTrue(context, 'model')
  52. self.assertTrue(context, 'add_related_url')
  53. self.assertTrue(context, 'change_related_template_url')
  54. self.assertTrue(context, 'delete_related_template_url')