def test_annot_v_l_missing_e_t(mock_warning, xml_builder_factory): """Test correct handling of annotations whose target type does not exist""" xml_builder = xml_builder_factory() xml_builder.add_schema( 'MISSING_ET', """ <EntityType Name="Database" sap:content-version="1"> <Key><PropertyRef Name="Data"/></Key> <Property Name="Data" Type="Edm.String" Nullable="false" sap:unicode="false" sap:label="Key" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:value-list="standard"/> </EntityType> <EntityContainer Name="EXAMPLE_SRV" m:IsDefaultEntityContainer="true" sap:supported-formats="atom json xlsx"> <EntitySet Name="DataValueHelp" EntityType="MISSING_ET.Database" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:searchable="true" sap:content-version="1"/> </EntityContainer> <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="MISSING_ET.Dict/Value"> <Annotation Term="com.sap.vocabularies.Common.v1.ValueList"> <Record> <PropertyValue Property="Label" String="Data"/> <PropertyValue Property="CollectionPath" String="DataValueHelp"/> <PropertyValue Property="SearchSupported" Bool="true"/> <PropertyValue Property="Parameters"> <Collection> <Record Type="com.sap.vocabularies.Common.v1.ValueListParameterOut"> <PropertyValue Property="LocalDataProperty" PropertyPath="Value"/> <PropertyValue Property="ValueListProperty" String="Data"/> </Record> </Collection> </PropertyValue> </Record> </Annotation> </Annotations> """ ) metadata = MetadataBuilder(xml_builder.serialize()) try: metadata.build() assert 'Expected' == 'RuntimeError' except RuntimeError as ex: assert str(ex) == 'Target Type Dict of ValueHelper(Dict/Value) does not exist' metadata.config.set_custom_error_policy({ ParserError.ANNOTATION: PolicyWarning() }) metadata.build() assert_logging_policy(mock_warning, 'RuntimeError', 'Target Type Dict of ValueHelper(Dict/Value) does not exist' )
def test_annot_v_l_missing_e_s(mock_warning, xml_builder_factory): """Test correct handling of annotations whose entity set does not exist""" xml_builder = xml_builder_factory() xml_builder.add_schema( 'MISSING_ES', """ <EntityType Name="Dict" sap:content-version="1"> <Key><PropertyRef Name="Key"/></Key> <Property Name="Key" Type="Edm.String" Nullable="false" sap:unicode="false" sap:label="Key" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:value-list="standard"/> <Property Name="Value" Type="Edm.String" Nullable="false" sap:unicode="false" sap:label="Key" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:value-list="standard"/> </EntityType> <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="MISSING_ES.Dict/Value"> <Annotation Term="com.sap.vocabularies.Common.v1.ValueList"> <Record> <PropertyValue Property="Label" String="Data"/> <PropertyValue Property="CollectionPath" String="DataValueHelp"/> <PropertyValue Property="SearchSupported" Bool="true"/> <PropertyValue Property="Parameters"> <Collection> <Record Type="com.sap.vocabularies.Common.v1.ValueListParameterOut"> <PropertyValue Property="LocalDataProperty" PropertyPath="Value"/> <PropertyValue Property="ValueListProperty" String="Data"/> </Record> </Collection> </PropertyValue> </Record> </Annotation> </Annotations> """ ) metadata = MetadataBuilder(xml_builder.serialize()) with pytest.raises(RuntimeError) as e_info: metadata.build() assert str(e_info.value) == 'Entity Set DataValueHelp for ValueHelper(Dict/Value) does not exist' metadata.config.set_custom_error_policy({ ParserError.ANNOTATION: PolicyWarning() }) metadata.build() assert_logging_policy(mock_warning, 'RuntimeError', 'Entity Set DataValueHelp for ValueHelper(Dict/Value) does not exist' )
def test_annot_v_l_trgt_inv_prop(mock_warning, mock_resolve, xml_builder_factory): """Test correct handling of annotations whose target property does not exist""" xml_builder = xml_builder_factory() xml_builder.add_schema( 'MISSING_TP', """ <EntityType Name="Dict" sap:content-version="1"> <Key><PropertyRef Name="Key"/></Key> <Property Name="Key" Type="Edm.String" Nullable="false" sap:unicode="false" sap:label="Key" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:value-list="standard"/> <Property Name="Value" Type="Edm.String" Nullable="false" sap:unicode="false" sap:label="Key" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:value-list="standard"/> </EntityType> <EntityType Name="Database" sap:content-version="1"> <Key><PropertyRef Name="Data"/></Key> <Property Name="Data" Type="Edm.String" Nullable="false" sap:unicode="false" sap:label="Key" sap:creatable="false" sap:updatable="false" sap:sortable="false" sap:value-list="standard"/> </EntityType> <EntityContainer Name="EXAMPLE_SRV" m:IsDefaultEntityContainer="true" sap:supported-formats="atom json xlsx"> <EntitySet Name="DataValueHelp" EntityType="MISSING_TP.Database" sap:creatable="false" sap:updatable="false" sap:deletable="false" sap:searchable="true" sap:content-version="1"/> </EntityContainer> <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="MISSING_TP.Dict/NoExisting"> <Annotation Term="com.sap.vocabularies.Common.v1.ValueList"> <Record> <PropertyValue Property="Label" String="Data"/> <PropertyValue Property="CollectionPath" String="DataValueHelp"/> <PropertyValue Property="SearchSupported" Bool="true"/> <PropertyValue Property="Parameters"> <Collection> <Record Type="com.sap.vocabularies.Common.v1.ValueListParameterOut"> <PropertyValue Property="LocalDataProperty" PropertyPath="Value"/> <PropertyValue Property="ValueListProperty" String="Data"/> </Record> </Collection> </PropertyValue> </Record> </Annotation> </Annotations> """ ) metadata = MetadataBuilder(xml_builder.serialize()) with pytest.raises(RuntimeError) as typ_ex_info: metadata.build() assert typ_ex_info.value.args[0] == 'Target Property NoExisting of EntityType(Dict) as defined in ' \ 'ValueHelper(Dict/NoExisting) does not exist' metadata.config.set_custom_error_policy({ ParserError.ANNOTATION: PolicyIgnore() }) metadata.build() assert PolicyIgnore.resolve is mock_resolve mock_resolve.asser_called_once() metadata.config.set_custom_error_policy({ ParserError.ANNOTATION: PolicyWarning() }) metadata.build() assert_logging_policy(mock_warning, 'RuntimeError', 'Target Property NoExisting of EntityType(Dict) as defined in ValueHelper(Dict/NoExisting)' ' does not exist' )