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() ...@@ -363,6 +363,19 @@ public async Task TypeBasedViaTypeAsync()
b.IsEqualTo("abc"); 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] [Fact]
public async Task Issue22_ExecuteScalarAsync() public async Task Issue22_ExecuteScalarAsync()
{ {
...@@ -588,7 +601,26 @@ public async Task TestSubsequentQueriesSuccessAsync() ...@@ -588,7 +601,26 @@ public async Task TestSubsequentQueriesSuccessAsync()
class AsyncFoo0 { public int Id { get; set; } } class AsyncFoo0 { public int Id { get; set; } }
class AsyncFoo1 { public int Id { get; set; } } class AsyncFoo1 { public int Id { get; set; } }
class AsyncFoo2 { 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] [Fact]
public async Task TestMultiMapArbitraryMapsAsync() public async Task TestMultiMapArbitraryMapsAsync()
......
...@@ -258,6 +258,26 @@ public void TestSchemaChanged() ...@@ -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] [Fact]
public void TestSchemaChangedMultiMap() public void TestSchemaChangedMultiMap()
{ {
...@@ -845,6 +865,8 @@ public void TestFastExpandoSupportsIDictionary() ...@@ -845,6 +865,8 @@ public void TestFastExpandoSupportsIDictionary()
public void TestDapperSetsPrivates() public void TestDapperSetsPrivates()
{ {
connection.Query<PrivateDan>("select 'one' ShadowInDB").First().Shadow.IsEqualTo(1); connection.Query<PrivateDan>("select 'one' ShadowInDB").First().Shadow.IsEqualTo(1);
connection.QueryFirstOrDefault<PrivateDan>("select 'one' ShadowInDB").Shadow.IsEqualTo(1);
} }
class PrivateDan 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