def test_incoming_delete(self): del mock_orm.Model._models[:] class MockResource(ModelResource): model_class = mock_orm.Model fields = [ AttributeField(attribute='bar', type=int), ] field = RelatedManagerField(attribute='foo', resource_class=MockResource) target_obj = mock_orm.Mock() related_manager = mock_orm.Manager() related_model = mock_orm.Model(pk=4, bar=14) related_manager.all = Mock( return_value=mock_orm.QuerySet(related_model)) target_obj.foo = related_manager source_dict = { 'foo': [], } field.handle_incoming(mock_context(), source_dict, target_obj) related_manager.remove.assert_called_with(related_model)
def test_incoming_with_resource_uri(self): del mock_orm.Model._models[:] class MockResource(ModelResource): model_class = mock_orm.Model fields = [ AttributeField(attribute='bar', type=int), ] field = RelatedManagerField(attribute='foo', resource_class=MockResource) target_obj = mock_orm.Mock() related_manager = mock_orm.Manager() related_model = mock_orm.Model(pk=4, bar=10) related_manager.all = Mock( return_value=mock_orm.QuerySet(related_model)) target_obj.foo = related_manager source_dict = { 'foo': [{ 'resourceUri': 'http://testsever/api/v2/bar/4', 'bar': 14 }], } model_index = len(mock_orm.Model._models) ctx = mock_context() ctx.resolve_resource_uri = Mock() ctx.resolve_resource_uri.return_value = MockResource(related_model) field.handle_incoming(ctx, source_dict, target_obj) model = mock_orm.Model._models[model_index - 1] self.assertEqual(14, model.bar)
def test_incoming_no_id(self): del mock_orm.Model._models[:] class MockResource(ModelResource): model_class = mock_orm.Model fields = [ AttributeField(attribute='bar', type=int), ] field = RelatedManagerField(attribute='foo', resource_class=MockResource) target_obj = mock_orm.Mock() related_manager = mock_orm.Manager() related_manager.all = Mock(return_value=mock_orm.QuerySet()) target_obj.foo = related_manager source_dict = { 'foo': [{ 'bar': 4 }], } model_index = len(mock_orm.Model._models) field.handle_incoming(mock_context(), source_dict, target_obj) model = mock_orm.Model._models[model_index] self.assertEqual(4, model.bar) related_manager.add.assert_called_with(model)
def test_incoming_with_add(self): class MockResource(ModelResource): key = Mock() model_class = mock_orm.Model fields = [ AttributeField(attribute='bar', type=int), ] field = URIListResourceField(attribute='foos', resource_class=MockResource) source_dict = {'foos': ['uri://resources/1', 'uri://resources/2']} target_object = mock_orm.Mock() related_manager = mock_orm.Manager() related_manager.all = Mock(return_value=mock_orm.QuerySet()) target_object.foos = related_manager ctx = mock_context() foo1_model = Mock() foo2_model = Mock() mock_resources = Mock() resource1 = MockResource(foo1_model) resource1.key = 1 resource2 = MockResource(foo2_model) resource2.key = 2 mock_resources.side_effect = [resource1, resource2] ctx.resolve_resource_uri = mock_resources field.handle_incoming(ctx, source_dict, target_object) related_manager.add.assert_called_with(foo1_model, foo2_model)
def test_incoming_read_only(self): del mock_orm.Model._models[:] class MockResource(ModelResource): model_class = mock_orm.Model fields = [ AttributeField(attribute='bar', type=int), ] field = RelatedManagerField( attribute='foo', resource_class=MockResource, read_only=True, ) target_obj = mock_orm.Mock() related_manager = mock_orm.Manager() related_model = mock_orm.Model(pk=4, bar=14) related_manager.all = Mock( return_value=mock_orm.QuerySet(related_model)) target_obj.foo = related_manager source_dict = { 'foo': [{ '_id': '4', 'bar': 15 }], } field.handle_incoming(mock_context(), source_dict, target_obj) self.assertEqual(14, related_model.bar)
def test_incoming_with_delete(self): class MockResource(ModelResource): key = Mock() model_class = mock_orm.Model fields = [ AttributeField(attribute='bar', type=int), ] field = URIListResourceField(attribute='foos', resource_class=MockResource) source_dict = {'foos': ['uri://resources/1', 'uri://resources/2']} target_object = mock_orm.Mock() related_manager = mock_orm.Manager() related_manager.remove = Mock() related_model1 = mock_orm.Model(pk=1, bar=11) related_model2 = mock_orm.Model(pk=2, bar=12) related_model3 = mock_orm.Model(pk=3, bar=13) mock_resource1 = MockResource(related_model1) mock_resource1.key = 1 mock_resource2 = MockResource(related_model2) mock_resource2.key = 2 mock_resource3 = MockResource(related_model3) mock_resource3.key = 3 field._resource_class = Mock() field._resource_class.side_effect = [ mock_resource1, mock_resource2, mock_resource3 ] related_manager.all = Mock(return_value=mock_orm.QuerySet( related_model1, related_model2, related_model3)) target_object.foos = related_manager ctx = mock_context() mock_resources = Mock() mock_resources.side_effect = [mock_resource1, mock_resource2] ctx.resolve_resource_uri = mock_resources field.handle_incoming(ctx, source_dict, target_object) related_manager.remove.assert_called_with(related_model3)