def test_save_fk_objs(self): class FooResource(ModelResource): class Meta(ModelResource.Meta): model = Foo class Fields: bar = ForeignKeyField(attribute='bar', resource_cls=self.resource.__class__, embed=True) foo_resource = FooResource() foo = Foo( **{ 'name': 'zed', 'text': '', 'integer': 9, 'float_field': 123.123, 'boolean': True, 'decimal': '12.34', 'file_field': 'test.mov', } ) foo.save() post_list = self.factory.post('/foo/') kwargs = { 'pub': ['post', 'list'], 'bundles': [{ 'request_data': { 'name': 'foo name', 'bar': { 'name': 'bar name' }, }, 'obj': foo }], } request, args, kwargs = foo_resource.save_fk_objs(post_list, [], **kwargs) self.assertEqual(kwargs['bundles'][0]['obj'].bar.name, 'bar name')
def test_save_m2m_objs(self): class BazResource(ModelResource): class Meta(ModelResource.Meta): model = Baz class FooResource(ModelResource): class Meta(ModelResource.Meta): model = Foo class Fields: bazzes = ManyToManyField(attribute='bazzes', resource_cls=BazResource, embed=True) foo_resource = FooResource() foo = Foo( **{ 'name': 'zed', 'text': '', 'integer': 9, 'float_field': 123.123, 'boolean': True, 'decimal': '12.34', 'file_field': 'test.mov', }) foo.save() post_list = self.factory.post('/foo/') kwargs = { 'pub': ['post', 'list'], 'bundles': [{ 'request_data': { 'name': 'foo name', 'bazzes': [{ 'name': 'baz 1' }, { 'name': 'baz 2' }] }, 'obj': foo }] } request, args, kwargs = foo_resource.save_m2m_objs( post_list, [], **kwargs) bazzes = kwargs['bundles'][0]['obj'].bazzes.all() self.assertEqual(bazzes.count(), 2)
def test_dehydrate_explicit_fields(self): class BazResource(ModelResource): class Meta(ModelResource.Meta): model = Baz api = Api(name='v1') class FooResource(ModelResource): class Meta(ModelResource.Meta): model = Foo api = Api(name='v1') class Fields: bazzes = ManyToManyField(attribute='bazzes', resource_cls=BazResource, embed=True) foo_resource = FooResource() foo_dict = { 'name': 'zed', 'text': '', 'integer': 9, 'float_field': 123.123, 'boolean': True, 'decimal': '12.34', 'file_field': 'test.mov', } foo = Foo(**foo_dict) foo.save() baz = Baz.objects.create(name='baz 1') foo.bazzes.add(baz) bundles = [{ 'obj': foo, 'response_data': {} }] kwargs = { 'bundles': bundles, 'pub': ['get', 'detail'] } get_detail = self.factory.get('/foo/1') request, args, kwargs = foo_resource.dehydrate_explicit_fields(get_detail, [], **kwargs) bazzes = kwargs['bundles'][0]['response_data']['bazzes'] self.assertTrue('name' in bazzes[0])
def test_dehydrate_explicit_fields(self): class BazResource(ModelResource): class Meta(ModelResource.Meta): model = Baz api = Api(name='v1') class FooResource(ModelResource): class Meta(ModelResource.Meta): model = Foo api = Api(name='v1') class Fields: bazzes = ManyToManyField(attribute='bazzes', resource_cls=BazResource, embed=True) foo_resource = FooResource() foo_dict = { 'name': 'zed', 'text': '', 'integer': 9, 'float_field': 123.123, 'boolean': True, 'decimal': '12.34', 'file_field': 'test.mov', } foo = Foo(**foo_dict) foo.save() baz = Baz.objects.create(name='baz 1') foo.bazzes.add(baz) bundles = [{'obj': foo, 'response_data': {}}] kwargs = {'bundles': bundles, 'pub': ['get', 'detail']} get_detail = self.factory.get('/foo/1') request, args, kwargs = foo_resource.dehydrate_explicit_fields( get_detail, [], **kwargs) bazzes = kwargs['bundles'][0]['response_data']['bazzes'] self.assertTrue('name' in bazzes[0])
def test_save_m2m_objs(self): class BazResource(ModelResource): class Meta(ModelResource.Meta): model = Baz class FooResource(ModelResource): class Meta(ModelResource.Meta): model = Foo class Fields: bazzes = ManyToManyField(attribute='bazzes', resource_cls=BazResource, embed=True) foo_resource = FooResource() foo = Foo( **{ 'name': 'zed', 'text': '', 'integer': 9, 'float_field': 123.123, 'boolean': True, 'decimal': '12.34', 'file_field': 'test.mov', } ) foo.save() post_list = self.factory.post('/foo/') kwargs = { 'pub': ['post', 'list'], 'bundles': [{ 'request_data': { 'name': 'foo name', 'bazzes': [ {'name': 'baz 1'}, {'name': 'baz 2'} ] }, 'obj': foo }] } request, args, kwargs = foo_resource.save_m2m_objs(post_list, [], **kwargs) bazzes = kwargs['bundles'][0]['obj'].bazzes.all() self.assertEqual(bazzes.count(), 2)
def test_save_fk_objs(self): class FooResource(ModelResource): class Meta(ModelResource.Meta): model = Foo class Fields: bar = ForeignKeyField(attribute='bar', resource_cls=self.resource.__class__, embed=True) foo_resource = FooResource() foo = Foo( **{ 'name': 'zed', 'text': '', 'integer': 9, 'float_field': 123.123, 'boolean': True, 'decimal': '12.34', 'file_field': 'test.mov', }) foo.save() post_list = self.factory.post('/foo/') kwargs = { 'pub': ['post', 'list'], 'bundles': [{ 'request_data': { 'name': 'foo name', 'bar': { 'name': 'bar name' }, }, 'obj': foo }], } request, args, kwargs = foo_resource.save_fk_objs( post_list, [], **kwargs) self.assertEqual(kwargs['bundles'][0]['obj'].bar.name, 'bar name')