internal void GetValueFromRefCursor_Object_NullValue(MetadataOracleNetTypeDefinition typedef, Mock <IOracleRefCursorWrapper> refCursorWrapper, Mock <IOracleDataReaderWrapper> dataReaderWrapper, Mock <MetadataOracleCommon> common) { var prop = typedef.Properties.OrderBy(c => c.Order).First(); prop.NETProperty = typeof(SimpleTestClass).GetProperty(nameof(SimpleTestClass.Prop1)); refCursorWrapper.Setup(r => r.GetDataReader()).Returns(dataReaderWrapper.Object); dataReaderWrapper.SetupSequence(d => d.Read()) .Returns(true) .Returns(false); dataReaderWrapper.Setup(d => d.GetOracleValue(0)) .Returns(null) .Verifiable(); common.Setup(c => c.ConvertOracleParameterToBaseType(typeof(string), null)) .Returns(null) .Verifiable(); var metadata = new MetadataOracleObject <SimpleTestClass>(typedef, common.Object); var result = metadata.GetValueFromRefCursor(typeof(SimpleTestClass), refCursorWrapper.Object); dataReaderWrapper.Verify(); common.Verify(); Assert.NotNull(result); var actual = Assert.IsType <SimpleTestClass>(result); Assert.NotNull(actual); Assert.Null(actual.Prop1); }
internal void MetadataOracleNetTypeDefinition_Properties_WithMap(ServForOracleCache cache, MetadataOracleTypeDefinition baseMetadataDefinition, bool fuzzyNameMatch) { var props = baseMetadataDefinition.Properties.ToArray(); var type = typeof(SimpleClass); var presetProperties = new UdtPropertyNetPropertyMap[] { new UdtPropertyNetPropertyMap(nameof(SimpleClass.Prop1), props[0].Name), new UdtPropertyNetPropertyMap(nameof(SimpleClass.Prop2), props[1].Name), new UdtPropertyNetPropertyMap(nameof(SimpleClass.Prop3), props[2].Name) }; var typedef = new MetadataOracleNetTypeDefinition(cache, type, baseMetadataDefinition, presetProperties, fuzzyNameMatch); Assert.NotNull(typedef); Assert.Same(baseMetadataDefinition.UDTInfo, typedef.UDTInfo); Assert.NotNull(typedef.Properties); Assert.NotEmpty(typedef.Properties); Assert.Equal(baseMetadataDefinition.Properties.Count(), typedef.Properties.Count()); Assert.All(typedef.Properties, c => Assert.Contains(baseMetadataDefinition.Properties, d => d.Name == c.Name && d.Order == c.Order)); Assert.Collection(typedef.Properties, c => Assert.Equal(type.GetProperty(nameof(SimpleClass.Prop1)), c.NETProperty), c => Assert.Equal(type.GetProperty(nameof(SimpleClass.Prop2)), c.NETProperty), c => Assert.Equal(type.GetProperty(nameof(SimpleClass.Prop3)), c.NETProperty) ); }
internal void GetValueFromRefCursor_Object_WithMetadata(MetadataOracleNetTypeDefinition typedef, MetadataOracleNetTypeDefinition subTypedef, Mock <IOracleRefCursorWrapper> refCursorWrapper, Mock <IOracleDataReaderWrapper> dataReaderWrapper, Mock <MetadataOracleCommon> common, SimpleTestClass oracleValue) { var prop = typedef.Properties.OrderBy(c => c.Order).First(); prop.NETProperty = typeof(ComplexTestClass).GetProperty(nameof(ComplexTestClass.ObjectProp)); prop.PropertyMetadata = subTypedef; refCursorWrapper.Setup(r => r.GetDataReader()).Returns(dataReaderWrapper.Object); dataReaderWrapper.SetupSequence(d => d.Read()) .Returns(true) .Returns(false); common.Setup(c => c.GetValueFromOracleXML(typeof(SimpleTestClass), null)) .Returns(oracleValue) .Verifiable(); var metadata = new MetadataOracleObject <ComplexTestClass>(typedef, common.Object); var result = metadata.GetValueFromRefCursor(typeof(ComplexTestClass), refCursorWrapper.Object); common.Verify(); Assert.NotNull(result); var actual = Assert.IsType <ComplexTestClass>(result); Assert.NotNull(actual.ObjectProp); Assert.Equal(oracleValue, actual.ObjectProp); }
internal void GetDeclareLine_Object_Simple(MetadataOracleNetTypeDefinition typedef, MetadataOracleCommon common, string parameterName, OracleUdtInfo udtInfo) { var type = typeof(SimpleTestClass); var metadata = new MetadataOracleObject <SimpleTestClass>(typedef, common); var declareLine = metadata.GetDeclareLine(type, parameterName, udtInfo); Assert.Equal($"{parameterName} {udtInfo.FullObjectName};" + Environment.NewLine, declareLine); }
internal void GetRefCursorQuery_NoMetadata_ReturnsDummyQuery(MetadataOracleNetTypeDefinition typedef, int startNumber, string fieldName) { var metadata = new MetadataOracleObject <SimpleTestClass>(typedef, new MetadataOracleCommon()); var actual = metadata.GetRefCursorQuery(startNumber, fieldName); Assert.NotNull(actual); Assert.Equal($"open :{startNumber} for select 1 dummy{Environment.NewLine} from dual;", actual); }
internal void GetOracleParameters_Array_NoMatch_ReturnsEmpty(MetadataOracleNetTypeDefinition typedef, SimpleTestClass[] model, int startNumber) { var metadata = new MetadataOracleObject <SimpleTestClass[]>(typedef, new MetadataOracleCommon()); var actual = metadata.GetOracleParameters(model, startNumber); Assert.NotNull(actual); Assert.Empty(actual); }
internal void MetadataOracleObject_Constructor_Collection(ServForOracleCache cache, MetadataOracleTypeDefinition metadataOracleType, UdtPropertyNetPropertyMap[] customProperties, bool fuzzyNameMatch) { var typedef = new MetadataOracleNetTypeDefinition(cache, typeof(TestClass[]).GetCollectionUnderType(), metadataOracleType, customProperties, fuzzyNameMatch); var metadata = new MetadataOracleObject <TestClass[]>(typedef, new MetadataOracleCommon()); Assert.NotNull(metadata); Assert.NotNull(metadata.OracleTypeNetMetadata); Assert.NotNull(metadata.OracleTypeNetMetadata.Properties); CompareOracleTypeNetMetadata(metadataOracleType.Properties.ToArray(), metadata.OracleTypeNetMetadata.Properties.ToArray()); Assert.Equal(metadataOracleType.UDTInfo, metadata.OracleTypeNetMetadata.UDTInfo); }
internal void GetDeclareLine_Collection(MetadataOracleNetTypeDefinition typedef, MetadataOracleCommon common, string parameterName, OracleUdtInfo udtInfo) { var type = typeof(ComplexTestClass[]); var metadata = new MetadataOracleObject <ComplexTestClass[]>(typedef, common); var declareLine = metadata.GetDeclareLine(type, parameterName, udtInfo); var expected = $"{parameterName} {udtInfo.FullCollectionName} := {udtInfo.FullCollectionName}();" + Environment.NewLine; Assert.Equal(expected, declareLine); }
internal void MetadataOracleNetTypeDefinition_NoTypeProperties(ServForOracleCache cache, MetadataOracleTypeDefinition baseMetadataDefinition, UdtPropertyNetPropertyMap[] presetProperties, bool fuzzyNameMatch) { var typedef = new MetadataOracleNetTypeDefinition(cache, typeof(TestClass), baseMetadataDefinition, presetProperties, fuzzyNameMatch); Assert.NotNull(typedef); Assert.Same(baseMetadataDefinition.UDTInfo, typedef.UDTInfo); Assert.NotNull(typedef.Properties); Assert.NotEmpty(typedef.Properties); Assert.Equal(baseMetadataDefinition.Properties.Count(), typedef.Properties.Count()); Assert.All(typedef.Properties, c => Assert.Contains(baseMetadataDefinition.Properties, d => d.Name == c.Name)); Assert.All(typedef.Properties, c => Assert.Null(c.NETProperty)); }
internal void BuildQueryConstructorString_Object_NoMatch_AllPropertiesNull(ServForOracleCache cache, MetadataOracleTypeDefinition metadataOracleType, UdtPropertyNetPropertyMap[] customProperties, bool fuzzyNameMatch, TestClass model, string name, int startNumber) { var typedef = new MetadataOracleNetTypeDefinition(cache, typeof(TestClass), metadataOracleType, customProperties, fuzzyNameMatch); var metadata = new MetadataOracleObject <TestClass>(typedef, new MetadataOracleCommon()); var(constructor, lastNumber) = metadata.BuildQueryConstructorString(model, name, startNumber); Assert.NotNull(constructor); var expectedConstructor = $"{name} := {metadataOracleType.UDTInfo.FullObjectName}({string.Join(',', metadataOracleType.Properties.OrderBy(c => c.Order).Select(c => $"{c.Name}=>null"))});" + Environment.NewLine; Assert.Equal(expectedConstructor, constructor); Assert.Equal(startNumber, lastNumber); }
internal void GetRefCursorQuery_NetProperty_ReturnsRootQuery(MetadataOracleNetTypeDefinition typedef, int startNumber, string fieldName) { var prop = typedef.Properties.OrderBy(c => c.Order).First(); prop.NETProperty = typeof(SimpleTestClass).GetProperty(nameof(SimpleTestClass.Prop1)); var metadata = new MetadataOracleObject <SimpleTestClass>(typedef, new MetadataOracleCommon()); var actual = metadata.GetRefCursorQuery(startNumber, fieldName); Assert.NotNull(actual); Assert.Equal($"open :{startNumber} for select value({fieldName}).{prop.Name} {prop.NETProperty.Name}{Environment.NewLine} from dual;", actual); }
internal void GetOracleParameterForRefCursor_CallsCommon(MetadataOracleNetTypeDefinition typedef, Mock <MetadataOracleCommon> common, int startNumber, OracleParameter parameter) { common.Setup(c => c.GetOracleParameterForRefCursor(startNumber)) .Returns(parameter) .Verifiable(); var metadata = new MetadataOracleObject <SimpleTestClass>(typedef, common.Object); var actual = metadata.GetOracleParameterForRefCursor(startNumber); Assert.NotNull(actual); common.Verify(); Assert.Same(parameter, actual); }
internal async Task GetMetadataOracleObjectAsync_FindsInCache(OracleUdtInfo info, MetadataOracleTypeDefinition typeDefinition, UdtPropertyNetPropertyMap[] properties) { var typedef = new MetadataOracleNetTypeDefinition(cacheMoq.Object, typeof(TestRoy), typeDefinition, properties, fuzzyNameMatch: true); var metadata = new MetadataOracleObject <TestRoy>(typedef, new MetadataOracleCommon()); cacheMoq.Setup(c => c.GetMetadata(typeof(TestRoy).FullName)) .Returns(metadata) .Verifiable(); var builder = new MetadataBuilder(connectionMoq.Object, cacheMoq.Object, loggerMoq.Object); var result = await builder.GetOrRegisterMetadataOracleObjectAsync <TestRoy>(info); cacheMoq.Verify(); Assert.Equal(metadata, result); }
internal void GetValueFromRefCursor_Object(MetadataOracleNetTypeDefinition typedef, Mock <IOracleRefCursorWrapper> refCursorWrapper, Mock <IOracleDataReaderWrapper> dataReaderWrapper) { var metadata = new MetadataOracleObject <SimpleTestClass>(typedef, new MetadataOracleCommon()); refCursorWrapper.Setup(r => r.GetDataReader()).Returns(dataReaderWrapper.Object); dataReaderWrapper.SetupSequence(d => d.Read()) .Returns(true) .Returns(false); var result = metadata.GetValueFromRefCursor(typeof(SimpleTestClass), refCursorWrapper.Object); Assert.NotNull(result); var actual = Assert.IsType <SimpleTestClass>(result); Assert.Null(actual.Prop1); }
internal void GetDeclareLine_Object_WithMetadata(MetadataOracleNetTypeDefinition typedef, MetadataOracleNetTypeDefinition subTypeDef, MetadataOracleCommon common, string parameterName, OracleUdtInfo udtInfo) { var type = typeof(ComplexTestClass); var prop = typedef.Properties.First(); prop.PropertyMetadata = subTypeDef; prop.NETProperty = type.GetProperty(nameof(ComplexTestClass.ObjectProp)); var metadata = new MetadataOracleObject <ComplexTestClass>(typedef, common); var declareLine = metadata.GetDeclareLine(type, parameterName, udtInfo); var expected = $"{parameterName}_0 {subTypeDef.UDTInfo.FullObjectName};" + Environment.NewLine + $"{parameterName} {udtInfo.FullObjectName};" + Environment.NewLine; Assert.Equal(expected, declareLine); }
internal void MetadataOracleNetTypeDefinition_Properties_WithMap_WithAttribute(ServForOracleCache cache, MetadataOracleTypeDefinition baseMetadataDefinition, bool fuzzyNameMatch) { var props = baseMetadataDefinition.Properties.ToArray(); var type = typeof(ClassWithAttribute); props[0].Name = "Test"; var presetProperties = new UdtPropertyNetPropertyMap[] { new UdtPropertyNetPropertyMap(nameof(ClassWithAttribute.Prop1), props[0].Name) }; var typedef = new MetadataOracleNetTypeDefinition(cache, type, baseMetadataDefinition, presetProperties, fuzzyNameMatch); Assert.NotNull(typedef); Assert.Same(baseMetadataDefinition.UDTInfo, typedef.UDTInfo); Assert.NotNull(typedef.Properties); Assert.NotEmpty(typedef.Properties); Assert.Equal(baseMetadataDefinition.Properties.Count(), typedef.Properties.Count()); Assert.Collection(typedef.Properties, c => { Assert.Equal(type.GetProperty(nameof(ClassWithAttribute.Prop1)), c.NETProperty); Assert.Equal("Test", c.Name, ignoreCase: true); Assert.Equal(props[0].Order, c.Order); Assert.Null(c.PropertyMetadata); }, c => { Assert.Equal(props[1].Name, c.Name, ignoreCase: true); Assert.Equal(props[1].Order, c.Order); Assert.Null(c.NETProperty); Assert.Null(c.PropertyMetadata); }, c => { Assert.Equal(props[2].Name, c.Name, ignoreCase: true); Assert.Equal(props[2].Order, c.Order); Assert.Null(c.NETProperty); Assert.Null(c.PropertyMetadata); } ); }
internal void BuildQueryConstructorString_Array(MetadataOracleNetTypeDefinition typedef, SimpleTestClass[] model, string name, int startNumber) { var metadata = new MetadataOracleObject <SimpleTestClass[]>(typedef, new MetadataOracleCommon()); var(constructor, lastNumber) = metadata.BuildQueryConstructorString(model, name, startNumber); Assert.NotNull(constructor); var expectedConstructor = new StringBuilder(); for (var i = 0; i < model.Length; i++) { expectedConstructor.AppendLine($"{name}.extend;"); expectedConstructor.Append($"{name}({name}.last) := {typedef.UDTInfo.FullObjectName}("); expectedConstructor.Append(string.Join(',', typedef.Properties.OrderBy(c => c.Order).Select(c => $"{c.Name}=>null"))); expectedConstructor.AppendLine(");"); } Assert.Equal(expectedConstructor.ToString(), constructor); Assert.Equal(startNumber, lastNumber); }
internal void GetRefCursorQuery_NetProperty_MultipleProperties(MetadataOracleNetTypeDefinition typedef, int startNumber, string fieldName) { var prop = typedef.Properties.OrderBy(c => c.Order).First(); prop.NETProperty = typeof(MultiplePropertiesTestClass).GetProperty(nameof(MultiplePropertiesTestClass.Prop1)); var anotherProp = typedef.Properties.Where(c => c != prop).OrderBy(c => c.Order).First(); anotherProp.NETProperty = typeof(MultiplePropertiesTestClass).GetProperty(nameof(MultiplePropertiesTestClass.Prop2)); var metadata = new MetadataOracleObject <SimpleTestClass>(typedef, new MetadataOracleCommon()); var actual = metadata.GetRefCursorQuery(startNumber, fieldName); Assert.NotNull(actual); var expected = $"open :{startNumber} for select value({fieldName}).{prop.Name} {prop.NETProperty.Name}," + Environment.NewLine + $"value({fieldName}).{anotherProp.Name} {anotherProp.NETProperty.Name}" + $"{Environment.NewLine} from dual;"; Assert.Equal(expected, actual); }
internal void GetValueFromRefCursor_Collection_NullValue(MetadataOracleNetTypeDefinition typedef, Mock <IOracleRefCursorWrapper> refCursorWrapper, Mock <IOracleDataReaderWrapper> dataReaderWrapper, Mock <MetadataOracleCommon> common, SimpleTestClass[] simples, object oracleValue) { var prop = typedef.Properties.OrderBy(c => c.Order).First(); prop.NETProperty = typeof(SimpleTestClass).GetProperty(nameof(SimpleTestClass.Prop1)); refCursorWrapper.Setup(r => r.GetDataReader()).Returns(dataReaderWrapper.Object); dataReaderWrapper.SetupSequence(d => d.Read()) .Returns(true).Returns(true).Returns(true) .Returns(false); int i = 0; dataReaderWrapper.Setup(d => d.GetOracleValue(i)) .Callback(() => i++) .Returns(oracleValue); common.SetupSequence(c => c.ConvertOracleParameterToBaseType(typeof(string), oracleValue)) .Returns(simples[0].Prop1) .Returns(simples[1].Prop1) .Returns(simples[2].Prop1); //.Verifiable(); var metadata = new MetadataOracleObject <SimpleTestClass>(typedef, common.Object); var result = metadata.GetValueFromRefCursor(typeof(SimpleTestClass[]), refCursorWrapper.Object); dataReaderWrapper.Verify(); common.Verify(); Assert.NotNull(result); var actual = Assert.IsType <SimpleTestClass[]>(result); Assert.NotNull(actual); Assert.Collection(actual, c => Assert.Equal(simples[0].Prop1, c.Prop1), c => Assert.Equal(simples[1].Prop1, c.Prop1), c => Assert.Equal(simples[2].Prop1, c.Prop1) ); }
internal void GetRefCursorQuery_WithMetadata_Array_ReturnsXMLElement(MetadataOracleNetTypeDefinition typedef, MetadataOracleNetTypeDefinition metaTypeProp, int startNumber, string fieldName) { var prop = typedef.Properties.OrderBy(c => c.Order).First(); prop.NETProperty = typeof(ComplexTestClass).GetProperty(nameof(ComplexTestClass.ObjectProp)); prop.PropertyMetadata = metaTypeProp; var subProp = metaTypeProp.Properties.OrderBy(c => c.Order).First(); subProp.NETProperty = typeof(SimpleTestClass).GetProperty(nameof(SimpleTestClass.Prop1)); var metadata = new MetadataOracleObject <ComplexTestClass[]>(typedef, new MetadataOracleCommon()); var actual = metadata.GetRefCursorQuery(startNumber, fieldName); Assert.NotNull(actual); var expected = $"open :{startNumber} for select (select xmlelement( \"{prop.NETProperty.Name}\", " + $"xmlconcat( XmlElement(\"{subProp.NETProperty.Name}\", value(c).{prop.Name}.{subProp.Name})) " + $") from dual) {prop.NETProperty.Name}{Environment.NewLine} from table({fieldName}) c;"; Assert.Equal(expected, actual); }
internal void MetadataOracleNetTypeDefinition_Properties_WithMap_WithMetadata(ServForOracleCache cache, MetadataOracleTypeDefinition baseMetadataDefinition, bool fuzzyNameMatch, MetadataOracleTypeSubTypeDefinition subTypeDef, MetadataOracleTypeSubTypeDefinition colSubTypeDef) { var props = baseMetadataDefinition.Properties.ToArray(); var type = typeof(SimpleClass); var presetProperties = new UdtPropertyNetPropertyMap[] { new UdtPropertyNetPropertyMap(nameof(SimpleClass.Prop1), subTypeDef.Name), new UdtPropertyNetPropertyMap(nameof(SimpleClass.Prop2), props[1].Name), new UdtPropertyNetPropertyMap(nameof(SimpleClass.Prop3), props[2].Name), new UdtPropertyNetPropertyMap(nameof(SimpleClass.Prop4), colSubTypeDef.Name) }; baseMetadataDefinition.Properties = new MetadataOracleTypePropertyDefinition[] { subTypeDef, props[1], props[2], colSubTypeDef }; var typedef = new MetadataOracleNetTypeDefinition(cache, type, baseMetadataDefinition, presetProperties, fuzzyNameMatch); Assert.NotNull(typedef); Assert.Same(baseMetadataDefinition.UDTInfo, typedef.UDTInfo); Assert.NotNull(typedef.Properties); Assert.NotEmpty(typedef.Properties); Assert.Equal(4, typedef.Properties.Count()); Assert.Collection(typedef.Properties, c => { Assert.Equal(subTypeDef.Name, c.Name, ignoreCase: true); Assert.Equal(subTypeDef.Order, c.Order); Assert.NotNull(c.PropertyMetadata); Assert.NotNull(c.PropertyMetadata.Properties); Assert.NotEmpty(c.PropertyMetadata.Properties); Assert.All(c.PropertyMetadata.Properties, d => Assert.Contains(subTypeDef.MetadataOracleType.Properties, e => e.Name == d.Name && e.Order == d.Order)); }, c => { Assert.Equal(props[1].Name, c.Name, ignoreCase: true); Assert.Equal(props[1].Order, c.Order); }, c => { Assert.Equal(props[2].Name, c.Name, ignoreCase: true); Assert.Equal(props[2].Order, c.Order); }, c => { Assert.Equal(colSubTypeDef.Name, c.Name, ignoreCase: true); Assert.Equal(colSubTypeDef.Order, c.Order); Assert.NotNull(c.PropertyMetadata); Assert.NotNull(c.PropertyMetadata.Properties); Assert.NotEmpty(c.PropertyMetadata.Properties); Assert.All(c.PropertyMetadata.Properties, d => Assert.Contains(colSubTypeDef.MetadataOracleType.Properties, e => e.Name == d.Name && e.Order == d.Order)); } ); Assert.Collection(typedef.Properties, c => Assert.Equal(type.GetProperty(nameof(SimpleClass.Prop1)), c.NETProperty), c => Assert.Equal(type.GetProperty(nameof(SimpleClass.Prop2)), c.NETProperty), c => Assert.Equal(type.GetProperty(nameof(SimpleClass.Prop3)), c.NETProperty), c => Assert.Equal(type.GetProperty(nameof(SimpleClass.Prop4)), c.NETProperty) ); }
internal void BuildQueryConstructorString_Object_SimpleNetProperty_WithMetadata(MetadataOracleNetTypeDefinition typedef, MetadataOracleNetTypeDefinition metTypeDef, SimpleTestClass model, string name, int startNumber) { var prop = typedef.Properties.OrderBy(c => c.Order).First(); prop.NETProperty = typeof(SimpleTestClass).GetProperty(nameof(SimpleTestClass.Prop1)); prop.PropertyMetadata = metTypeDef; var metadata = new MetadataOracleObject <SimpleTestClass>(typedef, new MetadataOracleCommon()); var(constructor, lastNumber) = metadata.BuildQueryConstructorString(model, name, startNumber); Assert.NotNull(constructor); var expectedConstructor = new StringBuilder(); expectedConstructor.AppendLine($"{name}_0 := {metTypeDef.UDTInfo.FullObjectName}({string.Join(',', metTypeDef.Properties.OrderBy(c => c.Order).Select(c => $"{c.Name}=>null"))});"); expectedConstructor.Append($"{name} := {typedef.UDTInfo.FullObjectName}({prop.Name}=>{name}_0,"); expectedConstructor.Append(string.Join(',', typedef.Properties.OrderBy(c => c.Order).Where(c => c.Name != prop.Name).Select(c => $"{c.Name}=>null"))); expectedConstructor.AppendLine(");"); Assert.Equal(expectedConstructor.ToString(), constructor); Assert.Equal(startNumber, lastNumber); }
internal void BuildQueryConstructorString_Object_SimpleNetProperty_NullPropertyValue(MetadataOracleNetTypeDefinition typedef, string name, int startNumber) { var prop = typedef.Properties.OrderBy(c => c.Order).First(); prop.NETProperty = typeof(SimpleTestClass).GetProperty(nameof(SimpleTestClass.Prop1)); var metadata = new MetadataOracleObject <SimpleTestClass>(typedef, new MetadataOracleCommon()); var(constructor, lastNumber) = metadata.BuildQueryConstructorString(new SimpleTestClass(), name, startNumber); Assert.NotNull(constructor); var expectedConstructor = $"{name} := {typedef.UDTInfo.FullObjectName}({string.Join(',', typedef.Properties.OrderBy(c => c.Order).Select(c => $"{c.Name}=>null"))});" + Environment.NewLine; Assert.Equal(expectedConstructor, constructor); Assert.Equal(startNumber, lastNumber); }
internal void GetOracleParameters_Object_Metadata_ReturnsSubPropertyParameters(MetadataOracleNetTypeDefinition typedef, ComplexTestClass model, MetadataOracleNetTypeDefinition metaTypeDef, int startNumber) { var prop = typedef.Properties.OrderBy(c => c.Order).First(); prop.NETProperty = typeof(ComplexTestClass).GetProperty(nameof(ComplexTestClass.ObjectProp)); prop.PropertyMetadata = metaTypeDef; var subProp = metaTypeDef.Properties.OrderBy(c => c.Order).First(); subProp.NETProperty = typeof(SimpleTestClass).GetProperty(nameof(SimpleTestClass.Prop1)); var metadata = new MetadataOracleObject <ComplexTestClass>(typedef, new MetadataOracleCommon()); var actual = metadata.GetOracleParameters(model, startNumber); Assert.NotNull(actual); var oraProp = Assert.Single(actual); Assert.NotNull(oraProp); Assert.Equal($":{startNumber}", oraProp.ParameterName); Assert.Equal(ParameterDirection.Input, oraProp.Direction); Assert.Equal(model.ObjectProp.Prop1, oraProp.Value); }
internal void GetOracleParameters_Object_Metadata_CollectionProperty_ObjectProperty_ReturnsSubPropertyParameters(MetadataOracleNetTypeDefinition typedef, CollectionPropertyTestClass model, MetadataOracleNetTypeDefinition metaTypeDef, int startNumber) { var prop = typedef.Properties.OrderBy(c => c.Order).First(); prop.NETProperty = typeof(CollectionPropertyTestClass).GetProperty(nameof(CollectionPropertyTestClass.Prop2)); prop.PropertyMetadata = metaTypeDef; var subProp = metaTypeDef.Properties.OrderBy(c => c.Order).First(); subProp.NETProperty = typeof(SimpleTestClass).GetProperty(nameof(SimpleTestClass.Prop1)); var metadata = new MetadataOracleObject <CollectionPropertyTestClass>(typedef, new MetadataOracleCommon()); var actual = metadata.GetOracleParameters(model, startNumber); Assert.NotNull(actual); Assert.All(actual, c => Assert.Equal(ParameterDirection.Input, c.Direction)); Assert.Collection(actual, (c) => { Assert.Equal($":{startNumber++}", c.ParameterName); Assert.Equal(model.Prop2[0].Prop1, c.Value); }, (c) => { Assert.Equal($":{startNumber++}", c.ParameterName); Assert.Equal(model.Prop2[1].Prop1, c.Value); }, (c) => { Assert.Equal($":{startNumber}", c.ParameterName); Assert.Equal(model.Prop2[2].Prop1, c.Value); }); }