Skip to content

Commit 9d4036f

Browse files
committed
Rewrote a test so that we make sure that we are deleting test doubles and nothing else; started writing the test for functions; discovered a ... not-feature for FakeFunction using FakeDataSource.
1 parent 8e861d2 commit 9d4036f

1 file changed

Lines changed: 46 additions & 13 deletions

File tree

Tests/UndoTestDoublesTests.class.sql

Lines changed: 46 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -166,19 +166,16 @@ BEGIN
166166

167167
END;
168168
GO
169-
CREATE PROCEDURE UndoTestDoublesTests.[test restores multiple triggers and multiple constraints on multiple tables faked multiple times]
169+
CREATE PROCEDURE UndoTestDoublesTests.[test restores objects after multiple fake actions and deletes test doubles]
170170
AS
171171
BEGIN
172172
EXEC UndoTestDoublesTests.CreateTableWithTriggersAndConstraints '1';
173173
EXEC UndoTestDoublesTests.CreateTableWithTriggersAndConstraints '2';
174174
EXEC UndoTestDoublesTests.CreateTableWithTriggersAndConstraints '3';
175175

176-
SELECT X.ObjectName, OBJECT_ID('UndoTestDoublesTests.'+X.ObjectName) ObjectId
176+
SELECT O.object_id,SCHEMA_NAME(O.schema_id) schema_name, O.name object_name
177177
INTO #OriginalObjectIds
178-
FROM (VALUES('aSimpleTrigger1i'),('aSimpleTrigger1u'),('aSimpleTable1C1'),('aSimpleTable1PK'),('aSimpleTable1'),
179-
('aSimpleTrigger2i'),('aSimpleTrigger2u'),('aSimpleTable2C1'),('aSimpleTable2PK'),('aSimpleTable2'),
180-
('aSimpleTrigger3i'),('aSimpleTrigger3u'),('aSimpleTable3C1'),('aSimpleTable3PK'),('aSimpleTable3')
181-
) X (ObjectName);
178+
FROM sys.objects O;
182179

183180
EXEC UndoTestDoublesTests.FakeTableAndApplyTriggersAndConstraints '1';
184181
EXEC UndoTestDoublesTests.FakeTableAndApplyTriggersAndConstraints '2';
@@ -192,14 +189,18 @@ BEGIN
192189

193190
EXEC tSQLt.UndoTestDoubles;
194191

195-
SELECT X.ObjectName, OBJECT_ID('UndoTestDoublesTests.'+X.ObjectName) ObjectId
192+
SELECT O.object_id,SCHEMA_NAME(O.schema_id) schema_name, O.name object_name
196193
INTO #RestoredObjectIds
197-
FROM (VALUES('aSimpleTrigger1i'),('aSimpleTrigger1u'),('aSimpleTable1C1'),('aSimpleTable1PK'),('aSimpleTable1'),
198-
('aSimpleTrigger2i'),('aSimpleTrigger2u'),('aSimpleTable2C1'),('aSimpleTable2PK'),('aSimpleTable2'),
199-
('aSimpleTrigger3i'),('aSimpleTrigger3u'),('aSimpleTable3C1'),('aSimpleTable3PK'),('aSimpleTable3')
200-
) X (ObjectName);
194+
FROM sys.objects O;
201195

202-
EXEC tSQLt.AssertEqualsTable @Expected = '#OriginalObjectIds', @Actual = '#RestoredObjectIds';
196+
SELECT * INTO #ShouldBeEmpty
197+
FROM
198+
(
199+
SELECT 'Expected' T,* FROM (SELECT * FROM #OriginalObjectIds EXCEPT SELECT * FROM #RestoredObjectIds) E
200+
UNION ALL
201+
SELECT 'Actual' T,* FROM (SELECT * FROM #RestoredObjectIds EXCEPT SELECT * FROM #OriginalObjectIds) A
202+
) T;
203+
EXEC tSQLt.AssertEmptyTable @TableName = '#ShouldBeEmpty';
203204

204205
END;
205206
GO
@@ -243,12 +244,44 @@ BEGIN
243244

244245
END;
245246
GO
247+
CREATE PROCEDURE UndoTestDoublesTests.[test restores a faked function]
248+
AS
249+
BEGIN
250+
EXEC ('CREATE FUNCTION UndoTestDoublesTests.aSimpleITVF() RETURNS TABLE AS RETURN SELECT NULL X;');
251+
EXEC ('CREATE FUNCTION UndoTestDoublesTests.aSimpleTVF() RETURNS @R TABLE(i INT) AS BEGIN RETURN; END;');
252+
EXEC ('CREATE FUNCTION UndoTestDoublesTests.aSimpleSVF() RETURNS INT AS BEGIN RETURN NULL; END;');
253+
EXEC ('CREATE FUNCTION UndoTestDoublesTests.aTempSVF() RETURNS INT AS BEGIN RETURN NULL; END;');
254+
SELECT O.object_id,SCHEMA_NAME(O.schema_id) schema_name, O.name object_name, O.type_desc
255+
INTO #OriginalObjectIds
256+
FROM sys.objects O;
257+
258+
EXEC tSQLt.FakeFunction @FunctionName = 'UndoTestDoublesTests.aSimpleITVF', @FakeDataSource = '(VALUES(NULL))X(X)';
259+
EXEC tSQLt.FakeFunction @FunctionName = 'UndoTestDoublesTests.aSimpleTVF', @FakeDataSource = '(VALUES(NULL))X(X)';
260+
EXEC tSQLt.FakeFunction @FunctionName = 'UndoTestDoublesTests.aSimpleSVF', @FakeFunctionName = 'UndoTestDoublesTests.aTempSVF';
261+
246262

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
247279
/*--
248280
TODO
249281
- functions
250282
- rename object to unique name
251283
-- no replacement
252284
-- random replacement
253-
285+
-- fakefunction should put new objects in the same schema
286+
------->START HERE: Do we even need the fakefunction tempobject?
254287
--*/

0 commit comments

Comments
 (0)