@@ -260,6 +260,70 @@ BEGIN
260260 EXEC tSQLt .FakeFunction @FunctionName = ' UndoTestDoublesTests.aSimpleSVF' , @FakeFunctionName = ' UndoTestDoublesTests.aTempSVF' ;
261261
262262
263+ EXEC tSQLt .UndoTestDoubles ;
264+
265+ SELECT O .object_id ,SCHEMA_NAME (O .schema_id ) schema_name , O .name object_name , O .type_desc
266+ INTO #RestoredObjectIds
267+ FROM sys .objects O;
268+
269+ SELECT * INTO #ShouldBeEmpty
270+ FROM
271+ (
272+ SELECT ' Expected' T,* FROM (SELECT * FROM #OriginalObjectIds EXCEPT SELECT * FROM #RestoredObjectIds) E
273+ UNION ALL
274+ SELECT ' Actual' T,* FROM (SELECT * FROM #RestoredObjectIds EXCEPT SELECT * FROM #OriginalObjectIds) A
275+ ) T;
276+ EXEC tSQLt .AssertEmptyTable @TableName = ' #ShouldBeEmpty' ;
277+ END ;
278+ GO
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
288+ CREATE PROCEDURE UndoTestDoublesTests.[test objects renamed by RemoveObject are restored if there is no other object of the same original name]
289+ AS
290+ BEGIN
291+ EXEC (' CREATE TABLE UndoTestDoublesTests.aSimpleTable(i INT);' );
292+
293+ SELECT O .object_id ,SCHEMA_NAME (O .schema_id ) schema_name , O .name object_name , O .type_desc
294+ INTO #OriginalObjectIds
295+ FROM sys .objects O;
296+
297+ EXEC tSQLt .RemoveObject @ObjectName= ' UndoTestDoublesTests.aSimpleTable' ;
298+
299+ EXEC tSQLt .UndoTestDoubles ;
300+
301+ SELECT O .object_id ,SCHEMA_NAME (O .schema_id ) schema_name , O .name object_name , O .type_desc
302+ INTO #RestoredObjectIds
303+ FROM sys .objects O;
304+
305+ SELECT * INTO #ShouldBeEmpty
306+ FROM
307+ (
308+ SELECT ' Expected' T,* FROM (SELECT * FROM #OriginalObjectIds EXCEPT SELECT * FROM #RestoredObjectIds) E
309+ UNION ALL
310+ SELECT ' Actual' T,* FROM (SELECT * FROM #RestoredObjectIds EXCEPT SELECT * FROM #OriginalObjectIds) A
311+ ) T;
312+ EXEC tSQLt .AssertEmptyTable @TableName = ' #ShouldBeEmpty' ;
313+ END ;
314+ GO
315+ CREATE PROCEDURE UndoTestDoublesTests.[test objects renamed by RemoveObject are restored and conflicting object are deleted]
316+ AS
317+ BEGIN
318+ EXEC (' CREATE TABLE UndoTestDoublesTests.aSimpleTable(i INT);' );
319+
320+ SELECT O .object_id ,SCHEMA_NAME (O .schema_id ) schema_name , O .name object_name , O .type_desc
321+ INTO #OriginalObjectIds
322+ FROM sys .objects O;
323+
324+ EXEC tSQLt .RemoveObject @ObjectName= ' UndoTestDoublesTests.aSimpleTable' ;
325+ EXEC (' CREATE PROCEDURE UndoTestDoublesTests.aSimpleTable AS PRINT '' Who came up with that name?'' ;' );
326+
263327 EXEC tSQLt .UndoTestDoubles ;
264328
265329 SELECT O .object_id ,SCHEMA_NAME (O .schema_id ) schema_name , O .name object_name , O .type_desc
@@ -278,10 +342,7 @@ END;
278342GO
279343/* --
280344TODO
281- - functions
282- - rename object to unique name
345+ - Tests for the case in which people are writing their own test case doubles using both tSQLt.RemoveObject
283346-- no replacement
284347-- random replacement
285- -- fakefunction should put new objects in the same schema
286- ------->START HERE: Do we even need the fakefunction tempobject?
287348--*/
0 commit comments