Commit 91b9d0b2 by Craig Blaszczyk

remove hardcoded model._meta.many_to_many[0]; update mixin tests to test with 0,…

remove hardcoded model._meta.many_to_many[0]; update mixin tests to test with 0, 1, or multiple groups
parent 344db0d7
...@@ -524,8 +524,7 @@ class CreateModelMixin(object): ...@@ -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]
......
...@@ -64,10 +64,22 @@ class TestModelCreation(TestCase): ...@@ -64,10 +64,22 @@ class TestModelCreation(TestCase):
def url(self, instance): def url(self, instance):
return "/customusers/%i" % instance.id return "/customusers/%i" % instance.id
group = Group(name='foo') 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
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): ...@@ -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('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('foo', response.cleaned_content.groups.all()[0].name)
self.assertEquals('foo2', response.cleaned_content.groups.all()[1].name)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment