Skip to content

Commit d648f26

Browse files
authored
Merge pull request #16 from mbourqui/fix/#14
Fix/#14
2 parents c6ed6c1 + fc8a260 commit d648f26

File tree

5 files changed

+47
-3
lines changed

5 files changed

+47
-3
lines changed

echoices/fields.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,9 @@ def to_python(self, value):
5959
return self.echoices[value]
6060

6161
def get_prep_value(self, value):
62-
if value:
62+
if isinstance(value, self.echoices):
6363
return value.value
64+
assert value in self.echoices.values() or value in ['', None]
6465
return value
6566

6667
def deconstruct(self):

echoices/tests/admin.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from django.contrib import admin
2+
3+
from .models import TestCharChoicesModel
4+
5+
admin.site.register(TestCharChoicesModel)

echoices/tests/settings.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,17 @@
2727
},
2828
}
2929

30-
MIDDLEWARE_CLASSES = [
30+
MIDDLEWARE = [
3131
'django.contrib.sessions.middleware.SessionMiddleware',
3232
'django.contrib.auth.middleware.AuthenticationMiddleware',
3333
'django.contrib.messages.middleware.MessageMiddleware',
3434
'django.middleware.common.CommonMiddleware',
3535
]
36+
MIDDLEWARE_CLASSES = MIDDLEWARE # Django < 1.10
3637

3738
LANGUAGE_CODE = 'en'
3839

39-
# ROOT_URLCONF = 'echoices.tests.urls'
40+
ROOT_URLCONF = 'echoices.tests.urls'
4041

4142
# MEDIA CONFIGURATION
4243
# ------------------------------------------------------------------------------

echoices/tests/tests.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from distutils.version import StrictVersion
55

66
from django import get_version as django_version
7+
from django.contrib.auth.models import User
78
from django.db import models
89
from django.template import Context, Template
910
from django.test import TestCase
@@ -253,6 +254,19 @@ def test_create_instance_default(self):
253254
self.assertIs(instance._meta.fields[1].get_default(), ETestStrChoices.FIELD1)
254255
instance.delete()
255256

257+
def test_update(self):
258+
instance = TestEChoiceFieldEStrChoicesModel.objects.create(choice=ETestStrChoices.FIELD1)
259+
choice = instance.choice
260+
self.assertIsInstance(choice, ETestStrChoices)
261+
self.assertIs(choice, ETestStrChoices.FIELD1)
262+
instance.choice = ETestStrChoices.FIELD2
263+
instance.save()
264+
instance = TestEChoiceFieldEStrChoicesModel.objects.get(pk=1)
265+
choice = instance.choice
266+
self.assertIsInstance(choice, ETestStrChoices)
267+
self.assertIs(choice, ETestStrChoices.FIELD2)
268+
instance.delete()
269+
256270

257271
class ChoiceIntFieldTest(TestCase):
258272
def test_create_empty_instance(self):
@@ -444,3 +458,20 @@ def test_iteration(self):
444458
self.assertIn(e.name, rendered)
445459
self.assertIn(e.value, rendered)
446460
self.assertIn(e.label, rendered)
461+
462+
463+
class AdminTest(TestCase):
464+
def setUp(self):
465+
User.objects.create_superuser('admin', 'admin@tests.com', 'admin')
466+
self.client.login(username='admin', password='admin')
467+
468+
def test_admin(self):
469+
self.assertEqual(self.client.get('/admin/').status_code, 200)
470+
self.assertEqual(self.client.get('/admin/tests/').status_code, 200)
471+
472+
def test_admin_testcharchoicesmodel(self):
473+
TestCharChoicesModel.objects.create(choice=ETestCharChoices.FIELD1.value)
474+
for param in ['', '?choice__exact=u']:
475+
response = self.client.get('/admin/tests/testcharchoicesmodel/' + param)
476+
self.assertEqual(response.status_code, 200)
477+
self.assertInHTML('<p class="paginator">1 test char choices model</p>', response.rendered_content)

echoices/tests/urls.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from django.conf.urls import url
2+
from django.contrib import admin
3+
4+
urlpatterns = [
5+
url(r'^admin/', admin.site.urls),
6+
]

0 commit comments

Comments
 (0)