Skip to content

Commit 52da4c8

Browse files
committed
Added double ledger test for Private_Results view; Test for Private_CleanUpCmdHandler; Completed(!?) tests for Private_HandleMessageAndResult; More AnnotationNoTransactionTests.
1 parent 6b8f9d1 commit 52da4c8

7 files changed

Lines changed: 96 additions & 18 deletions

Source/tSQLt.Private_CleanUpCmdHandler.ssp.sql

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@ BEGIN
1212
EXEC(@CleanUpCmd);
1313
END TRY
1414
BEGIN CATCH
15-
--SET @TestMsg = (CASE WHEN @TestMsg <> '' THEN @TestMsg + ' [Result: '+ ISNULL(@TestResult,'<NULL>') + '] || ' ELSE '' END) + 'Error during clean up: (' + (SELECT FormattedError FROM tSQLt.Private_GetFormattedErrorInfo()) + ')';
16-
--SET @TestResult = @ResultInCaseOfError;
17-
1815
DECLARE @NewMsg NVARCHAR(MAX) = 'Error during clean up: (' + (SELECT FormattedError FROM tSQLt.Private_GetFormattedErrorInfo()) + ')';
1916
SELECT @TestMsg = Message, @TestResult = Result FROM tSQLt.Private_HandleMessageAndResult(@TestMsg /*PrevMsg*/, @TestResult /*PrevResult*/, @NewMsg /*NewMsg*/, @ResultInCaseOfError /*NewResult*/);
2017
END CATCH;

