remove hardcoded model._meta.many_to_many[0]; update mixin tests to test with 0, 1, or multiple groups

This commit is contained in:
Craig Blaszczyk 2011-07-08 18:14:52 +01:00
parent 344db0d733
commit 91b9d0b2a3
2 changed files with 35 additions and 6 deletions

View File

@ -524,8 +524,7 @@ class CreateModelMixin(object):
for field in model._meta.many_to_many:
if content.has_key(field.name):
m2m_data[field.name] = (
model._meta.many_to_many[0].m2m_reverse_field_name(),
content[field.name]
field.m2m_reverse_field_name(), content[field.name]
)
del content[field.name]

View File

@ -63,11 +63,23 @@ class TestModelCreation(TestCase):
def url(self, instance):
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()
form_data = {'username': 'bar', 'groups': [group.id]}
form_data = {'username': 'bar1', 'groups': [group.id]}
request = self.req.post('/groups', data=form_data)
cleaned_data = dict(form_data)
cleaned_data['groups'] = [group]
@ -76,8 +88,26 @@ class TestModelCreation(TestCase):
mixin.CONTENT = cleaned_data
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('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)