Skip to content

Commit 8b181cc

Browse files
committed
done with UndoTestDoubles for now.
1 parent 82a0a7e commit 8b181cc

3 files changed

Lines changed: 76 additions & 22 deletions

File tree

Source/tSQLt.Private_GetDropItemCmd.sfn.sql

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
IF OBJECT_ID('tSQLt.Private_GetDropItemCmd') IS NOT NULL DROP PROCEDURE tSQLt.Private_GetDropItemCmd;
1+
IF OBJECT_ID('tSQLt.Private_GetDropItemCmd') IS NOT NULL DROP FUNCTION tSQLt.Private_GetDropItemCmd;
22
GO
33
---Build+
44
GO
@@ -16,13 +16,14 @@ RETURN
1616
SELECT
1717
'DROP ' +
1818
CASE @ItemType
19-
WHEN 'P' THEN 'PROCEDURE'
20-
WHEN 'PC' THEN 'PROCEDURE'
21-
WHEN 'U' THEN 'TABLE'
2219
WHEN 'IF' THEN 'FUNCTION'
2320
WHEN 'TF' THEN 'FUNCTION'
2421
WHEN 'FN' THEN 'FUNCTION'
2522
WHEN 'FT' THEN 'FUNCTION'
23+
WHEN 'P' THEN 'PROCEDURE'
24+
WHEN 'PC' THEN 'PROCEDURE'
25+
WHEN 'SN' THEN 'SYNONYM'
26+
WHEN 'U' THEN 'TABLE'
2627
WHEN 'V' THEN 'VIEW'
2728
WHEN 'type' THEN 'TYPE'
2829
WHEN 'xml_schema_collection' THEN 'XML SCHEMA COLLECTION'

Source/tSQLt.UndoTestDoubles.ssp.sql

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,14 @@ BEGIN
3939
LL.OriginalName,
4040
FakeO.type ObjectType
4141
FROM LL
42-
JOIN sys.objects FakeO
42+
LEFT JOIN sys.objects FakeO
4343
ON FakeO.object_id = OBJECT_ID(QUOTENAME(LL.SchemaName)+'.'+QUOTENAME(LL.OriginalName))
4444
)
4545
SELECT @cmd =
4646
(
4747
SELECT
48-
CASE WHEN L.ParentId IS NULL THEN DC.cmd ELSE '' END+
49-
';EXEC tSQLt.Private_RenameObject '''+L.SchemaName+''','''+L.CurrentName+''','''+L.OriginalName+''';'
48+
ISNULL(CASE WHEN L.ParentId IS NULL THEN DC.cmd+';' END,'')+
49+
'EXEC tSQLt.Private_RenameObject '''+L.SchemaName+''','''+L.CurrentName+''','''+L.OriginalName+''';'
5050
FROM L
5151
CROSS APPLY tSQLt.Private_GetDropItemCmd(QUOTENAME(L.SchemaName)+'.'+QUOTENAME(L.OriginalName),L.ObjectType) DC
5252
ORDER BY L.SortId DESC, L.Id ASC

Tests/UndoTestDoublesTests.class.sql

Lines changed: 68 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -276,15 +276,6 @@ BEGIN
276276
EXEC tSQLt.AssertEmptyTable @TableName = '#ShouldBeEmpty';
277277
END;
278278
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
288279
CREATE PROCEDURE UndoTestDoublesTests.[test objects renamed by RemoveObject are restored if there is no other object of the same original name]
289280
AS
290281
BEGIN
@@ -340,9 +331,71 @@ BEGIN
340331
EXEC tSQLt.AssertEmptyTable @TableName = '#ShouldBeEmpty';
341332
END;
342333
GO
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

Comments
 (0)