@@ -276,15 +276,6 @@ BEGIN
276276 EXEC tSQLt .AssertEmptyTable @TableName = ' #ShouldBeEmpty' ;
277277END ;
278278GO
279- CREATE PROCEDURE UndoTestDoublesTests.[test if FakeFunctionWithSnapshot exists we need to write tests]
280- AS
281- BEGIN
282- IF EXISTS (SELECT * FROM sys .objects WHERE UPPER (name ) LIKE ' FAKEFUNCTION_%' )
283- BEGIN
284- EXEC tSQLt .Fail ' More tests to be written!'
285- END ;
286- END ;
287- GO
288279CREATE PROCEDURE UndoTestDoublesTests.[test objects renamed by RemoveObject are restored if there is no other object of the same original name]
289280AS
290281BEGIN
@@ -340,9 +331,71 @@ BEGIN
340331 EXEC tSQLt .AssertEmptyTable @TableName = ' #ShouldBeEmpty' ;
341332END ;
342333GO
343- /* --
344- TODO
345- - Tests for the case in which people are writing their own test case doubles using both tSQLt.RemoveObject
346- -- no replacement
347- -- random replacement
348- --*/
334+ -- tSQLt.Run UndoTestDoublesTests
335+ CREATE PROCEDURE UndoTestDoublesTests.[test synonyms are restored]
336+ AS
337+ BEGIN
338+ EXEC (' CREATE TABLE UndoTestDoublesTests.aSimpleTable(i INT);' );
339+ EXEC (' CREATE SYNONYM UndoTestDoublesTests.aSimpleSynonym FOR UndoTestDoublesTests.aSimpleTable;' );
340+
341+ SELECT O .object_id ,SCHEMA_NAME (O .schema_id ) schema_name , O .name object_name , O .type_desc
342+ INTO #OriginalObjectIds
343+ FROM sys .objects O;
344+
345+ EXEC tSQLt .RemoveObject @ObjectName= ' UndoTestDoublesTests.aSimpleSynonym' ;
346+ EXEC (' CREATE TABLE UndoTestDoublesTests.aSimpleSynonym(i INT);' );
347+ EXEC tSQLt .UndoTestDoubles ;
348+
349+ SELECT O .object_id ,SCHEMA_NAME (O .schema_id ) schema_name , O .name object_name , O .type_desc
350+ INTO #RestoredObjectIds
351+ FROM sys .objects O;
352+
353+ SELECT * INTO #ShouldBeEmpty
354+ FROM
355+ (
356+ SELECT ' Expected' T,* FROM (SELECT * FROM #OriginalObjectIds EXCEPT SELECT * FROM #RestoredObjectIds) E
357+ UNION ALL
358+ SELECT ' Actual' T,* FROM (SELECT * FROM #RestoredObjectIds EXCEPT SELECT * FROM #OriginalObjectIds) A
359+ ) T;
360+ EXEC tSQLt .AssertEmptyTable @TableName = ' #ShouldBeEmpty' ;
361+ END ;
362+ GO
363+ CREATE PROCEDURE UndoTestDoublesTests.[test doubled synonyms are deleted]
364+ AS
365+ BEGIN
366+ EXEC (' CREATE TABLE UndoTestDoublesTests.aSimpleTable(i INT);' );
367+ EXEC (' CREATE VIEW UndoTestDoublesTests.aSimpleObject AS SELECT 1 X;' );
368+
369+ SELECT O .object_id ,SCHEMA_NAME (O .schema_id ) schema_name , O .name object_name , O .type_desc
370+ INTO #OriginalObjectIds
371+ FROM sys .objects O;
372+
373+ EXEC tSQLt .RemoveObject @ObjectName= ' UndoTestDoublesTests.aSimpleObject' ;
374+ EXEC (' CREATE SYNONYM UndoTestDoublesTests.aSimpleObject FOR UndoTestDoublesTests.aSimpleTable;' );
375+
376+ EXEC tSQLt .UndoTestDoubles ;
377+
378+ SELECT O .object_id ,SCHEMA_NAME (O .schema_id ) schema_name , O .name object_name , O .type_desc
379+ INTO #RestoredObjectIds
380+ FROM sys .objects O;
381+
382+ SELECT * INTO #ShouldBeEmpty
383+ FROM
384+ (
385+ SELECT ' Expected' T,* FROM (SELECT * FROM #OriginalObjectIds EXCEPT SELECT * FROM #RestoredObjectIds) E
386+ UNION ALL
387+ SELECT ' Actual' T,* FROM (SELECT * FROM #RestoredObjectIds EXCEPT SELECT * FROM #OriginalObjectIds) A
388+ ) T;
389+ EXEC tSQLt .AssertEmptyTable @TableName = ' #ShouldBeEmpty' ;
390+ END ;
391+ GO
392+ CREATE PROCEDURE UndoTestDoublesTests.[test if FakeFunctionWithSnapshot exists we need to write tests]
393+ AS
394+ BEGIN
395+ IF EXISTS (SELECT * FROM sys .objects WHERE UPPER (name ) LIKE ' FAKEFUNCTION_%' )
396+ BEGIN
397+ EXEC tSQLt .Fail ' More tests to be written!'
398+ -- Also remove tSQLt_TempObject_s
399+ END ;
400+ END ;
401+ GO
0 commit comments