def test_cdm_trait_collection_remove(self): manifest = generate_manifest('C:\\Root\\Path') trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None) other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait', None) manifest.exhibits_traits.append(trait) manifest.exhibits_traits.append(other_trait) self.assertEqual(2, len(manifest.exhibits_traits)) manifest._trait_cache = dict() manifest.exhibits_traits.remove(trait) self.assertEqual(1, len(manifest.exhibits_traits)) self.assertEqual(None, manifest._trait_cache) manifest.exhibits_traits.remove(trait) self.assertEqual(1, len(manifest.exhibits_traits)) self.assertEqual(other_trait, manifest.exhibits_traits[0].explicit_reference) manifest.exhibits_traits.remove('Name of other Trait') self.assertEqual(0, len(manifest.exhibits_traits)) manifest.exhibits_traits.append(trait) self.assertEqual(1, len(manifest.exhibits_traits)) manifest.exhibits_traits.remove(manifest.exhibits_traits[0]) self.assertEqual(0, len(manifest.exhibits_traits))
def test_cdm_trait_collection_remove_trait_definition_prioritize_from_property( self): manifest = generate_manifest('C:\\Root\\Path') trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None) other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait', None) manifest.exhibits_traits.append(trait) manifest.exhibits_traits.append(other_trait) manifest.exhibits_traits.append(trait) manifest.exhibits_traits[2].is_from_property = True manifest.exhibits_traits.append(other_trait) manifest.exhibits_traits.append(trait) manifest.exhibits_traits[4].is_from_property = True manifest.exhibits_traits.append(other_trait) self.assertEqual(6, len(manifest.exhibits_traits)) self.assertTrue(manifest.exhibits_traits[2].is_from_property) manifest.exhibits_traits.remove(trait) self.assertEqual( 'TraitName', cast('CdmTraitDefinition', manifest.exhibits_traits[0].explicit_reference).trait_name) self.assertEqual( 'Name of other Trait', manifest.exhibits_traits[2].explicit_reference.trait_name) self.assertEqual( 'TraitName', manifest.exhibits_traits[3].explicit_reference.trait_name)
def test_cdm_trait_collection_index_of_only_from_property(self): manifest = generate_manifest('C:\\Root\\Path') trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None) other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait', None) manifest.exhibits_traits.append(trait) manifest.exhibits_traits.append(other_trait) self.assertFalse(manifest.exhibits_traits[0].is_from_property) self.assertFalse(manifest.exhibits_traits[1].is_from_property) index = manifest.exhibits_traits.index(trait.trait_name, True) self.assertEqual(-1, index) manifest.exhibits_traits.append(trait) manifest.exhibits_traits.append(other_trait) manifest.exhibits_traits.append(trait) manifest.exhibits_traits.append(other_trait) self.assertEqual(6, len(manifest.exhibits_traits)) manifest.exhibits_traits[2].is_from_property = True index = manifest.exhibits_traits.index(trait.trait_name, True) self.assertEqual(2, index) index = manifest.exhibits_traits.index(trait.trait_name) self.assertEqual(2, index)
def test_cdm_trait_collection_add(self): manifest = generate_manifest() trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None) other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait', None) manifest._trait_cache = dict() added_trait = manifest.exhibits_traits.append(trait) added_other_trait = manifest.exhibits_traits.append(other_trait) list_of_args = [[ Constants._INCREMENTAL_PATTERN_PARAMETER_NAME, 'test' ], ['fullDataPartitionPatternName', 'name']] added_incremental_trait = manifest.exhibits_traits.append( Constants._INCREMENTAL_TRAIT_NAME, list_of_args) self.assertEqual(None, manifest._trait_cache) self.assertEqual(3, len(manifest.exhibits_traits)) self.assertEqual(trait, manifest.exhibits_traits[0].explicit_reference) self.assertEqual(other_trait, manifest.exhibits_traits[1].explicit_reference) self.assertEqual(added_trait, manifest.exhibits_traits[0]) self.assertEqual(added_other_trait, manifest.exhibits_traits[1]) self.assertEqual(added_incremental_trait, manifest.exhibits_traits[2]) self.assertEqual(2, len(manifest.exhibits_traits[2].arguments)) self.assertEqual( 'test', manifest.exhibits_traits[2].arguments.fetch_value( Constants._INCREMENTAL_PATTERN_PARAMETER_NAME)) self.assertEqual( 'name', manifest.exhibits_traits[2].arguments.fetch_value( 'fullDataPartitionPatternName')) self.assertEqual(manifest, manifest.exhibits_traits[0].owner)
def test_cdm_trait_collection_add_range(self): manifest = generate_manifest('C:\\Root\\Path') trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None) other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait', None) trait_list = [trait, other_trait] manifest.exhibits_traits.extend(trait_list) self.assertEqual(2, len(manifest.exhibits_traits)) self.assertEqual(trait, manifest.exhibits_traits[0].explicit_reference) self.assertEqual(other_trait, manifest.exhibits_traits[1].explicit_reference) self.assertEqual(manifest, manifest.exhibits_traits[0].owner)
async def test_refreshes_data_partition_patterns_with_trait(self): """Tests data partition objects created by a partition pattern do not share the same trait with the partition pattern""" test_name = 'test_refreshes_data_partition_patterns_with_trait' corpus = TestHelper.get_local_corpus(self.test_subpath, test_name) manifest = await corpus.fetch_object_async('local:/patternManifest.manifest.cdm.json') partition_entity = manifest.entities[0] self.assertEqual(1, len(partition_entity.data_partition_patterns)) self.assertEqual(0, len(partition_entity.data_partitions)) trait_def = CdmTraitDefinition(corpus.ctx, 'testTrait') trait_def.parameters.append(CdmParameterDefinition(corpus.ctx, 'argument value')) pattern_trait_ref = partition_entity.data_partition_patterns[0].exhibits_traits.append('testTrait') pattern_trait_ref.arguments.append('int', 1) pattern_trait_ref.arguments.append('bool', True) pattern_trait_ref.arguments.append('string', 'a') await manifest.file_status_check_async() self.assertEqual(2, len(partition_entity.data_partitions)) pattern_trait_ref = partition_entity.data_partition_patterns[0].exhibits_traits.item('testTrait') self.assertEqual(1, pattern_trait_ref.arguments[0].value) self.assertTrue(pattern_trait_ref.arguments[1].value) pattern_trait_ref.arguments[0].value = 3 pattern_trait_ref.arguments[1].value = False partition_trait_ref = partition_entity.data_partitions[0].exhibits_traits.item('testTrait') self.assertNotEqual(partition_trait_ref, pattern_trait_ref) self.assertEqual(1, partition_trait_ref.arguments[0].value) self.assertTrue(partition_trait_ref.arguments[1].value) partition_trait_ref.arguments[0].value = 2 self.assertEqual(1, partition_entity.data_partitions[1].exhibits_traits.item('testTrait').arguments[0].value)
def test_cdm_definition_collection_add(self): document = generate_manifest('C:\\Nothing') document._is_dirty = False attribute = CdmAttributeContext(document.ctx, 'the attribute') folder = CdmFolderDefinition(document.ctx, 'The folder') trait = CdmTraitDefinition(document.ctx, 'The trait') added_attribute = document.definitions.append(attribute) added_folder = document.definitions.append(folder) added_trait = document.definitions.append(trait) self.assertTrue(document._is_dirty) self.assertEqual(3, len(document.definitions)) self.assertEqual(attribute, added_attribute) self.assertEqual(folder, added_folder) self.assertEqual(trait, added_trait) self.assertEqual(attribute, document.definitions[0]) self.assertEqual(folder, document.definitions[1]) self.assertEqual(trait, document.definitions[2]) self.assertEqual(document, attribute.in_document) self.assertEqual(document, trait.in_document) self.assertEqual(document, attribute.owner) self.assertEqual(document, folder.owner) self.assertEqual(document, trait.owner)
def test_extends_trait_property_optional(self): corpus = CdmCorpusDefinition() extend_trait_ref1 = CdmTraitReference(corpus.ctx, 'testExtendTraitName1', True) extend_trait_ref2 = CdmTraitReference(corpus.ctx, 'testExtendTraitName2', True) trait_definition = CdmTraitDefinition(corpus.ctx, 'testTraitName', extend_trait_ref1) self.assertEqual(extend_trait_ref1, trait_definition.extends_trait) trait_definition.extends_trait = None self.assertIsNone(trait_definition.extends_trait) trait_definition.extends_trait = extend_trait_ref2 self.assertEqual(extend_trait_ref2, trait_definition.extends_trait) trait_definition.extends_trait = None self.assertIsNone(trait_definition.extends_trait)
def test_cdm_trait_collection_add(self): manifest = generate_manifest('C:\\Root\\Path') trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None) other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait', None) manifest._trait_cache = dict() added_trait = manifest.exhibits_traits.append(trait) added_other_trait = manifest.exhibits_traits.append(other_trait) self.assertEqual(None, manifest._trait_cache) self.assertEqual(2, len(manifest.exhibits_traits)) self.assertEqual(trait, manifest.exhibits_traits[0].explicit_reference) self.assertEqual(other_trait, manifest.exhibits_traits[1].explicit_reference) self.assertEqual(added_trait, manifest.exhibits_traits[0]) self.assertEqual(added_other_trait, manifest.exhibits_traits[1]) self.assertEqual(manifest, manifest.exhibits_traits[0].owner)
def test_cdm_trait_collection_remove_at(self): manifest = generate_manifest("C:\\Root\\Path") trait = CdmTraitDefinition(manifest.ctx, "TraitName", None) other_trait = CdmTraitDefinition(manifest.ctx, "Name of other Trait", None) manifest.exhibits_traits.append(trait) manifest.exhibits_traits.append(other_trait) manifest.exhibits_traits.remove(trait) self.assertTrue(trait not in manifest.exhibits_traits) self.assertEqual(None, manifest._trait_cache) manifest.exhibits_traits.append(trait) manifest.exhibits_traits.pop(1) self.assertEqual(None, manifest._trait_cache) self.assertEqual(1, len(manifest.exhibits_traits)) self.assertEqual(other_trait, manifest.exhibits_traits[0].explicit_reference)
def test_cdm_trait_collection_index_of(self): manifest = generate_manifest('C:\\Root\\Path') trait = CdmTraitDefinition(manifest.ctx, 'TraitName', None) other_trait = CdmTraitDefinition(manifest.ctx, 'Name of other Trait', None) manifest.exhibits_traits.append(trait) manifest.exhibits_traits.append(other_trait) index = manifest.exhibits_traits.index(trait) self.assertEqual(0, index) index = manifest.exhibits_traits.index(other_trait) self.assertEqual(1, index) index = manifest.exhibits_traits.index(manifest.exhibits_traits[0]) self.assertEqual(0, index) index = manifest.exhibits_traits.index(manifest.exhibits_traits[1]) self.assertEqual(1, index) index = manifest.exhibits_traits.index('TraitName') self.assertEqual(0, index) index = manifest.exhibits_traits.index('Name of other Trait') self.assertEqual(1, index)
def test_cdm_definition_collection_add_range(self): document = generate_manifest() document._is_dirty = False attribute = CdmAttributeContext(document.ctx, 'the attribute') folder = CdmFolderDefinition(document.ctx, 'The folder') trait = CdmTraitDefinition(document.ctx, 'The trait') definitionsList = [attribute, folder, trait] document.definitions.extend(definitionsList) self.assertTrue(document._is_dirty) self.assertEqual(3, len(document.definitions)) self.assertEqual(attribute, document.definitions[0]) self.assertEqual(folder, document.definitions[1]) self.assertEqual(trait, document.definitions[2]) self.assertEqual(document, attribute.in_document) self.assertEqual(document, trait.in_document) self.assertEqual(document, attribute.owner) self.assertEqual(document, folder.owner) self.assertEqual(document, trait.owner)