Commit 3684dc4d authored by Marc Gravell's avatar Marc Gravell

Extra tests for FirstOrDefault code

parent 86902061
......@@ -363,6 +363,19 @@ public async Task TypeBasedViaTypeAsync()
b.IsEqualTo("abc");
}
[Fact]
public async Task TypeBasedViaTypeAsyncFirstOrDefault()
{
Type type = GetSomeType();
dynamic actual = (await marsConnection.QueryFirstOrDefaultAsync(type, "select @A as [A], @B as [B]", new { A = 123, B = "abc" }));
((object)actual).GetType().IsEqualTo(type);
int a = actual.A;
string b = actual.B;
a.IsEqualTo(123);
b.IsEqualTo("abc");
}
[Fact]
public async Task Issue22_ExecuteScalarAsync()
{
......@@ -589,6 +602,25 @@ class AsyncFoo0 { public int Id { get; set; } }
class AsyncFoo1 { public int Id { get; set; } }
class AsyncFoo2 { public int Id { get; set; } }
[Fact]
public async Task TestSchemaChangedViaFirstOrDefaultAsync()
{
await connection.ExecuteAsync("create table #dog(Age int, Name nvarchar(max)) insert #dog values(1, 'Alf')");
try
{
var d = await connection.QueryFirstOrDefaultAsync<Dog>("select * from #dog");
d.Name.IsEqualTo("Alf");
d.Age.IsEqualTo(1);
connection.Execute("alter table #dog drop column Name");
d = await connection.QueryFirstOrDefaultAsync<Dog>("select * from #dog");
d.Name.IsNull();
d.Age.IsEqualTo(1);
}
finally
{
await connection.ExecuteAsync("drop table #dog");
}
}
[Fact]
public async Task TestMultiMapArbitraryMapsAsync()
......
......@@ -258,6 +258,26 @@ public void TestSchemaChanged()
}
}
[Fact]
public void TestSchemaChangedViaFirstOrDefault()
{
connection.Execute("create table #dog(Age int, Name nvarchar(max)) insert #dog values(1, 'Alf')");
try
{
var d = connection.QueryFirstOrDefault<Dog>("select * from #dog");
d.Name.IsEqualTo("Alf");
d.Age.IsEqualTo(1);
connection.Execute("alter table #dog drop column Name");
d = connection.QueryFirstOrDefault<Dog>("select * from #dog");
d.Name.IsNull();
d.Age.IsEqualTo(1);
}
finally
{
connection.Execute("drop table #dog");
}
}
[Fact]
public void TestSchemaChangedMultiMap()
{
......@@ -845,6 +865,8 @@ public void TestFastExpandoSupportsIDictionary()
public void TestDapperSetsPrivates()
{
connection.Query<PrivateDan>("select 'one' ShadowInDB").First().Shadow.IsEqualTo(1);
connection.QueryFirstOrDefault<PrivateDan>("select 'one' ShadowInDB").Shadow.IsEqualTo(1);
}
class PrivateDan
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment