Skip to content

Commit 0c7c875

Browse files
committed
Fixed constraints! Yay. All tests passing. But the build is still broken because trigger tests are not passing.
1 parent e478937 commit 0c7c875

5 files changed

Lines changed: 52 additions & 6 deletions

Source/ApplyConstraint_Methods.sql

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,15 @@ BEGIN
106106
DECLARE @AlterTableCmd NVARCHAR(MAX);
107107
DECLARE @CreateIndexCmd NVARCHAR(MAX);
108108
DECLARE @FinalCmd NVARCHAR(MAX);
109+
DECLARE @NewNameOfOriginalConstraint NVARCHAR(MAX);
110+
DECLARE @QuotedFullConstraintName NVARCHAR(MAX);
111+
109112

110113
SELECT @SchemaName = SchemaName,
111114
@OrgTableName = OrgTableName,
112115
@TableName = TableName,
113-
@ConstraintName = OBJECT_NAME(@ConstraintObjectId)
116+
@ConstraintName = OBJECT_NAME(@ConstraintObjectId),
117+
@QuotedFullConstraintName = QUOTENAME(SchemaName)+'.'+QUOTENAME(OBJECT_NAME(@ConstraintObjectId))
114118
FROM tSQLt.Private_GetQuotedTableNameForConstraint(@ConstraintObjectId);
115119

116120
SELECT @CreateFkCmd = cmd, @CreateIndexCmd = CreIdxCmd
@@ -119,9 +123,11 @@ BEGIN
119123
' ADD ' + @CreateFkCmd;
120124
SELECT @FinalCmd = @CreateIndexCmd + @AlterTableCmd;
121125

122-
EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @ConstraintName;
126+
EXEC tSQLt.Private_RenameObjectToUniqueName @SchemaName, @ConstraintName, @NewName = @NewNameOfOriginalConstraint OUTPUT;
123127
EXEC (@FinalCmd);
124128

129+
EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @QuotedFullConstraintName, @ObjectType = 'CONSTRAINT', @NewNameOfOriginalObject = @NewNameOfOriginalConstraint;
130+
125131
END;
126132
GO
127133

Source/tSQLt.ApplyTrigger.ssp.sql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ CREATE PROCEDURE tSQLt.ApplyTrigger
77
AS
88
BEGIN
99
DECLARE @OrgTableObjectId INT;
10+
DECLARE @NewNameOfOriginalTrigger NVARCHAR(MAX);
11+
1012
SELECT @OrgTableObjectId = OrgTableObjectId FROM tSQLt.Private_GetOriginalTableInfo(OBJECT_ID(@TableName)) orgTbl
1113
IF(@OrgTableObjectId IS NULL)
1214
BEGIN
@@ -28,9 +30,11 @@ BEGIN
2830
RAISERROR('%s is not a trigger on %s', 16, 10, @TriggerName, @TableName);
2931
END;
3032

31-
EXEC tSQLt.RemoveObject @FullTriggerName;
33+
EXEC tSQLt.RemoveObject @ObjectName = @FullTriggerName, @NewName = @NewNameOfOriginalTrigger OUTPUT;
3234

3335
EXEC(@TriggerCode);
36+
37+
EXEC tSQLt.Private_MarktSQLtTempObject @ObjectName = @FullTriggerName, @ObjectType = N'TRIGGER', @NewNameOfOriginalObject = @NewNameOfOriginalTrigger;
3438
END;
3539
---Build-
3640
GO

Tests/ApplyTriggerTests.class.sql

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,3 +120,29 @@ BEGIN
120120

121121
END;
122122
GO
123+
CREATE PROC ApplyTriggerTests.[test ApplyTrigger calls tSQLt.Private_MarktSQLtTempObject on new check constraints]
124+
AS
125+
BEGIN
126+
CREATE TABLE ApplyTriggerTests.aSimpleTable ( Id INT);
127+
EXEC('CREATE TRIGGER ApplyTriggerTests.aSimpleTrigger ON ApplyTriggerTests.aSimpleTable FOR INSERT AS RETURN;');
128+
DECLARE @OriginalObjectId INT = OBJECT_ID('ApplyTriggerTests.aSimpleTrigger');
129+
130+
EXEC tSQLt.FakeTable @TableName = 'ApplyTriggerTests.aSimpleTable';
131+
132+
EXEC tSQLt.SpyProcedure @ProcedureName = 'tSQLt.Private_MarktSQLtTempObject';
133+
TRUNCATE TABLE tSQLt.Private_MarktSQLtTempObject_SpyProcedureLog;--Quirkiness of testing the framework that you use to run the test
134+
135+
EXEC tSQLt.ApplyTrigger @TableName = 'ApplyTriggerTests.aSimpleTable', @TriggerName = 'aSimpleTrigger';
136+
137+
SELECT ObjectName, ObjectType, NewNameOfOriginalObject
138+
INTO #Actual
139+
FROM tSQLt.Private_MarktSQLtTempObject_SpyProcedureLog;
140+
141+
SELECT TOP(0) A.* INTO #Expected FROM #Actual A RIGHT JOIN #Actual X ON 1=0;
142+
INSERT INTO #Expected
143+
VALUES('[ApplyTriggerTests].[aSimpleTrigger]', N'TRIGGER', OBJECT_NAME(@OriginalObjectId));
144+
145+
EXEC tSQLt.AssertEqualsTable '#Expected','#Actual';
146+
147+
END;
148+
GO

Tests/Private_MarktSQLtTempObjectTests.class.sql

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,3 +80,14 @@ BEGIN
8080
@ObjectType = N'CONSTRAINT';
8181
END;
8282
GO
83+
CREATE PROCEDURE Private_MarktSQLtTempObjectTests.[test can mark a trigger]
84+
AS
85+
BEGIN
86+
CREATE TABLE Private_MarktSQLtTempObjectTests.TempTable1(i INT);
87+
EXEC('CREATE TRIGGER Private_MarktSQLtTempObjectTests.TempTrigger ON Private_MarktSQLtTempObjectTests.TempTable1 FOR INSERT AS RETURN;');
88+
89+
EXEC Private_MarktSQLtTempObjectTests.[assert creates two extended properties on object]
90+
@ObjectName = 'Private_MarktSQLtTempObjectTests.TempTrigger',
91+
@ObjectType = N'TRIGGERX';
92+
END;
93+
GO

Tests/UndoTestDoublesTests.class.sql

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,6 @@ BEGIN
329329
EXEC tSQLt.AssertEmptyTable @TableName = '#ShouldBeEmpty';
330330
END;
331331
GO
332-
--tSQLt.Run UndoTestDoublesTests
333332
CREATE PROCEDURE UndoTestDoublesTests.[test synonyms are restored]
334333
AS
335334
BEGIN
@@ -340,8 +339,8 @@ BEGIN
340339
INTO #OriginalObjectIds
341340
FROM sys.objects O;
342341

343-
EXEC tSQLt.RemoveObject @ObjectName='UndoTestDoublesTests.aSimpleSynonym';
344-
EXEC ('CREATE TABLE UndoTestDoublesTests.aSimpleSynonym(i INT);');
342+
EXEC tSQLt.FakeTable @TableName = 'UndoTestDoublesTests.aSimpleSynonym';
343+
345344
EXEC tSQLt.UndoTestDoubles;
346345

347346
SELECT O.object_id,SCHEMA_NAME(O.schema_id) schema_name, O.name object_name, O.type_desc

0 commit comments

Comments
 (0)