def test_persist_changes_positive(self): kwargs = { 'parent_resource': self.user } errors = Source.persist_new(self.new_source, self.user, **kwargs) self.assertEqual(len(errors), 0) saved_source = Source.objects.get(name=self.new_source.name) name = saved_source.name self.new_source.name = "%s_prime" % name self.new_source.source_type = 'Reference' errors = Source.persist_changes(self.new_source, self.user, **kwargs) updated_source = Source.objects.get(mnemonic=self.new_source.mnemonic) self.assertEqual(len(errors), 0) self.assertEqual(updated_source.num_versions, 1) self.assertEqual(updated_source.head, updated_source) self.assertEqual(updated_source.name, self.new_source.name) self.assertEqual(updated_source.source_type, 'Reference') self.assertEqual( updated_source.uri, '/users/{username}/sources/{source}/'.format(username=self.user.username, source=updated_source.mnemonic) )
def update(self, instance, validated_data): original_schema = instance.custom_validation_schema source = self.prepare_object(validated_data, instance) user = self.context['request'].user errors = Source.persist_changes(source, user, original_schema) self._errors.update(errors) return source
def test_persist_changes_negative__repeated_mnemonic(self): kwargs = { 'parent_resource': self.user } source1 = OrganizationSourceFactory(organization=None, user=self.user, mnemonic='source-1', version=HEAD) source2 = OrganizationSourceFactory(organization=None, user=self.user, mnemonic='source-2', version=HEAD) source2.mnemonic = source1.mnemonic with transaction.atomic(): errors = Source.persist_changes(source2, self.user, **kwargs) self.assertEqual(len(errors), 1) self.assertTrue('__all__' in errors)
def update(self, instance, validated_data): source = self.prepare_object(validated_data, instance) user = self.context['request'].user errors = Source.persist_changes(source, user) self._errors.update(errors) return source