1717EXEC tSQLt .NewTestClass ' FakeTableTests' ;
1818GO
1919
20- CREATE PROC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints
21- @TableName NVARCHAR (MAX )
20+ CREATE PROC FakeTableTests .AssertTableIsNewObjectThatHasNoChildObjects
21+ @TableName NVARCHAR (MAX ),
22+ @OriginalObjectId INT
2223AS
2324BEGIN
24- DECLARE @OldTableObjectId INT ;
25-
2625 IF OBJECT_ID (@TableName) IS NULL
2726 EXEC tSQLt .Fail ' Table ' ,@TableName,' does not exist!' ;
28-
29- SELECT @OldTableObjectId = OBJECT_ID (QUOTENAME (OBJECT_SCHEMA_NAME (major_id))+ ' .'+ QUOTENAME (CAST (value AS NVARCHAR (4000 ))))
30- FROM sys .extended_properties WHERE major_id = OBJECT_ID (@TableName) and name = ' tSQLt.FakeTable_OrgTableName'
31-
32- IF @OldTableObjectId IS NULL
33- EXEC tSQLt .Fail ' Table ' ,@TableName,' is not a fake table!' ;
3427
35- IF OBJECT_ID (@TableName) = @OldTableObjectId
28+ IF OBJECT_ID (@TableName) = @OriginalObjectId
3629 EXEC tSQLt .Fail ' Table ' ,@TableName,' is not a new object!' ;
3730
38- SELECT QUOTENAME (OBJECT_SCHEMA_NAME (object_id ))+ ' .'+ QUOTENAME (OBJECT_NAME (object_id )) ReferencingObjectName
39- INTO #actual FROM sys .objects WHERE parent_object_id = OBJECT_ID (@TableName);
40-
41- SELECT TOP (0 ) * INTO #expected FROM #actual;
31+ SELECT QUOTENAME (OBJECT_SCHEMA_NAME (object_id ))+ ' .'+ QUOTENAME (OBJECT_NAME (object_id )) ReferencingObjectName, type_desc
32+ INTO #ChildObjects FROM sys .objects WHERE parent_object_id = OBJECT_ID (@TableName);
4233
43- EXEC tSQLt .AssertEqualsTable ' #expected' , ' #actual' , ' Unexpected referencing objects found!' ;
34+ EXEC tSQLt .AssertEmptyTable @TableName = ' #ChildObjects' , @Message = ' Unexpected child objects found!' ;
4435END
4536GO
4637
4738CREATE PROC FakeTableTests.[test FakeTable works with 2 part names in first parameter]
4839AS
4940BEGIN
5041 CREATE TABLE FakeTableTests .TempTable1(i INT );
42+ DECLARE @OriginalObjectId INT = OBJECT_ID (' FakeTableTests.TempTable1' );
5143
5244 EXEC tSQLt .FakeTable ' FakeTableTests.TempTable1' ;
5345
54- EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints ' FakeTableTests.TempTable1' ;
46+ EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoChildObjects
47+ @TableName = ' FakeTableTests.TempTable1' ,
48+ @OriginalObjectId = @OriginalObjectId;
5549END ;
5650GO
5751
5852CREATE PROC FakeTableTests.[test FakeTable takes 2 nameless parameters containing schema and table name]
5953AS
6054BEGIN
6155 CREATE TABLE FakeTableTests .TempTable1(i INT );
56+ DECLARE @OriginalObjectId INT = OBJECT_ID (' FakeTableTests.TempTable1' );
6257
6358 EXEC tSQLt .FakeTable ' FakeTableTests' ,' TempTable1' ;
6459
65- EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints ' FakeTableTests.TempTable1' ;
60+ EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoChildObjects
61+ @TableName = ' FakeTableTests.TempTable1' ,
62+ @OriginalObjectId = @OriginalObjectId;
6663END ;
6764GO
6865
@@ -161,11 +158,9 @@ CREATE PROC FakeTableTests.[test a faked table has no primary key]
161158AS
162159BEGIN
163160 CREATE TABLE FakeTableTests .TempTable1(i INT PRIMARY KEY );
164-
161+
165162 EXEC tSQLt .FakeTable ' FakeTableTests.TempTable1' ;
166163
167- EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints ' FakeTableTests.TempTable1' ;
168-
169164 INSERT INTO FakeTableTests .TempTable1 (i) VALUES (1 );
170165 INSERT INTO FakeTableTests .TempTable1 (i) VALUES (1 );
171166END ;
@@ -178,7 +173,6 @@ BEGIN
178173
179174 EXEC tSQLt .FakeTable ' FakeTableTests.TempTable1' ;
180175
181- EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints ' FakeTableTests.TempTable1' ;
182176 INSERT INTO FakeTableTests .TempTable1 (i) VALUES (5 );
183177END ;
184178GO
@@ -187,11 +181,10 @@ CREATE PROC FakeTableTests.[test a faked table has no foreign keys]
187181AS
188182BEGIN
189183 CREATE TABLE FakeTableTests .TempTable0(i INT PRIMARY KEY );
190- CREATE TABLE FakeTableTests .TempTable1(i INT REFERENCES FakeTableTests .TempTable0 (i));
184+ CREATE TABLE FakeTableTests .TempTable1(i INT REFERENCES FakeTableTests .TempTable0 (i));
191185
192186 EXEC tSQLt .FakeTable ' FakeTableTests.TempTable1' ;
193-
194- EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints ' FakeTableTests.TempTable1' ;
187+
195188 INSERT INTO FakeTableTests .TempTable1 (i) VALUES (5 );
196189END ;
197190GO
@@ -203,12 +196,9 @@ BEGIN
203196
204197 EXEC tSQLt .FakeTable ' FakeTableTests.TempTable1' ;
205198
206- EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints ' FakeTableTests.TempTable1' ;
207199 INSERT INTO FakeTableTests .TempTable1 (i) DEFAULT VALUES ;
208200
209- DECLARE @value INT ;
210- SELECT @value = i
211- FROM FakeTableTests .TempTable1 ;
201+ DECLARE @value INT = (SELECT i FROM FakeTableTests .TempTable1 );
212202
213203 EXEC tSQLt .AssertEquals NULL , @value;
214204END ;
@@ -221,7 +211,6 @@ BEGIN
221211
222212 EXEC tSQLt .FakeTable ' FakeTableTests.TempTable1' ;
223213
224- EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints ' FakeTableTests.TempTable1' ;
225214 INSERT INTO FakeTableTests .TempTable1 (i) VALUES (1 );
226215 INSERT INTO FakeTableTests .TempTable1 (i) VALUES (1 );
227216END ;
@@ -235,7 +224,6 @@ BEGIN
235224
236225 EXEC tSQLt .FakeTable ' FakeTableTests.TempTable1' ;
237226
238- EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints ' FakeTableTests.TempTable1' ;
239227 INSERT INTO FakeTableTests .TempTable1 (i) VALUES (1 );
240228 INSERT INTO FakeTableTests .TempTable1 (i) VALUES (1 );
241229END ;
@@ -248,7 +236,6 @@ BEGIN
248236
249237 EXEC tSQLt .FakeTable ' FakeTableTests.TempTable1' ;
250238
251- EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints ' FakeTableTests.TempTable1' ;
252239 INSERT INTO FakeTableTests .TempTable1 (i) VALUES (NULL );
253240END ;
254241GO
@@ -1014,28 +1001,57 @@ AS
10141001BEGIN
10151002 CREATE TABLE FakeTableTests .TempTable1(i INT NOT NULL );
10161003
1004+ DECLARE @OriginalObjectId INT = OBJECT_ID (' FakeTableTests.TempTable1' );
1005+
10171006 EXEC tSQLt .FakeTable ' [FakeTableTests]' ,' [TempTable1]' ;
10181007
1019- EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoConstraints ' FakeTableTests.TempTable1' ;
1008+ EXEC FakeTableTests .AssertTableIsNewObjectThatHasNoChildObjects
1009+ @TableName = ' FakeTableTests.TempTable1' ,
1010+ @OriginalObjectId = @OriginalObjectId;
10201011
10211012END ;
10221013GO
1023-
1024- -- CREATE PROC FakeTableTests.[test FakeTable works with cross database synonym]
1025- -- AS
1026- -- BEGIN
1027- -- CREATE TABLE tempdb.dbo.TempTable1(i INT NOT NULL);
1028- -- CREATE SYNONYM FakeTableTests.TempTable1 FOR tempdb.dbo.TempTable1
1014+ CREATE PROC FakeTableTests.[test new FakeTable is marked as tSQLt.IsTempObject]
1015+ AS
1016+ BEGIN
1017+ CREATE TABLE FakeTableTests .TempTable1(i INT NOT NULL );
10291018
1030- -- EXEC tSQLt.FakeTable '[ FakeTableTests]','[ TempTable1] ';
1019+ EXEC tSQLt .FakeTable ' FakeTableTests. TempTable1' ;
10311020
1032- -- EXEC FakeTableTests.AssertTableIsNewObjectThatHasNoConstraints 'FakeTableTests.TempTable1';
1033-
1034- -- END;
1035- -- GO
1021+ SELECT name , value
1022+ INTO #Actual
1023+ FROM sys .extended_properties
1024+ WHERE class_desc = ' OBJECT_OR_COLUMN'
1025+ AND major_id = OBJECT_ID (' FakeTableTests.TempTable1' )
1026+ AND name = ' tSQLt.IsTempObject' ;
10361027
1028+ SELECT TOP (0 ) A.* INTO #Expected FROM #Actual A RIGHT JOIN #Actual X ON 1 = 0 ;
1029+
1030+ INSERT INTO #Expected VALUES (' tSQLt.IsTempObject' , 1 );
10371031
1032+ EXEC tSQLt .AssertEqualsTable ' #Expected' ,' #Actual' ;
1033+ END ;
1034+ GO
1035+ CREATE PROC FakeTableTests.[test new FakeTable is marked with tSQLt.Private_TestDouble_OrgObjectName]
1036+ AS
1037+ BEGIN
1038+ CREATE TABLE FakeTableTests .TempTable1(i INT NOT NULL );
1039+ DECLARE @OriginalObjectId INT = OBJECT_ID (' FakeTableTests.TempTable1' );
1040+
1041+ EXEC tSQLt .FakeTable ' FakeTableTests.TempTable1' ;
1042+
1043+ SELECT name , value
1044+ INTO #Actual
1045+ FROM sys .extended_properties
1046+ WHERE class_desc = ' OBJECT_OR_COLUMN'
1047+ AND major_id = OBJECT_ID (' FakeTableTests.TempTable1' )
1048+ AND name = ' tSQLt.Private_TestDouble_OrgObjectName' ;
10381049
1050+ SELECT TOP (0 ) A.* INTO #Expected FROM #Actual A RIGHT JOIN #Actual X ON 1 = 0 ;
1051+
1052+ INSERT INTO #Expected VALUES (' tSQLt.Private_TestDouble_OrgObjectName' , OBJECT_NAME (@OriginalObjectId));
10391053
1040- -- ROLLBACK
1054+ EXEC tSQLt .AssertEqualsTable ' #Expected' ,' #Actual' ;
1055+ END ;
1056+ GO
10411057
0 commit comments