Add declarative procedure result-set binding
This commit is contained in:
@@ -172,6 +172,40 @@ namespace DynamORM.Tests.Procedure
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDeclaredResultCanReadAttributedResultSets()
|
||||
{
|
||||
using (var reader = new FakeMultiResultDataReader(
|
||||
Tuple.Create(new[] { "Code" }, new[] { typeof(string) }, new[] { new object[] { "FIRST" }, new object[] { "SECOND" } }),
|
||||
Tuple.Create(new[] { "Code" }, new[] { typeof(string) }, new[] { new object[] { "A" }, new object[] { "B" } }),
|
||||
Tuple.Create(new[] { "State" }, new[] { typeof(int) }, new[] { new object[] { 10 }, new object[] { 20 } }),
|
||||
Tuple.Create(
|
||||
new[] { "id", "code", "first" },
|
||||
new[] { typeof(long), typeof(string), typeof(string) },
|
||||
new[] { new object[] { 1L, "U1", "One" } }),
|
||||
Tuple.Create(
|
||||
new[] { "id", "code", "first" },
|
||||
new[] { typeof(long), typeof(string), typeof(string) },
|
||||
new[] { new object[] { 2L, "U2", "Two" }, new object[] { 3L, "U3", "Three" } }),
|
||||
Tuple.Create(new[] { "Code" }, new[] { typeof(string) }, new[] { new object[] { "X" }, new object[] { "Y" } })))
|
||||
{
|
||||
var result = DynamicProcedureResultBinder.ReadDeclaredResult(typeof(ProcedureAttributedResult), reader) as ProcedureAttributedResult;
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.AreEqual("FIRST", result.FirstCode);
|
||||
CollectionAssert.AreEqual(new[] { "A", "B" }, result.Codes);
|
||||
CollectionAssert.AreEqual(new[] { 10, 20 }, result.States);
|
||||
Assert.NotNull(result.User);
|
||||
Assert.AreEqual(1L, result.User.Id);
|
||||
Assert.AreEqual("U1", result.User.Code);
|
||||
Assert.NotNull(result.AllUsers);
|
||||
Assert.AreEqual(2, result.AllUsers.Count);
|
||||
Assert.NotNull(result.CodesTable);
|
||||
Assert.AreEqual("codes_table", result.CodesTable.TableName);
|
||||
Assert.AreEqual(2, result.CodesTable.Rows.Count);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDeclaredResultPayloadCanAugmentReaderResult()
|
||||
{
|
||||
@@ -195,5 +229,13 @@ namespace DynamORM.Tests.Procedure
|
||||
CollectionAssert.AreEqual(new[] { "A" }, result.Codes);
|
||||
CollectionAssert.AreEqual(new[] { 10 }, result.States);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDeclaredResultBindingDetectionSupportsAttributedResults()
|
||||
{
|
||||
Assert.IsTrue(DynamicProcedureResultBinder.HasDeclaredResultBinding(typeof(ProcedureMultiResult)));
|
||||
Assert.IsTrue(DynamicProcedureResultBinder.HasDeclaredResultBinding(typeof(ProcedureAttributedResult)));
|
||||
Assert.IsFalse(DynamicProcedureResultBinder.HasDeclaredResultBinding(typeof(ProcedureParameterResult)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user