@@ -223,33 +223,35 @@ Describe 'Suspend-SqlDscDatabase' -Tag 'Public' {
223223 $mockDatabaseObject = New-Object - TypeName ' Microsoft.SqlServer.Management.Smo.Database' - ArgumentList @ ($mockServerObject , ' TestDatabase' )
224224 $mockDatabaseObject.Status = [Microsoft.SqlServer.Management.Smo.DatabaseStatus ]::Normal
225225
226- $script :setOfflineForceValue = $null
226+ $script :killAllProcessesCalled = $false
227227
228- # Override SetOffline to track the Force parameter
229- $mockDatabaseObject | Add-Member - MemberType ScriptMethod - Name SetOffline - Value {
230- param ($ForceDisconnect = $false )
228+ # Override KillAllProcesses to track if it was called
229+ $mockServerObject | Add-Member - MemberType ScriptMethod - Name KillAllProcesses - Value {
230+ param ($DatabaseName )
231231
232- $script :setOfflineForceValue = $ForceDisconnect
233- $this.Status = [Microsoft.SqlServer.Management.Smo.DatabaseStatus ]::Offline
232+ $script :killAllProcessesCalled = $true
234233 } - Force
235234
236235 Mock - CommandName ' Get-SqlDscDatabase' - MockWith {
237236 return $mockDatabaseObject
238237 }
239238 }
240239
241- It ' Should call SetOffline with Force when Force parameter is specified' {
240+ It ' Should call KillAllProcesses when Force parameter is specified' {
241+ $script :killAllProcessesCalled = $false
242+
242243 Suspend-SqlDscDatabase - ServerObject $mockServerObject - Name ' TestDatabase' - Force - Confirm:$false
243244
244- $script :setOfflineForceValue | Should - BeTrue
245+ $script :killAllProcessesCalled | Should - BeTrue
245246 }
246247
247- It ' Should call SetOffline without Force when Force parameter is not specified' {
248+ It ' Should not call KillAllProcesses when Force parameter is not specified' {
248249 $mockDatabaseObject.Status = [Microsoft.SqlServer.Management.Smo.DatabaseStatus ]::Normal
250+ $script :killAllProcessesCalled = $false
249251
250252 Suspend-SqlDscDatabase - ServerObject $mockServerObject - Name ' TestDatabase' - Confirm:$false
251253
252- $script :setOfflineForceValue | Should - BeFalse
254+ $script :killAllProcessesCalled | Should - BeFalse
253255 }
254256 }
255257
@@ -292,7 +294,16 @@ Describe 'Suspend-SqlDscDatabase' -Tag 'Public' {
292294 }
293295
294296 It ' Should throw a terminating error when SetOffline fails' {
295- { Suspend-SqlDscDatabase - ServerObject $mockServerObject - Name ' TestDatabase' - Force } | Should - Throw - ExpectedMessage ' *Failed to take database*offline*'
297+ { Suspend-SqlDscDatabase - ServerObject $mockServerObject - Name ' TestDatabase' - Confirm:$false } | Should - Throw - ExpectedMessage ' *Failed to take database*offline*'
298+ }
299+
300+ It ' Should throw a terminating error when KillAllProcesses fails' {
301+ # Override KillAllProcesses to throw an exception
302+ $mockServerObject | Add-Member - MemberType ScriptMethod - Name KillAllProcesses - Value {
303+ throw ' Failed to kill processes'
304+ } - Force
305+
306+ { Suspend-SqlDscDatabase - ServerObject $mockServerObject - Name ' TestDatabase' - Force - Confirm:$false } | Should - Throw - ExpectedMessage ' *Failed to kill processes*'
296307 }
297308 }
298309}
0 commit comments