1- [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute (' PSUseDeclaredVarsMoreThanAssignments' , ' ' )]
21[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute (' PSUseDeclaredVarsMoreThanAssignments' , ' ' , Justification = ' Suppressing this rule because Script Analyzer does not understand Pester syntax.' )]
32param ()
43
@@ -49,7 +48,7 @@ Describe 'Test-SqlDscIsAgentAlert' -Tag 'Public' {
4948 It ' Should have the correct parameters in parameter set <ExpectedParameterSetName>' - ForEach @ (
5049 @ {
5150 ExpectedParameterSetName = ' __AllParameterSets'
52- ExpectedParameters = ' [-ServerObject] <Server> [-Name] <String> [[-Severity] <int>] [[-MessageId] <int>] [<CommonParameters>]'
51+ ExpectedParameters = ' [-ServerObject] <Server> [-Name] <string> [<CommonParameters>]'
5352 }
5453 ) {
5554 $result = (Get-Command - Name ' Test-SqlDscIsAgentAlert' ).ParameterSets |
@@ -78,124 +77,33 @@ Describe 'Test-SqlDscIsAgentAlert' -Tag 'Public' {
7877 $parameterInfo = (Get-Command - Name ' Test-SqlDscIsAgentAlert' ).Parameters[' Name' ]
7978 $parameterInfo.Attributes.Mandatory | Should - BeTrue
8079 }
81-
82- It ' Should have Severity as an optional parameter' {
83- $parameterInfo = (Get-Command - Name ' Test-SqlDscIsAgentAlert' ).Parameters[' Severity' ]
84- $parameterInfo.Attributes.Mandatory | Should - BeFalse
85- }
86-
87- It ' Should have MessageId as an optional parameter' {
88- $parameterInfo = (Get-Command - Name ' Test-SqlDscIsAgentAlert' ).Parameters[' MessageId' ]
89- $parameterInfo.Attributes.Mandatory | Should - BeFalse
90- }
91- }
92-
93- Context ' When validating parameter ranges' {
94- It ' Should accept valid Severity values (0-25)' {
95- $command = Get-Command - Name ' Test-SqlDscIsAgentAlert'
96- $severityParam = $command.Parameters [' Severity' ]
97- $validateRangeAttribute = $severityParam.Attributes | Where-Object { $_ -is [System.Management.Automation.ValidateRangeAttribute ] }
98-
99- $validateRangeAttribute.MinRange | Should - Be 0
100- $validateRangeAttribute.MaxRange | Should - Be 25
101- }
102-
103- It ' Should accept valid MessageId values (0-2147483647)' {
104- $command = Get-Command - Name ' Test-SqlDscIsAgentAlert'
105- $messageIdParam = $command.Parameters [' MessageId' ]
106- $validateRangeAttribute = $messageIdParam.Attributes | Where-Object { $_ -is [System.Management.Automation.ValidateRangeAttribute ] }
107-
108- $validateRangeAttribute.MinRange | Should - Be 0
109- $validateRangeAttribute.MaxRange | Should - Be 2147483647
110- }
11180 }
11281
11382 Context ' When testing alert existence only' {
11483 BeforeAll {
11584 # Mock the alert object using SMO stub types
11685 $script :mockAlert = [Microsoft.SqlServer.Management.Smo.Agent.Alert ]::CreateTypeInstance()
11786 $script :mockAlert.Name = ' TestAlert'
118- $script :mockAlert.Severity = 16
119- $script :mockAlert.MessageId = 0
12087
12188 # Mock server object using SMO stub types
12289 $script :mockServerObject = [Microsoft.SqlServer.Management.Smo.Server ]::CreateTypeInstance()
12390
124- Mock - CommandName ' Assert-BoundParameter' - ModuleName $script :dscModuleName
12591 Mock - CommandName ' Get-AgentAlertObject' - ModuleName $script :dscModuleName - MockWith { return $script :mockAlert }
12692 }
12793
128- It ' Should return true when alert exists and no properties are specified ' {
94+ It ' Should return true when alert exists' {
12995 $result = Test-SqlDscIsAgentAlert - ServerObject $script :mockServerObject - Name ' TestAlert'
13096
13197 $result | Should - BeTrue
132- Should - Invoke - CommandName ' Assert-BoundParameter' - ModuleName $script :dscModuleName - Times 1 - Exactly
13398 Should - Invoke - CommandName ' Get-AgentAlertObject' - ModuleName $script :dscModuleName - Times 1 - Exactly
13499 }
135100 }
136101
137- Context ' When testing alert with severity' {
138- BeforeAll {
139- # Mock the alert object with specific severity using SMO stub types
140- $script :mockAlert = [Microsoft.SqlServer.Management.Smo.Agent.Alert ]::CreateTypeInstance()
141- $script :mockAlert.Name = ' TestAlert'
142- $script :mockAlert.Severity = 16
143- $script :mockAlert.MessageId = 0
144-
145- # Mock server object using SMO stub types
146- $script :mockServerObject = [Microsoft.SqlServer.Management.Smo.Server ]::CreateTypeInstance()
147-
148- Mock - CommandName ' Assert-BoundParameter' - ModuleName $script :dscModuleName
149- Mock - CommandName ' Get-AgentAlertObject' - ModuleName $script :dscModuleName - MockWith { return $script :mockAlert }
150- }
151-
152- It ' Should return true when alert exists and severity matches' {
153- $result = Test-SqlDscIsAgentAlert - ServerObject $script :mockServerObject - Name ' TestAlert' - Severity 16
154-
155- $result | Should - BeTrue
156- }
157-
158- It ' Should return false when alert exists but severity does not match' {
159- $result = Test-SqlDscIsAgentAlert - ServerObject $script :mockServerObject - Name ' TestAlert' - Severity 14
160-
161- $result | Should - BeFalse
162- }
163- }
164-
165- Context ' When testing alert with message ID' {
166- BeforeAll {
167- # Mock the alert object with specific message ID using SMO stub types
168- $script :mockAlert = [Microsoft.SqlServer.Management.Smo.Agent.Alert ]::CreateTypeInstance()
169- $script :mockAlert.Name = ' TestAlert'
170- $script :mockAlert.Severity = 0
171- $script :mockAlert.MessageId = 50001
172-
173- # Mock server object using SMO stub types
174- $script :mockServerObject = [Microsoft.SqlServer.Management.Smo.Server ]::CreateTypeInstance()
175-
176- Mock - CommandName ' Assert-BoundParameter' - ModuleName $script :dscModuleName
177- Mock - CommandName ' Get-AgentAlertObject' - ModuleName $script :dscModuleName - MockWith { return $script :mockAlert }
178- }
179-
180- It ' Should return true when alert exists and message ID matches' {
181- $result = Test-SqlDscIsAgentAlert - ServerObject $script :mockServerObject - Name ' TestAlert' - MessageId 50001
182-
183- $result | Should - BeTrue
184- }
185-
186- It ' Should return false when alert exists but message ID does not match' {
187- $result = Test-SqlDscIsAgentAlert - ServerObject $script :mockServerObject - Name ' TestAlert' - MessageId 50002
188-
189- $result | Should - BeFalse
190- }
191- }
192-
193102 Context ' When alert does not exist' {
194103 BeforeAll {
195104 # Mock server object using SMO stub types
196105 $script :mockServerObject = [Microsoft.SqlServer.Management.Smo.Server ]::CreateTypeInstance()
197106
198- Mock - CommandName ' Assert-BoundParameter' - ModuleName $script :dscModuleName
199107 Mock - CommandName ' Get-AgentAlertObject' - ModuleName $script :dscModuleName
200108 }
201109
@@ -207,32 +115,6 @@ Describe 'Test-SqlDscIsAgentAlert' -Tag 'Public' {
207115 }
208116 }
209117
210- Context ' When parameter validation is called' {
211- BeforeAll {
212- # Mock server object using SMO stub types
213- $script :mockServerObject = [Microsoft.SqlServer.Management.Smo.Server ]::CreateTypeInstance()
214-
215- Mock - CommandName ' Assert-BoundParameter' - ModuleName $script :dscModuleName
216- Mock - CommandName ' Get-AgentAlertObject' - ModuleName $script :dscModuleName
217- }
218-
219- It ' Should call parameter validation with both severity and message ID' {
220- $null = Test-SqlDscIsAgentAlert - ServerObject $script :mockServerObject - Name ' TestAlert' - Severity 16 - MessageId 50001
221-
222- Should - Invoke - CommandName ' Assert-BoundParameter' - ModuleName $script :dscModuleName - ParameterFilter {
223- $BoundParameterList.ContainsKey (' Severity' ) -and $BoundParameterList.ContainsKey (' MessageId' )
224- } - Times 1 - Exactly
225- }
226-
227- It ' Should call parameter validation with only severity' {
228- $null = Test-SqlDscIsAgentAlert - ServerObject $script :mockServerObject - Name ' TestAlert' - Severity 16
229-
230- Should - Invoke - CommandName ' Assert-BoundParameter' - ModuleName $script :dscModuleName - ParameterFilter {
231- $BoundParameterList.ContainsKey (' Severity' ) -and -not $BoundParameterList.ContainsKey (' MessageId' )
232- } - Times 1 - Exactly
233- }
234- }
235-
236118 Context ' When using the alias Test-SqlDscAgentAlert' {
237119 BeforeAll {
238120 # Mock the alert object using SMO stub types
@@ -242,15 +124,13 @@ Describe 'Test-SqlDscIsAgentAlert' -Tag 'Public' {
242124 # Mock the server object using SMO stub types
243125 $script :mockServerObject = [Microsoft.SqlServer.Management.Smo.Server ]::CreateTypeInstance()
244126
245- Mock - CommandName ' Assert-BoundParameter' - ModuleName $script :dscModuleName
246127 Mock - CommandName ' Get-AgentAlertObject' - ModuleName $script :dscModuleName - MockWith { return $script :mockAlert }
247128 }
248129
249130 It ' Should work with alias Test-SqlDscAgentAlert' {
250131 $result = Test-SqlDscAgentAlert - ServerObject $script :mockServerObject - Name ' TestAlert'
251132
252133 $result | Should - BeTrue
253- Should - Invoke - CommandName ' Assert-BoundParameter' - ModuleName $script :dscModuleName - Times 1 - Exactly
254134 Should - Invoke - CommandName ' Get-AgentAlertObject' - ModuleName $script :dscModuleName - Times 1 - Exactly
255135 }
256136 }
0 commit comments