def create_sources(org, user): sources = dict() kwargs = {'parent_resource': org} for source_name in [ 'Locales', 'Classes', 'Datatypes', 'DescriptionTypes', 'NameTypes', 'MapTypes' ]: if Source.objects.filter(organization=org, mnemonic=source_name, version=HEAD).exists(): source = Source.objects.get(organization=org, mnemonic=source_name, version=HEAD) else: source = Source(name=source_name, mnemonic=source_name, full_name=source_name, organization=org, created_by=user, default_locale='en', supported_locales=['en'], updated_by=user, version=HEAD) Source.persist_new(source, user, **kwargs) sources[source_name] = source return sources
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 test_persist_new_negative__no_owner(self): kwargs = {'parent_resource': self.user} errors = Source.persist_new(self.new_source, None, **kwargs) self.assertEqual(errors, {'created_by': 'Creator cannot be None.'}) self.assertFalse( Source.objects.filter(name=self.new_source.name).exists())
def test_persist_new_negative__no_name(self): kwargs = {'parent_resource': self.user} self.new_source.name = None errors = Source.persist_new(self.new_source, self.user, **kwargs) self.assertEqual(errors, {'name': ['This field cannot be null.']}) self.assertFalse( Source.objects.filter(name=self.new_source.name).exists())
def test_persist_new_positive(self): kwargs = {'parent_resource': self.user} errors = Source.persist_new(self.new_source, self.user, **kwargs) source = Source.objects.get(name=self.new_source.name) self.assertEqual(len(errors), 0) self.assertTrue( Source.objects.filter(name=self.new_source.name).exists()) self.assertEqual(source.num_versions, 1) self.assertEqual(source.get_latest_version(), source) self.assertEqual(source.version, 'HEAD') self.assertFalse(source.released) self.assertEqual( source.uri, '/users/{username}/sources/{source}/'.format( username=self.user.username, source=source.mnemonic))
def process(self): source = Source(**self.data) errors = Source.persist_new(source, self.user) return errors or CREATED
def test_persist_new_negative__no_parent(self): errors = Source.persist_new(self.new_source, self.user) self.assertEqual(errors, {'parent': 'Parent resource cannot be None.'}) self.assertFalse( Source.objects.filter(name=self.new_source.name).exists())
def create(self, validated_data): source = self.prepare_object(validated_data) user = self.context['request'].user errors = Source.persist_new(source, user) self._errors.update(errors) return source