Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
65 changes: 65 additions & 0 deletions demo/demoapp/testing/test_base.py
Original file line number Diff line number Diff line change
@@ -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, '<input type="%s" name="%s" class="%s" data-widget="%s" value="%s">'%('text',name,attrs['class'],attrs['data-widget'],value))

54 changes: 54 additions & 0 deletions demo/demoapp/testing/test_dateranges.py
Original file line number Diff line number Diff line change
@@ -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)),
'<input class="form-control" data-widget="DateRangeInput" name="date" type="text" value="2020-11-02 - 2020-12-02">',
)

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)),
'<input class="form-control" data-widget="DateRangeInputCustom" name="date" type="text" value="2020-11-02 - 2020-12-02">',
)

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)),
'<input class="form-control" data-widget="DateRangeTimeInput" name="date" type="text" value="2020-11-02 12:10:00 - 2020-12-02 12:10:00">',
)
157 changes: 157 additions & 0 deletions demo/demoapp/testing/test_inputmask.py
Original file line number Diff line number Diff line change
@@ -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='<input type="text" class="form-control" data-widget="DateMaskInput" name="date">')

def test_string(self):
self.check_html(self.widget, 'date', '2020-12-31', html=(
'<input type="text" name="date" class="form-control" data-widget="DateMaskInput" value="2020-12-31">'))

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,'<input type="text" class="form-control" data-widget="PhoneNumberMaskInput" name="">')

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'},
'<input type="text" name="phone" data-widget="PhoneNumberMaskInput" value="(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,'<input type="text" class="form-control" data-widget="TaxIDMaskInput" name="">')

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='<input type="text" name="taxid" data-widget="TaxIDMaskInput" value="12-314" class="tax">',
)
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,'<input type="text" class="form-control" data-widget="SerialNumberMaskInput" name="">')

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'},
'<input type="text" name="serial" data-widget="SerialNumberMaskInput" value="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,'<input type="text" class="form-control" data-widget="CreditCardMaskInput" name="">')

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'},
'<input type="text" name="credit" data-widget="CreditCardMaskInput" value="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, '<input type="text" class="form-control" data-widget="EmailMaskInput" name="">')

def test_value_output(self):
self.check_value_output(self.widget,'email','[email protected]' )

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,'[email protected]')

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','[email protected]',{'class':'email'},
'<input type="text" name="email" data-widget="EmailMaskInput" value="[email protected]" class="email">')
def test_template_name(self):
self.check_template_name(self.widget,'gentelella/widgets/email_input_mask.html')

23 changes: 23 additions & 0 deletions demo/demoapp/testing/test_wysiwyg.py
Original file line number Diff line number Diff line change
@@ -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, '<textarea class="form-control froala-editor" cols="40" data-option-file="/upload_file" data-option-image="/upload_image" data-option-video="/upload_video" data-widget="TextareaWysiwyg" name="" rows="10" style="overflow:scroll; max-height:300px"></textarea>')

def test_template_name(self):
self.check_template_name(self.widget,'gentelella/widgets/wysiwygtwo.html')
4 changes: 1 addition & 3 deletions demo/demoapp/tests.py
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
from django.test import TestCase

# Create your tests here.
from django.test import TestCase
5 changes: 0 additions & 5 deletions djgentelella/templates/gentelella/widgets/daterange.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,3 @@
<div class="input-group date">
{% with id=widget.attrs.id %}
{% include "gentelella/widgets/input.html" %}
<span class="input-group-addon">
<span class="glyphicon glyphicon-calendar"></span>
</span>
</div>
{% endwith %}
3 changes: 2 additions & 1 deletion djgentelella/templates/gentelella/widgets/wysiwygtwo.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
{% include "gentelella/widgets/wysiwyg.html" %}
<textarea style="overflow:scroll; max-height:300px" name="{{ widget.name }}"{% include "gentelella/widgets/attrs.html" %}>
{% if widget.value %}{{ widget.value }}{% endif %}</textarea>
19 changes: 11 additions & 8 deletions djgentelella/widgets/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -364,11 +364,10 @@ class EmailMaskInput(TextInput):
template_name = 'gentelella/widgets/email_input_mask.html'

def __init__(self, attrs=None):
attrs = update_kwargs(attrs, self.__class__.__name__)

if attrs != None:
attrs = update_kwargs(attrs, self.__class__.__name__)
super().__init__(attrs)


class DateRangeTimeInput(DJDateTimeInput):
format_key = 'DATETIME_INPUT_FORMATS'
template_name = 'gentelella/widgets/daterangetime.html'
Expand Down Expand Up @@ -399,7 +398,8 @@ class SerialNumberMaskInput(TextInput):
template_name='gentelella/widgets/input_mask.html'

def __init__(self, attrs=None, format=None):
attrs = update_kwargs(attrs, self.__class__.__name__)
if attrs != None:
attrs = update_kwargs(attrs, self.__class__.__name__)
super().__init__(attrs)


Expand All @@ -408,15 +408,17 @@ class TaxIDMaskInput(TextInput):
template_name='gentelella/widgets/input_mask.html'

def __init__(self, attrs=None, format=None):
attrs = update_kwargs(attrs, self.__class__.__name__)
if attrs != None:
attrs = update_kwargs(attrs, self.__class__.__name__)
super().__init__(attrs)

class CreditCardMaskInput(TextInput):
input_type='text'
template_name='gentelella/widgets/input_mask.html'

def __init__(self, attrs=None, format=None):
attrs = update_kwargs(attrs, self.__class__.__name__)
if attrs != None:
attrs = update_kwargs(attrs, self.__class__.__name__)
super().__init__(attrs)

class PhoneNumberTwoDigitMaskInput(TextInput):
Expand All @@ -430,10 +432,11 @@ def __init__(self, attrs=None):

class PhoneNumberMaskInput(TextInput):
input_type = 'text'
template_name = 'gentelella/widgets/phone_number_input_mask.html'
template_name = 'gentelella/widgets/input_mask.html'

def __init__(self, attrs=None):
attrs = update_kwargs(attrs, self.__class__.__name__)
if attrs != None:
attrs = update_kwargs(attrs, self.__class__.__name__)

super().__init__(attrs)