@@ -166,19 +166,16 @@ BEGIN
166166
167167END ;
168168GO
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 ]
170170AS
171171BEGIN
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
204205END ;
205206GO
@@ -243,12 +244,44 @@ BEGIN
243244
244245END ;
245246GO
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/* --
248280TODO
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