Add typed procedure descriptors and Exec invoker
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
|
||||
using System.Data;
|
||||
using System.Dynamic;
|
||||
using DynamORM.Helpers;
|
||||
using DynamORM.Tests.Helpers;
|
||||
using NUnit.Framework;
|
||||
@@ -122,6 +123,55 @@ namespace DynamORM.Tests.Procedure
|
||||
Assert.IsNull(DynamicProcedureResultBinder.GetDeclaredResultType(new object()));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestProcedureDescriptorResolvesAttributeNameAndArguments()
|
||||
{
|
||||
var descriptor = DynamicProcedureDescriptor.Resolve(typeof(ExecProcedureDescriptor));
|
||||
|
||||
Assert.AreEqual(typeof(ExecProcedureDescriptor), descriptor.ProcedureType);
|
||||
Assert.AreEqual(typeof(ProcedureParameterObject), descriptor.ArgumentsType);
|
||||
Assert.IsNull(descriptor.ResultType);
|
||||
Assert.AreEqual("dbo.sp_exec_test", descriptor.ProcedureName);
|
||||
Assert.AreEqual("sp_exec_test", descriptor.ResultName);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestProcedureDescriptorResolvesDefaultNameAndExplicitResult()
|
||||
{
|
||||
var defaultDescriptor = DynamicProcedureDescriptor.Resolve(typeof(ExecProcedureDefaultDescriptor));
|
||||
var explicitDescriptor = DynamicProcedureDescriptor.Resolve(typeof(ExecProcedureDescriptorWithExplicitResult));
|
||||
|
||||
Assert.AreEqual("ExecProcedureDefaultDescriptor", defaultDescriptor.ProcedureName);
|
||||
Assert.AreEqual(typeof(ProcedureParameterObject), defaultDescriptor.ArgumentsType);
|
||||
Assert.IsNull(defaultDescriptor.ResultType);
|
||||
|
||||
Assert.AreEqual("sp_exec_result", explicitDescriptor.ProcedureName);
|
||||
Assert.AreEqual(typeof(ProcedureParameterColumnFallbackObject), explicitDescriptor.ArgumentsType);
|
||||
Assert.AreEqual(typeof(ProcedureAttributedResult), explicitDescriptor.ResultType);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestExecRejectsWrongArgumentsType()
|
||||
{
|
||||
dynamic procedures = new DynamicProcedureInvoker(null);
|
||||
|
||||
Assert.Throws<System.InvalidOperationException>(() =>
|
||||
{
|
||||
var ignored = procedures.Exec<ExecProcedureDescriptor>(new ProcedureParameterColumnFallbackObject());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestExecRejectsMultipleArguments()
|
||||
{
|
||||
dynamic procedures = new DynamicProcedureInvoker(null);
|
||||
|
||||
Assert.Throws<System.InvalidOperationException>(() =>
|
||||
{
|
||||
var ignored = procedures.Exec<ExecProcedureDescriptor>(new ProcedureParameterObject(), new ProcedureParameterObject());
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDeclaredResultPayloadBindingMapsMainAndOutValues()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user