Skip to content

Commit 82a0a7e

Browse files
committed
wrote more tests, including one to catch potential future missing tests.
1 parent 5cfd5e3 commit 82a0a7e

1 file changed

Lines changed: 65 additions & 4 deletions

File tree

Tests/UndoTestDoublesTests.class.sql

Lines changed: 65 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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;
278342
GO
279343
/*--
280344
TODO
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

Comments
 (0)