def save_object(self, obj, **kwargs): request_user = self.context['request'].user if 'update_comment' in kwargs: errors = Mapping.persist_changes(obj, request_user, update_comment = kwargs.get('update_comment')) else : errors = Mapping.persist_changes(obj, request_user) self._errors.update(errors)
def test_edit_mapping_make_new_version_positive(self): mapping1 = Mapping( map_type='Same As', from_concept=self.concept1, to_concept=self.concept2, external_id='mapping1', ) source_version = SourceVersion.get_latest_version_of(self.source1) self.assertEquals(0, len(source_version.mappings)) kwargs = { 'parent_resource': self.source1, } errors = Mapping.persist_new(mapping1, self.user1, **kwargs) self.assertEquals(0, len(errors)) self.assertEquals(1,len(MappingVersion.objects.filter(versioned_object_id=mapping1.id))) mapping1.map_type='BROADER_THAN' Mapping.persist_changes(mapping1, self.user1) self.assertEquals(2, len(MappingVersion.objects.filter(versioned_object_id=mapping1.id))) old_version = MappingVersion.objects.get(versioned_object_id=mapping1.id, is_latest_version=False) new_version= MappingVersion.objects.get(versioned_object_id=mapping1.id, is_latest_version=True) self.assertFalse(old_version.is_latest_version) self.assertTrue(new_version.is_latest_version) self.assertEquals(new_version.map_type,'BROADER_THAN') self.assertEquals(old_version.map_type,'Same As')
def test_persist_persist_changes_positive(self): mapping = Mapping( map_type='Same As', from_concept=self.concept1, to_concept=self.concept2, external_id='mapping1', ) source_version = SourceVersion.get_latest_version_of(self.source1) self.assertEquals(0, len(source_version.mappings)) kwargs = { 'parent_resource': self.source1, } Mapping.persist_new(mapping, self.user1, **kwargs) mapping = Mapping.objects.get(external_id='mapping1') to_concept = mapping.to_concept source_version = SourceVersion.objects.get(id=source_version.id) self.assertEquals(1, len(source_version.mappings)) self.assertTrue(MappingVersion.objects.get(versioned_object_id=mapping.id).id in source_version.mappings) mapping.to_concept = self.concept3 errors = Mapping.persist_changes(mapping, self.user1) self.assertEquals(0, len(errors)) mapping = Mapping.objects.get(external_id='mapping1') self.assertEquals(self.concept3, mapping.to_concept) self.assertNotEquals(to_concept, mapping.to_concept) source_version = SourceVersion.objects.get(id=source_version.id) self.assertEquals(1, len(source_version.mappings)) mv = MappingVersion.objects.filter(versioned_object_id=mapping.id) self.assertTrue(mv[1].id in source_version.mappings)
def test_persist_persist_changes_negative__no_updated_by(self): mapping = Mapping( map_type='Same As', from_concept=self.concept1, to_concept=self.concept2, external_id='mapping1', ) source_version = SourceVersion.get_latest_version_of(self.source1) self.assertEquals(0, len(source_version.mappings)) kwargs = { 'parent_resource': self.source1, } Mapping.persist_new(mapping, self.user1, **kwargs) mapping = Mapping.objects.get(external_id='mapping1') source_version = SourceVersion.objects.get(id=source_version.id) self.assertEquals(1, len(source_version.mappings)) self.assertTrue(MappingVersion.objects.get(versioned_object_id=mapping.id).id in source_version.mappings) mapping.to_concept = self.concept3 errors = Mapping.persist_changes(mapping, None) self.assertEquals(1, len(errors)) self.assertTrue('updated_by' in errors) source_version = SourceVersion.objects.get(id=source_version.id) self.assertEquals(1, len(source_version.mappings)) self.assertTrue(MappingVersion.objects.get(versioned_object_id=mapping.id).id in source_version.mappings)
def test_update_different_from_and_to_pairs_to_same_from_and_to_pairs_should_throw_validation_error( self): user = create_user() source1 = create_source( user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS) source2 = create_source( user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS) (concept1, _) = create_concept(user, source1) (concept2, _) = create_concept(user, source2) (concept3, _) = create_concept(user, source2) create_mapping(user, source1, concept1, concept2, "Same As") mapping = create_mapping(user, source2, concept2, concept3, "Same As") mapping.from_concept = concept1 mapping.to_concept = concept2 mapping.map_type = "Different" errors = Mapping.persist_changes(mapping, user) self.assertTrue( "Custom validation rules require only one Mapping to exist between two Concepts" in errors["__all__"])
def test_should_not_add_related_mapping_if_another_version_is_present_in_collection(self): source, user = self.create_source_and_user_fixture(custom_validation_schema=None) collection = create_collection(user) (from_concept, errors) = create_concept(user=user, source=source, names=[ create_localized_text(name='Non Unique Name', locale_preferred=True, locale='en', type='None'), create_localized_text(name='Any Name', locale='en', type='Fully Specified') ]) (to_concept, errors) = create_concept(user=user, source=source, names=[ create_localized_text(name='Any Name 2', locale='en', type='Fully Specified') ]) mapping = create_mapping(user, source, from_concept, to_concept) mapping_first_version = MappingVersion.get_latest_version_of(mapping) mapping.map_type = "new type" errors = Mapping.persist_changes(mapping, updated_by=user, update_comment="--") mapping_head_version = MappingVersion.get_latest_version_of(mapping) data = json.dumps({ 'data': { 'expressions': [mapping_first_version.url] } }) kwargs = {'user': user.username, 'collection': collection.name} response = self.client.put(reverse('collection-references', kwargs=kwargs), data, content_type='application/json') data = json.dumps({ 'data': { 'expressions': [from_concept.url] } }) kwargs = {'user': user.username, 'collection': collection.name} response = self.client.put(reverse('collection-references', kwargs=kwargs), data, content_type='application/json') self.assertEquals(response.content, json.dumps([{ "message": HEAD_OF_CONCEPT_ADDED_TO_COLLECTION, "added": True, "expression": from_concept.get_latest_version.url}]))
def test_update_different_from_and_to_pairs_to_same_from_and_to_pairs_should_throw_validation_error(self): user = create_user() source1 = create_source(user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS) source2 = create_source(user, validation_schema=CUSTOM_VALIDATION_SCHEMA_OPENMRS) (concept1, _) = create_concept(user, source1) (concept2, _) = create_concept(user, source2) (concept3, _) = create_concept(user, source2) create_mapping(user, source1, concept1, concept2, "Same As") mapping = create_mapping(user, source1, concept2, concept3, "Same As") mapping.from_concept = concept1 mapping.to_concept = concept2 mapping.map_type = "Different" errors = Mapping.persist_changes(mapping, user) self.assertTrue( OPENMRS_SINGLE_MAPPING_BETWEEN_TWO_CONCEPTS in errors["__all__"])
def save_object(self, obj, **kwargs): request_user = self.context['request'].user errors = Mapping.persist_changes(obj, request_user) self._errors.update(errors)