diff --git a/demo/demoapp/testing/__init__.py b/demo/demoapp/testing/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/demo/demoapp/testing/test_base.py b/demo/demoapp/testing/test_base.py new file mode 100644 index 00000000..429e53f2 --- /dev/null +++ b/demo/demoapp/testing/test_base.py @@ -0,0 +1,65 @@ +from django.test import TestCase, SimpleTestCase +from django.forms.renderers import DjangoTemplates + +class WidgetTest(SimpleTestCase): + + @classmethod + def setUpClass(cls): + cls.django_renderer = DjangoTemplates() + super().setUpClass() + + def check_html(self, widget, name, value, html='', attrs=None, strict=False, **kwargs): + assertEqual = self.assertEqual if strict else self.assertHTMLEqual + output = widget.render(name, value, attrs=attrs, + renderer=self.django_renderer, **kwargs) + assertEqual(output, html) + + def check_type(self, widget, data_type): + widget = widget.input_type + self.assertEquals(widget, data_type) + + def check_render_none(self, widget, html): + self.check_html(widget, '', None, + html=html) + + def check_value_size(self, widget,value, size): + + attrs = widget.get_context(name='name', value=None, attrs={})[ + 'widget']['attrs'] + attrs['value']=value + + self.assertEquals(len(attrs['value']), size) + + def check_find_at_Sign(self,widget, value): + + attrs = widget.get_context(name='name', value=None, attrs={'value':value})[ + 'widget']['attrs'] + + self.assertNotEquals(attrs['value'].find('@'), -1) + + def check_attrs(self, widget, attrs={}): + self.assertEquals(widget.attrs, attrs) + + def check_constructor_attrs(self, widget, attrs): + attributes = widget.get_context(name='name', value=None, attrs={})[ + 'widget']['attrs'] + self.assertEquals(attributes, attrs) + + def check_render_custom_attrs(self, widget, name, value, attrs, html): + self.check_html(widget, name, value, attrs=attrs, + html=html,) + + + def check_template_name(self,widget,template_name): + template = widget.template_name + self.assertEqual(template, template_name) + + def check_value_output(self, widget,name, value): + + attrs = widget.get_context(name=name, value=None, attrs={'value':value})['widget']['attrs'] + self.assertEquals(attrs['value'], value) + output = self.widget.render(name, None, attrs={ + 'value': attrs['value']}, renderer=self.django_renderer) + self.assertHTMLEqual( + output, ''%('text',name,attrs['class'],attrs['data-widget'],value)) + diff --git a/demo/demoapp/testing/test_dateranges.py b/demo/demoapp/testing/test_dateranges.py new file mode 100644 index 00000000..65601d6c --- /dev/null +++ b/demo/demoapp/testing/test_dateranges.py @@ -0,0 +1,54 @@ +from .test_base import WidgetTest +from djgentelella.widgets import core as widgets +from datetime import datetime,date + +class DateRangeTest(WidgetTest): + widget=widgets.DateRangeInput() + + def test_type(self): + self.check_type(self.widget,'text') + + def test_template_name(self): + self.check_template_name(self.widget,'gentelella/widgets/daterange.html') + + def test_element(self): + self.assertIn('class', self.widget.render('name', None, attrs={}, renderer=self.django_renderer) + ) + def test_attrs(self): + self.assertHTMLEqual(self.widget.render('date', "%s - %s")% (date(2020, 11, 2), date(2020, 12, 2)), + '', + ) + +class DateRangeCustomTest(WidgetTest): + widget=widgets.DateRangeInputCustom() + + def test_type(self): + self.check_type(self.widget,'text') + + def test_template_name(self): + self.check_template_name(self.widget,'gentelella/widgets/daterange.html') + + def test_element(self): + self.assertIn('class', self.widget.render('name', None, attrs={}, renderer=self.django_renderer) + ) + def test_attrs(self): + self.assertHTMLEqual(self.widget.render('date', "%s - %s")% (date(2020, 11, 2), date(2020, 12, 2)), + '', + ) + +class DateRangeTimeTest(WidgetTest): + widget=widgets.DateRangeTimeInput() + + def test_type(self): + self.check_type(self.widget,'text') + + def test_template_name(self): + self.check_template_name(self.widget,'gentelella/widgets/daterangetime.html') + + def test_element(self): + self.assertIn('class', self.widget.render('name', None, attrs={}, renderer=self.django_renderer) + ) + def test_attrs(self): + self.assertHTMLEqual(self.widget.render('date', "%s - %s")% (datetime(2020, 11, 2,12,10), datetime(2020, 12, 2,12,10)), + '', + ) diff --git a/demo/demoapp/testing/test_inputmask.py b/demo/demoapp/testing/test_inputmask.py new file mode 100644 index 00000000..317438d9 --- /dev/null +++ b/demo/demoapp/testing/test_inputmask.py @@ -0,0 +1,157 @@ +from djgentelella.widgets import core as widgets +from datetime import datetime,date +from .test_base import WidgetTest + +class DateMask(WidgetTest): + widget = widgets.DateMaskInput() + def test_format(self): + format = self.widget.format_key + self.assertEqual(format, 'DATE_FORMAT') + + def test_render_none(self): + self.check_html(self.widget, 'date', None, + html='') + + def test_string(self): + self.check_html(self.widget, 'date', '2020-12-31', html=( + '')) + + def test_template_name(self): + self.check_template_name(self.widget,'gentelella/widgets/date_input_mask.html') + + def test_type(self): + self.check_type(self.widget,'text') + + +class PhoneNumberMask(WidgetTest): + widget = widgets.PhoneNumberMaskInput() + + def test_type(self): + self.check_type(self.widget,'text') + + def test_render_none(self): + self.check_render_none(self.widget,'') + + def test_value_output(self): + self.check_value_output(self.widget,'phone','8999-00-00') + + def test_value_size(self): + self.check_value_size(self.widget,'8920-3214',9) + + def test_attrs(self): + self.assertEquals(self.widget.attrs, {'class': 'form-control ', + 'data-widget': 'PhoneNumberMaskInput'}) + + def test_constructor_attrs(self): + self.check_constructor_attrs(self.widget,{'class': 'form-control ','data-widget': 'PhoneNumberMaskInput'}) + + def test_render_custom_attrs(self): + self.check_render_custom_attrs(self.widget,'phone','(505)8948-62-29',{'class': 'phones'}, + '') + + def test_template_name(self): + self.check_template_name(self.widget,'gentelella/widgets/input_mask.html') + +class TaxIDMaskInput(WidgetTest): + widget = widgets.TaxIDMaskInput() + + def test_type(self): + self.check_type(self.widget,'text') + + def test_render_none(self): + self.check_render_none(self.widget,'') + + def test_value_output(self, **kwargs): + self.check_value_output(self.widget,'taxid','113-3141') + + def test_value_size(self, **kwargs): + self.check_value_size(self.widget,'31141',5) + + def test_constructor_attrs(self): + self.check_constructor_attrs(self.widget, {'class': 'form-control ', + 'data-widget': 'TaxIDMaskInput'}) + + def test_render_custom_attrs(self): + self.check_html(self.widget, 'taxid', '12-314', attrs={'class': 'tax'}, + html='', + ) + def test_template_name(self): + self.check_template_name(self.widget,'gentelella/widgets/input_mask.html') + + +class SerialNumberMaskInputTest(WidgetTest): + widget = widgets.SerialNumberMaskInput() + + def test_type(self): + self.check_type(self.widget,'text') + def test_render_none(self): + self.check_render_none(self.widget,'') + + def test_value_output(self, **kwargs): + self.check_value_output(self.widget,'serial','31141') + + def test_value_size(self, **kwargs): + self.check_value_size(self.widget,'414-45267',9) + + def test_constructor_attrs(self): + self.check_constructor_attrs(self.widget,{'class': 'form-control ','data-widget': 'SerialNumberMaskInput'}) + + def test_render_custom_attrs(self): + self.check_render_custom_attrs(self.widget,'serial','33-2131',{'class':'serial'}, + '', + ) + def test_template_name(self): + self.check_template_name(self.widget,'gentelella/widgets/input_mask.html') + +class CreditCardMaskInputTest(WidgetTest): + widget = widgets.CreditCardMaskInput() + + def test_type(self): + self.check_type(self.widget,'text') + + def test_render_none(self): + self.check_render_none(self.widget,'') + + def test_value_output(self): + self.check_value_output(self.widget,'credit','31141') + + def test_value_size(self, **kwargs): + self.check_value_size(self.widget,'414-45267',9) + + def test_constructor_attrs(self): + self.check_constructor_attrs(self.widget,{'class': 'form-control ','data-widget': 'CreditCardMaskInput'}) + + def test_render_custom_attrs(self): + self.check_render_custom_attrs(self.widget, 'credit', '33-2131',{'class': 'credit'}, + '') + def test_template_name(self): + self.check_template_name(self.widget,'gentelella/widgets/input_mask.html') + +class EmailMaskInputTest(WidgetTest): + widget = widgets.EmailMaskInput() + + def test_type(self): + self.check_type(self.widget, 'text') + + def test_render_none(self): + self.check_render_none( + self.widget, '') + + def test_value_output(self): + self.check_value_output(self.widget,'email','J@gmail.com' ) + + def test_value_size(self): + self.check_value_size(self.widget,'414-45267', 9) + + def test_find_at_Sign(self): + self.check_find_at_Sign(self.widget,'ksjifason@gmail.com') + + def test_attrs(self): + self.check_attrs(self.widget,{'class': 'form-control ','data-widget': 'EmailMaskInput'}) + + def test_render_custom_attrs(self): + self.check_render_custom_attrs(self.widget,'email','kenjen@gmail.com',{'class':'email'}, + '') + def test_template_name(self): + self.check_template_name(self.widget,'gentelella/widgets/email_input_mask.html') + diff --git a/demo/demoapp/testing/test_wysiwyg.py b/demo/demoapp/testing/test_wysiwyg.py new file mode 100644 index 00000000..61dcd19c --- /dev/null +++ b/demo/demoapp/testing/test_wysiwyg.py @@ -0,0 +1,23 @@ +from .test_base import WidgetTest +from djgentelella.widgets import wysiwyg as widgets + +class TextareaWysiwygTest(WidgetTest): + widget=widgets.TextareaWysiwyg() + + def test_attrs_options(self): + attrs = self.widget.get_context(name='name', value=None, attrs={})['widget']['attrs'] + + self.assertEquals(attrs['data-option-video'], "/upload_video") + self.assertEquals(attrs['data-option-image'], "/upload_image") + self.assertEquals(attrs['data-option-file'], "/upload_file") + + def test_attrs_class(self): + attrs = self.widget.get_context(name='name', value=None, attrs={})['widget']['attrs'] + self.assertEquals(attrs['class'], "froala-editor form-control") + + def test_render_none(self): + self.check_render_none( + self.widget, '') + + def test_template_name(self): + self.check_template_name(self.widget,'gentelella/widgets/wysiwygtwo.html') diff --git a/demo/demoapp/tests.py b/demo/demoapp/tests.py index 7ce503c2..0fabb9f5 100644 --- a/demo/demoapp/tests.py +++ b/demo/demoapp/tests.py @@ -1,3 +1 @@ -from django.test import TestCase - -# Create your tests here. +from django.test import TestCase \ No newline at end of file diff --git a/djgentelella/templates/gentelella/widgets/daterange.html b/djgentelella/templates/gentelella/widgets/daterange.html index cb45dfe7..f835b169 100644 --- a/djgentelella/templates/gentelella/widgets/daterange.html +++ b/djgentelella/templates/gentelella/widgets/daterange.html @@ -1,8 +1,3 @@ -