Source/tSQLt.Private_HandleMessageAndResult.sfn.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ CREATE FUNCTION tSQLt.Private_HandleMessageAndResult (
1111
RETURNS TABLE
1212
AS
1313
RETURN
14-
SELECT CASE WHEN @PrevMessage NOT LIKE '%[^ '+CHAR(9)+']%' AND @PrevResult = 'Success' THEN ''
14+
SELECT CASE WHEN ISNULL(@PrevMessage,'') NOT LIKE '%[^ '+CHAR(9)+']%' AND @PrevResult = 'Success' THEN ''
1515
ELSE CASE WHEN @PrevMessage NOT LIKE '%[^ '+CHAR(9)+']%' THEN '<empty>' ELSE ISNULL(@PrevMessage,'<NULL>') END+' [Result: '+
1616
CASE WHEN @PrevResult NOT LIKE '%[^ '+CHAR(9)+']%' THEN '<empty>' ELSE ISNULL(@PrevResult,'<NULL>') END+'] || '
1717
END+

Tests/AnnotationNoTransactionTests.class.sql

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1513,7 +1513,7 @@ END;
15131513
GO
15141514
/*-----------------------------------------------------------------------------------------------*/
15151515
GO
1516-
CREATE PROCEDURE AnnotationNoTransactionTests.[test Private_AssertNoSideEffects is executed after all CleanUps and throws an error if they are new, missing, or renamed objects]
1516+
CREATE PROCEDURE AnnotationNoTransactionTests.[test Private_AssertNoSideEffects is executed after all CleanUps and throws an error if there are new/missing/renamed objects]
15171517
AS
15181518
BEGIN
15191519
EXEC tSQLt.NewTestClass 'MyInnerTests'
@@ -1545,13 +1545,29 @@ GO
15451545
CREATE PROCEDURE AnnotationNoTransactionTests.[test Private-CleanUp when @Result = FATAL, it is not overwritten by another Result]
15461546
AS
15471547
BEGIN
1548-
EXEC tSQLt.Fail 'TODO';
1548+
EXEC tSQLt.NewTestClass 'MyInnerTests'
1549+
EXEC('
1550+
--[@'+'tSQLt:NoTransaction](DEFAULT)
1551+
CREATE PROCEDURE MyInnerTests.[test1]
1552+
AS
1553+
BEGIN
1554+
RETURN;
1555+
END;
1556+
');
1557+
EXEC tSQLt.SpyProcedure @ProcedureName = 'tSQLt.Private_NoTransactionHandleTables', @CommandToExecute = 'IF(@Action=''Reset'')RAISERROR(''AFatalError'',16,10);';
1558+
EXEC tSQLt.SpyProcedure @ProcedureName = 'tSQLt.UndoTestDoubles', @CommandToExecute = 'RAISERROR(''AnAbortError'',16,10);';
1559+
1560+
EXEC tSQLt.SetSummaryError 0;
1561+
EXEC tSQLt.Run 'MyInnerTests.[test1]';
1562+
1563+
DECLARE @Actual NVARCHAR(MAX) = (SELECT Result FROM tSQLt.TestResult);
1564+
1565+
EXEC tSQLt.AssertEqualsString @Expected = 'FATAL', @Actual = @Actual;
15491566
END;
15501567
GO
15511568
/*-----------------------------------------------------------------------------------------------*/
15521569
GO
1553-
--[@tSQLt:SkipTest]('TODO')
1554-
CREATE PROCEDURE AnnotationNoTransactionTests.[test Private-CleanUp @Result is not overwritten by an error in Private_AssertNoSideEffects]
1570+
CREATE PROCEDURE AnnotationNoTransactionTests.[test Private_AssertNoSideEffects is using Private_CleanUpCmdHandler]
15551571
AS
15561572
BEGIN
15571573
EXEC tSQLt.Fail 'TODO';
Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,44 @@
11
EXEC tSQLt.NewTestClass 'Private_CleanUpCmdHandlerTests';
22
GO
3-
/* What is
4-
*/
5-
CREATE PROCEDURE Private_CleanUpCmdHandlerTests.[test TODO]
3+
GO
4+
/*-----------------------------------------------------------------------------------------------*/
5+
GO
6+
CREATE FUNCTION Private_CleanUpCmdHandlerTests.[return 42134213 if correct error]()
7+
RETURNS TABLE
8+
AS
9+
RETURN
10+
SELECT '9999' + ERROR_MESSAGE() FormattedError;
11+
GO
12+
GO
13+
/*-----------------------------------------------------------------------------------------------*/
14+
GO
15+
CREATE FUNCTION Private_CleanUpCmdHandlerTests.[return 42424242+@NewMessage, @NewResult](
16+
@PrevMessage NVARCHAR(MAX),
17+
@PrevResult NVARCHAR(MAX),
18+
@NewMessage NVARCHAR(MAX),
19+
@NewResult NVARCHAR(MAX)
20+
)
21+
RETURNS TABLE
22+
AS
23+
RETURN
24+
SELECT @PrevResult+':7777:'+@NewMessage Message, @NewResult Result
25+
GO
26+
/*-----------------------------------------------------------------------------------------------*/
27+
GO
28+
CREATE PROCEDURE Private_CleanUpCmdHandlerTests.[test is using the two error functions correctly]
629
AS
730
BEGIN
8-
EXEC tSQLt.Fail 'TODO';
31+
EXEC tSQLt.FakeFunction @FunctionName = 'tSQLt.Private_GetFormattedErrorInfo', @FakeFunctionName = 'Private_CleanUpCmdHandlerTests.[return 42134213 if correct error]';
32+
EXEC tSQLt.FakeFunction @FunctionName = 'tSQLt.Private_HandleMessageAndResult', @FakeFunctionName = 'Private_CleanUpCmdHandlerTests.[return 42424242+@NewMessage, @NewResult]';
33+
34+
DECLARE @TestResult NVARCHAR(MAX) = 'PrevResult';
35+
DECLARE @TestMessage NVARCHAR(MAX) = 'PrevMessage';
36+
EXEC tSQLt.Private_CleanUpCmdHandler @CleanUpCmd = 'RAISERROR(''ACleanUpError'',16,10);', @TestResult=@TestResult OUT, @TestMsg = @TestMessage OUT, @ResultInCaseOfError = 'NewResult';
37+
38+
SELECT @TestMessage Message, @TestResult Result INTO #Actual;
39+
SELECT TOP(0) A.* INTO #Expected FROM #Actual A RIGHT JOIN #Actual X ON 1=0;
40+
INSERT INTO #Expected VALUES('PrevResult:7777:Error during clean up: (9999ACleanUpError)','NewResult');
41+
42+
EXEC tSQLt.AssertEqualsTable '#Expected','#Actual';
943
END;
1044
GO

Tests/Private_HandleMessageAndResultTests.class.sql

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ GO
108108
/*-----------------------------------------------------------------------------------------------*/
109109
GO
110110

111-
CREATE PROCEDURE Private_HandleMessageAndResultTests.[test returns @PrevResult??? if @NewResult is not known]
111+
CREATE PROCEDURE Private_HandleMessageAndResultTests.[test returns @PrevResult if @NewResult is not known]
112112
AS
113113
BEGIN
114114
EXEC tSQLt.FakeTable @TableName = 'tSQLt.Private_Results';
@@ -147,22 +147,28 @@ GO
147147
/*-----------------------------------------------------------------------------------------------*/
148148
GO
149149

150-
CREATE PROCEDURE Private_HandleMessageAndResultTests.[test returns ??? if @PrevResult is NULL]
150+
CREATE PROCEDURE Private_HandleMessageAndResultTests.[test returns only the @NewMessage if @PrevMessage is NULL and @PrevResult is Success]
151151
AS
152152
BEGIN
153-
EXEC tSQLt.Fail 'TODO: what shoud this do?';
153+
DECLARE @Message NVARCHAR(MAX);
154+
SET @Message = (SELECT Message FROM tSQLt.Private_HandleMessageAndResult (NULL, 'Success', 'this is the new message', DEFAULT));
155+
EXEC tSQLt.AssertEqualsString @Expected = 'this is the new message', @Actual = @Message;
154156
END;
155157
GO
156158
/*-----------------------------------------------------------------------------------------------*/
157159
GO
158160

159-
CREATE PROCEDURE Private_HandleMessageAndResultTests.[test tSQLt.Private_Results double ledger]
161+
CREATE PROCEDURE Private_HandleMessageAndResultTests.[test returns @NewResult if @PrevResult is NULL]
160162
AS
161163
BEGIN
162-
EXEC tSQLt.Fail 'TODO: (Needs to live in its own class)';
164+
EXEC tSQLt.FakeTable @TableName = 'tSQLt.Private_Results';
165+
EXEC ('INSERT INTO tSQLt.Private_Results(Result, Severity)VALUES(''SomeNewResult'',3)');
166+
167+
DECLARE @Result NVARCHAR(MAX);
168+
SET @Result = (SELECT Result FROM tSQLt.Private_HandleMessageAndResult (DEFAULT, NULL, DEFAULT, 'SomeNewResult'));
169+
EXEC tSQLt.AssertEqualsString @Expected = 'SomeNewResult', @Actual = @Result;
163170
END;
164171
GO
165172
/*-----------------------------------------------------------------------------------------------*/
166173
GO
167174

168-
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
EXEC tSQLt.NewTestClass 'Private_ResultsTests';
2+
GO
3+
CREATE PROCEDURE Private_ResultsTests.[test Contains all Result values (double ledger)]
4+
AS
5+
BEGIN
6+
SELECT Severity, Result INTO #Actual FROM tSQLt.Private_Results;
7+
8+
SELECT TOP(0) A.* INTO #Expected FROM #Actual A RIGHT JOIN #Actual X ON 1=0;
9+
INSERT INTO #Expected
10+
SELECT 1,'Success' UNION ALL
11+
SELECT 2,'Skipped' UNION ALL
12+
SELECT 3,'Failure' UNION ALL
13+
SELECT 4,'Error' UNION ALL
14+
SELECT 5,'Abort' UNION ALL
15+
SELECT 6,'FATAL' ;
16+
EXEC tSQLt.AssertEqualsTable '#Expected','#Actual';
17+
18+
END;
19+
GO

Tests/Tests.ssmssqlproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,12 @@
300300
<AssociatedConnUserName />
301301
<FullPath>Private_ResetNewTestClassListTests.class.sql</FullPath>
302302
</FileNode>
303+
<FileNode Name="Private_ResultsTests.class.sql">
304+
<AssociatedConnectionMoniker />
305+
<AssociatedConnSrvName />
306+
<AssociatedConnUserName />
307+
<FullPath>Private_ResultsTests.class.sql</FullPath>
308+
</FileNode>
303309
<FileNode Name="Private_ScriptIndexTests.class.sql">
304310
<AssociatedConnectionMoniker />
305311
<AssociatedConnSrvName />

0 commit comments

Comments
 (0)