Merge pull request #161 from bcail/master

Fixed Select2Mixin hashedSelector
This commit is contained in:
Johannes Hoppe 2015-04-08 17:55:10 +02:00
commit 3126434a8f
4 changed files with 34 additions and 3 deletions

View file

@ -184,8 +184,9 @@ class Select2Mixin(object):
"""
options = json.dumps(self.get_options())
options = options.replace('"*START*', '').replace('*END*"', '')
# selector variable must already be passed to this
return '$(hashedSelector).select2(%s);' % (options)
js = 'var hashedSelector = "#" + "%s";' % id_
js += '$(hashedSelector).select2(%s);' % (options)
return js
def render(self, name, value, attrs=None, choices=()):
"""

View file

@ -1,6 +1,10 @@
# -*- coding:utf-8 -*-
from __future__ import print_function, unicode_literals
import pytest
from django.core.urlresolvers import reverse
from selenium.common.exceptions import NoSuchElementException
class TestWidgets(object):
url = ""
@ -14,3 +18,18 @@ class TestWidgets(object):
from django_select2.widgets import HeavySelect2Widget
new_widget = HeavySelect2Widget(data_url="/")
assert new_widget.is_hidden is False
class TestSelect2Widget(object):
url = reverse('select2_widget')
def test_selecting(self, db, client, live_server, driver):
driver.get(live_server + self.url)
dropdown = driver.find_element_by_css_selector('.select2-results')
assert dropdown.is_displayed() is False
elem = driver.find_element_by_css_selector('.select2-choice')
elem.click()
assert dropdown.is_displayed() is True
with pytest.raises(NoSuchElementException):
error = driver.find_element_by_xpath('//body[@JSError]')
pytest.fail(error.get_attribute('JSError'))

View file

@ -4,6 +4,7 @@ from __future__ import absolute_import, unicode_literals
from django import forms
from django_select2.fields import Select2MultipleWidget
from django_select2.widgets import Select2Widget
from tests.testapp import models
from . import fields
@ -51,3 +52,11 @@ class AlbumModelForm(forms.ModelForm):
class AlbumForm(forms.Form):
title = forms.CharField(max_length=255)
artist = fields.ArtistField()
class Select2WidgetForm(forms.Form):
NUMBER_CHOICES = [ (1, 'One'),
(2, 'Two'),
(3, 'Three'),
(4, 'Four') ]
number = forms.ChoiceField(widget=Select2Widget(), choices=NUMBER_CHOICES)

View file

@ -3,11 +3,13 @@ from __future__ import absolute_import, unicode_literals
from django.conf.urls import include, patterns, url
from .forms import ArtistForm
from .forms import ArtistForm, Select2WidgetForm
from .views import TemplateFormView
urlpatterns = patterns(
'',
url(r'select2_widget',
TemplateFormView.as_view(form_class=Select2WidgetForm), name='select2_widget'),
url(r'single_value_model_field',
TemplateFormView.as_view(form_class=ArtistForm), name='single_value_model_field'),