Skip to content

Commit

Permalink
Unit tests demonstrating issue wlanslovenija#57
Browse files Browse the repository at this point in the history
  • Loading branch information
Ben Demboski committed Aug 5, 2013
1 parent 9da4080 commit 33fc6c0
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 0 deletions.
24 changes: 24 additions & 0 deletions tests/test_project/test_app/api/resources.py
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,30 @@ class Meta:
allowed_methods = ('get', 'post', 'put', 'patch', 'delete')
authorization = tastypie_authorization.Authorization()

class EmbeddedWithReferencedListResource(resources.MongoEngineResource):
referencedlist = fields.ReferencedListField(of='test_project.test_app.api.resources.PersonResource', attribute='referencedlist', full=False, null=True)

class Meta:
object_class = documents.EmbeddedWithReferencedList
allowed_methods = ('get', 'post', 'put', 'patch', 'delete')
authorization = tastypie_authorization.Authorization()

class EmbeddedReferencedListFieldTestResource(resources.MongoEngineResource):
embedded = fields.EmbeddedDocumentField(embedded='test_project.test_app.api.resources.EmbeddedWithReferencedListResource', attribute='embedded')

class Meta:
queryset = documents.EmbeddedReferencedListFieldTest.objects.all()
allowed_methods = ('get', 'post', 'put', 'patch', 'delete')
authorization = tastypie_authorization.Authorization()

class ListOfEmbeddedReferencedListFieldTestResource(resources.MongoEngineResource):
embeddedlist = fields.EmbeddedListField(of='test_project.test_app.api.resources.EmbeddedWithReferencedListResource', attribute='embeddedlist', full=True)

class Meta:
queryset = documents.ListOfEmbeddedReferencedListFieldTest.objects.all()
allowed_methods = ('get', 'post', 'put', 'patch', 'delete')
authorization = tastypie_authorization.Authorization()

class AutoAllocationFieldTestResource(resources.MongoEngineResource):
slug = tastypie_fields.CharField(readonly=True, attribute='slug')

Expand Down
9 changes: 9 additions & 0 deletions tests/test_project/test_app/documents.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,15 @@ class EmbeddedListWithFlagFieldTest(InheritableDocument):
embeddedlist = mongoengine.ListField(mongoengine.EmbeddedDocumentField(EmbeddedPerson))
is_published = mongoengine.BooleanField(default=False, required=True)

class EmbeddedWithReferencedList(InheritableEmbeddedDocument):
referencedlist = mongoengine.ListField(mongoengine.ReferenceField(Person))

class EmbeddedReferencedListFieldTest(InheritableDocument):
embedded = mongoengine.EmbeddedDocumentField(EmbeddedWithReferencedList)

class ListOfEmbeddedReferencedListFieldTest(InheritableDocument):
embeddedlist = mongoengine.ListField(mongoengine.EmbeddedDocumentField(EmbeddedWithReferencedList))

class AutoAllocationFieldTest(InheritableDocument):
name = mongoengine.StringField(required=True)
slug = mongoengine.StringField(required=True)
Expand Down
28 changes: 28 additions & 0 deletions tests/test_project/test_app/tests/test_basic.py
Original file line number Diff line number Diff line change
Expand Up @@ -913,6 +913,34 @@ def test_referencedlistnonfull(self):

self.assertEqual(response['name'], 'Person 1')

def test_embeddedreferencedlist_get(self):
person = documents.Person.objects.create(name="Person 1")
obj = documents.EmbeddedReferencedListFieldTest.objects.create(embedded=documents.EmbeddedWithReferencedList(referencedlist=[person]))

response = self.c.get(resources.EmbeddedReferencedListFieldTestResource().get_resource_uri(obj))
self.assertEqual(response.status_code, 200)
response = json.loads(response.content)

embedded = response['embedded']
self.assertIn('referencedlist', embedded)
self.assertEqual(embedded['referencedlist'], [resources.PersonResource().get_resource_uri(person)])

def test_listofembeddedreferencedlist_get(self):
person = documents.Person.objects.create(name="Person 1")
obj = documents.ListOfEmbeddedReferencedListFieldTest.objects.create(embeddedlist=[
documents.EmbeddedWithReferencedList(referencedlist=[person])
])

response = self.c.get(resources.ListOfEmbeddedReferencedListFieldTestResource().get_resource_uri(obj))
self.assertEqual(response.status_code, 200)
response = json.loads(response.content)

self.assertIn('embeddedlist', response)
self.assertEqual(len(response['embeddedlist']), 1)
embedded = response['embeddedlist'][0]
self.assertIn('referencedlist', embedded)
self.assertEqual(embedded['referencedlist'], [resources.PersonResource().get_resource_uri(person)])

def test_polymorphic_schema(self):
person_schema_uri = self.resourceListURI('person') + 'schema/'

Expand Down
3 changes: 3 additions & 0 deletions tests/test_project/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,9 @@
v1_api.register(resources.ReferencedListFieldNonFullTestResource())
v1_api.register(resources.BooleanMapTestResource())
v1_api.register(resources.EmbeddedListWithFlagFieldTestResource())
v1_api.register(resources.EmbeddedWithReferencedListResource())
v1_api.register(resources.EmbeddedReferencedListFieldTestResource())
v1_api.register(resources.ListOfEmbeddedReferencedListFieldTestResource())
v1_api.register(resources.AutoAllocationFieldTestResource())
v1_api.register(resources.ExporterResource())
v1_api.register(resources.PipeResource())
Expand Down

0 comments on commit 33fc6c0

Please sign in to comment.