mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-06-23 15:03:22 +03:00
remove hardcoded model._meta.many_to_many[0]; update mixin tests to test with 0, 1, or multiple groups
This commit is contained in:
parent
344db0d733
commit
91b9d0b2a3
|
@ -524,8 +524,7 @@ class CreateModelMixin(object):
|
||||||
for field in model._meta.many_to_many:
|
for field in model._meta.many_to_many:
|
||||||
if content.has_key(field.name):
|
if content.has_key(field.name):
|
||||||
m2m_data[field.name] = (
|
m2m_data[field.name] = (
|
||||||
model._meta.many_to_many[0].m2m_reverse_field_name(),
|
field.m2m_reverse_field_name(), content[field.name]
|
||||||
content[field.name]
|
|
||||||
)
|
)
|
||||||
del content[field.name]
|
del content[field.name]
|
||||||
|
|
||||||
|
|
|
@ -63,11 +63,23 @@ class TestModelCreation(TestCase):
|
||||||
|
|
||||||
def url(self, instance):
|
def url(self, instance):
|
||||||
return "/customusers/%i" % instance.id
|
return "/customusers/%i" % instance.id
|
||||||
|
|
||||||
|
form_data = {'username': 'bar0', 'groups': []}
|
||||||
|
request = self.req.post('/groups', data=form_data)
|
||||||
|
cleaned_data = dict(form_data)
|
||||||
|
cleaned_data['groups'] = []
|
||||||
|
mixin = CreateModelMixin()
|
||||||
|
mixin.resource = UserResource
|
||||||
|
mixin.CONTENT = cleaned_data
|
||||||
|
|
||||||
group = Group(name='foo')
|
response = mixin.post(request)
|
||||||
|
self.assertEquals(1, CustomUser.objects.count())
|
||||||
|
self.assertEquals(0, response.cleaned_content.groups.count())
|
||||||
|
|
||||||
|
group = Group(name='foo1')
|
||||||
group.save()
|
group.save()
|
||||||
|
|
||||||
form_data = {'username': 'bar', 'groups': [group.id]}
|
form_data = {'username': 'bar1', 'groups': [group.id]}
|
||||||
request = self.req.post('/groups', data=form_data)
|
request = self.req.post('/groups', data=form_data)
|
||||||
cleaned_data = dict(form_data)
|
cleaned_data = dict(form_data)
|
||||||
cleaned_data['groups'] = [group]
|
cleaned_data['groups'] = [group]
|
||||||
|
@ -76,8 +88,26 @@ class TestModelCreation(TestCase):
|
||||||
mixin.CONTENT = cleaned_data
|
mixin.CONTENT = cleaned_data
|
||||||
|
|
||||||
response = mixin.post(request)
|
response = mixin.post(request)
|
||||||
self.assertEquals(1, CustomUser.objects.count())
|
self.assertEquals(2, CustomUser.objects.count())
|
||||||
self.assertEquals(1, response.cleaned_content.groups.count())
|
self.assertEquals(1, response.cleaned_content.groups.count())
|
||||||
self.assertEquals('foo', response.cleaned_content.groups.all()[0].name)
|
self.assertEquals('foo1', response.cleaned_content.groups.all()[0].name)
|
||||||
|
|
||||||
|
|
||||||
|
group2 = Group(name='foo2')
|
||||||
|
group2.save()
|
||||||
|
|
||||||
|
form_data = {'username': 'bar2', 'groups': [group.id, group2.id]}
|
||||||
|
request = self.req.post('/groups', data=form_data)
|
||||||
|
cleaned_data = dict(form_data)
|
||||||
|
cleaned_data['groups'] = [group, group2]
|
||||||
|
mixin = CreateModelMixin()
|
||||||
|
mixin.resource = UserResource
|
||||||
|
mixin.CONTENT = cleaned_data
|
||||||
|
|
||||||
|
response = mixin.post(request)
|
||||||
|
self.assertEquals(3, CustomUser.objects.count())
|
||||||
|
self.assertEquals(2, response.cleaned_content.groups.count())
|
||||||
|
self.assertEquals('foo', response.cleaned_content.groups.all()[0].name)
|
||||||
|
self.assertEquals('foo2', response.cleaned_content.groups.all()[1].name)
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user