Commit dc374ad1 authored by ydango's avatar ydango Committed by Nick Craver

Shortened the changes

Combined 2 tests into one
parent 5b52424c
......@@ -11,12 +11,12 @@ public class ProcedureTests : TestBase
public void TestProcWithOutParameter()
{
connection.Execute(
@"CREATE PROCEDURE #TestProcWithOutParameter
@ID int output,
@Foo varchar(100),
@Bar int
AS
SET @ID = @Bar + LEN(@Foo)");
@"CREATE PROCEDURE #TestProcWithOutParameter
@ID int output,
@Foo varchar(100),
@Bar int
AS
SET @ID = @Bar + LEN(@Foo)");
var obj = new
{
ID = 0,
......@@ -33,13 +33,13 @@ @Bar int
public void TestProcWithOutAndReturnParameter()
{
connection.Execute(
@"CREATE PROCEDURE #TestProcWithOutAndReturnParameter
@ID int output,
@Foo varchar(100),
@Bar int
AS
SET @ID = @Bar + LEN(@Foo)
RETURN 42");
@"CREATE PROCEDURE #TestProcWithOutAndReturnParameter
@ID int output,
@Foo varchar(100),
@Bar int
AS
SET @ID = @Bar + LEN(@Foo)
RETURN 42");
var obj = new
{
ID = 0,
......@@ -63,19 +63,18 @@ public void TestIssue17648290()
p.Add("@MessageControlID", getMessageControlId);
p.Add("@SuccessCode", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@ErrorDescription", dbType: DbType.String, direction: ParameterDirection.Output, size: 255);
connection.Execute(@"CREATE PROCEDURE #up_MessageProcessed_get
@Code varchar(10),
@MessageControlID varchar(22),
@SuccessCode int OUTPUT,
@ErrorDescription varchar(255) OUTPUT
AS
BEGIN
Select 2 as MessageProcessID, 38349348 as StartNum, 3874900 as EndNum, GETDATE() as StartDate, GETDATE() as EndDate
SET @SuccessCode = 0
SET @ErrorDescription = 'Completed successfully'
END");
connection.Execute(
@"CREATE PROCEDURE #up_MessageProcessed_get
@Code varchar(10),
@MessageControlID varchar(22),
@SuccessCode int OUTPUT,
@ErrorDescription varchar(255) OUTPUT
AS
BEGIN
Select 2 as MessageProcessID, 38349348 as StartNum, 3874900 as EndNum, GETDATE() as StartDate, GETDATE() as EndDate
SET @SuccessCode = 0
SET @ErrorDescription = 'Completed successfully'
END");
var result = connection.Query(sql: "#up_MessageProcessed_get", param: p, commandType: CommandType.StoredProcedure);
var row = result.Single();
Assert.Equal(2, (int)row.MessageProcessID);
......@@ -89,7 +88,10 @@ public void TestIssue17648290()
[Fact]
public void SO24605346_ProcsAndStrings()
{
connection.Execute(@"create proc #GetPracticeRebateOrderByInvoiceNumber @TaxInvoiceNumber nvarchar(20) as
connection.Execute(
@"create proc #GetPracticeRebateOrderByInvoiceNumber
@TaxInvoiceNumber nvarchar(20)
as
select @TaxInvoiceNumber as [fTaxInvoiceNumber]");
const string InvoiceNumber = "INV0000000028PPN";
var result = connection.Query<PracticeRebateOrders>("#GetPracticeRebateOrderByInvoiceNumber", new
......@@ -118,10 +120,10 @@ public void Issue327_ReadEmptyProcedureResults()
{
// Actually testing for not erroring here on the mapping having no rows to map on in Read<T>();
connection.Execute(@"
CREATE PROCEDURE #TestEmptyResults
AS
SELECT Top 0 1 Id, 'Bob' Name;
SELECT Top 0 'Billy Goat' Creature, 'Unicorn' SpiritAnimal, 'Rainbow' Location;");
CREATE PROCEDURE #TestEmptyResults
AS
SELECT Top 0 1 Id, 'Bob' Name;
SELECT Top 0 'Billy Goat' Creature, 'Unicorn' SpiritAnimal, 'Rainbow' Location;");
var query = connection.QueryMultiple("#TestEmptyResults", commandType: CommandType.StoredProcedure);
var result1 = query.Read<Issue327_Person>();
var result2 = query.Read<Issue327_Magic>();
......@@ -150,15 +152,16 @@ public void TestProcSupport()
p.Add("b", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);
connection.Execute(@"create proc #TestProc
@a int,
@b int output
as
begin
set @b = 999
select 1111
return @a
end");
connection.Execute(@"
create proc #TestProc
@a int,
@b int output
as
begin
set @b = 999
select 1111
return @a
end");
Assert.Equal(1111, connection.Query<int>("#TestProc", p, commandType: CommandType.StoredProcedure).First());
Assert.Equal(11, p.Get<int>("c"));
......@@ -187,17 +190,15 @@ public void TestListOfAnsiStrings()
[Fact]
public void TestDateTime2PrecisionPreservedInDynamicParameters()
{
const string tempSPName = "#" + nameof(TestDateTime2PrecisionPreservedInDynamicParameters);
DateTime datetimeDefault = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime datetime2 = datetimeDefault.AddTicks(1); // Add 100 ns
Assert.True(datetimeDefault < datetime2);
var p = new DynamicParameters();
// Note: parameters declared as DateTime2
p.Add("a", datetime2, dbType: DbType.DateTime2, direction: ParameterDirection.Input);
p.Add("b", dbType: DbType.DateTime2, direction: ParameterDirection.Output);
connection.Execute(@"create proc #TestProc
connection.Execute(
$@"create proc {tempSPName}
@a datetime2,
@b datetime2 output
as
......@@ -205,26 +206,33 @@ public void TestDateTime2PrecisionPreservedInDynamicParameters()
set @b = @a
select DATEADD(ns, -100, @b)
end");
DateTime fromSelect = connection.Query<DateTime>("#TestProc", p, commandType: CommandType.StoredProcedure).First();
var p = new DynamicParameters();
// Note: parameters declared as DateTime2
p.Add("a", datetime2, dbType: DbType.DateTime2, direction: ParameterDirection.Input);
p.Add("b", dbType: DbType.DateTime2, direction: ParameterDirection.Output);
DateTime fromSelect = connection.Query<DateTime>(tempSPName, p, commandType: CommandType.StoredProcedure).First();
Assert.Equal(datetimeDefault, fromSelect);
Assert.Equal(datetime2, p.Get<DateTime>("b"));
}
[Fact]
public void TestDateTime2LosePrecisionInDynamicParameters()
[Theory()]
[InlineData(null)]
[InlineData(DbType.DateTime)]
public void TestDateTime2LosePrecisionInDynamicParameters(DbType? dbType)
{
const string tempSPName = "#" + nameof(TestDateTime2LosePrecisionInDynamicParameters);
DateTime datetimeDefault = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime datetime2 = datetimeDefault.AddTicks(1); // Add 100 ns
Assert.True(datetimeDefault < datetime2);
var p = new DynamicParameters();
// Note: parameters declared as DateTime but SP has them as DateTime2
p.Add("a", datetime2, dbType: DbType.DateTime, direction: ParameterDirection.Input);
p.Add("b", dbType: DbType.DateTime, direction: ParameterDirection.Output);
connection.Execute(@"create proc #TestProc
connection.Execute(
$@"create proc {tempSPName}
@a datetime2,
@b datetime2 output
as
......@@ -233,11 +241,17 @@ public void TestDateTime2LosePrecisionInDynamicParameters()
select @b
end");
DateTime fromSelect = connection.Query<DateTime>("#TestProc", p, commandType: CommandType.StoredProcedure).First();
var p = new DynamicParameters();
// Note: input parameter declared as DateTime (or implicitly as this) but SP has DateTime2
p.Add("a", datetime2, dbType: dbType, direction: ParameterDirection.Input);
p.Add("b", dbType: DbType.DateTime, direction: ParameterDirection.Output);
DateTime fromSelect = connection.Query<DateTime>(tempSPName, p, commandType: CommandType.StoredProcedure).First();
// @a truncates to datetimeDefault when passed into SP by DynamicParameters, add 100ns and it comes out as DateTime2
Assert.Equal(datetime2, fromSelect);
// @b gets set to datetime2 value but is truncated back to DbType.DateTime by DynamicParameters declaration
// @b gets set to datetime2 value but is truncated back to DbType.DateTime by DynamicParameter's Output declaration
Assert.Equal(datetimeDefault, p.Get<DateTime>("b"));
}
}
......
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