forked from tSQLt-org/tSQLt
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRemoveObjectTests.class.sql
More file actions
98 lines (77 loc) · 3 KB
/
RemoveObjectTests.class.sql
File metadata and controls
98 lines (77 loc) · 3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*--LICENSE--
Copyright 2012 tSQLt
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
--LICENSE--*/
IF(@@TRANCOUNT>0)ROLLBACK;
GO
EXEC tSQLt.NewTestClass 'RemoveObjectTests';
GO
CREATE PROCEDURE RemoveObjectTests.[test RemoveObject removes a table]
AS
BEGIN
CREATE TABLE RemoveObjectTests.aTestObject(i INT);
DECLARE @NewName NVARCHAR(MAX);
EXEC tSQLt.RemoveObject @ObjectName = 'RemoveObjectTests.aTestObject', @NewName = @NewName OUTPUT;
IF EXISTS(SELECT 1 FROM sys.objects WHERE name = 'aTestObject')
BEGIN
EXEC tSQLt.Fail 'table object should have been removed';
END;
END;
GO
CREATE PROCEDURE RemoveObjectTests.[test RemoveObject removes a procedure]
AS
BEGIN
EXEC('CREATE PROCEDURE RemoveObjectTests.aTestObject AS BEGIN RETURN 0; END;');
DECLARE @NewName NVARCHAR(MAX);
EXEC tSQLt.RemoveObject @ObjectName = 'RemoveObjectTests.aTestObject', @NewName = @NewName OUTPUT;
IF EXISTS(SELECT 1 FROM sys.objects WHERE name = 'aTestObject')
BEGIN
EXEC tSQLt.Fail 'procedure object should have been removed';
END;
END;
GO
CREATE PROCEDURE RemoveObjectTests.[test RemoveObject removes a view]
AS
BEGIN
EXEC ('CREATE VIEW RemoveObjectTests.aTestObject AS SELECT 1 AS X');
DECLARE @NewName NVARCHAR(MAX);
EXEC tSQLt.RemoveObject @ObjectName = 'RemoveObjectTests.aTestObject', @NewName = @NewName OUTPUT;
IF EXISTS(SELECT 1 FROM sys.objects WHERE name = 'aTestObject')
BEGIN
EXEC tSQLt.Fail 'view object should have been removed';
END;
END;
GO
CREATE PROCEDURE RemoveObjectTests.[test RemoveObject raises approporate error if object doesn't exists']
AS
BEGIN
DECLARE @ErrorMessage NVARCHAR(MAX);
SET @ErrorMessage = '<NoError>';
BEGIN TRY
EXEC tSQLt.RemoveObject @ObjectName = 'RemoveObjectTests.aNonExistentTestObject';
END TRY
BEGIN CATCH
SET @ErrorMessage = ERROR_MESSAGE();
END CATCH
EXEC tSQLt.AssertLike '%RemoveObjectTests.aNonExistentTestObject does not exist!%',@ErrorMessage;
END;
GO
CREATE PROCEDURE RemoveObjectTests.[test RemoveObject returns silently if object doesn't exists and @IfExists = 1']
AS
BEGIN
EXEC tSQLt.ExpectNoException;
EXEC tSQLt.RemoveObject @ObjectName = 'RemoveObjectTests.aNonExistentTestObject', @IfExists = 1;
IF(OBJECT_ID('RemoveObjectTests.aNonExistentTestObject') IS NOT NULL)
BEGIN
EXEC tSQLt.Fail 'RemoveObjectTests.aNonExistentTestObject appeared out of thin air!';
END;
END;
GO