@@ -56,8 +56,8 @@ Describe 'Get-SqlDscRole' -Tag 'Public' {
5656 $mockServerObject | Add-Member - MemberType ' NoteProperty' - Name ' InstanceName' - Value ' TestInstance' - Force
5757 $mockServerObject | Add-Member - MemberType ' ScriptProperty' - Name ' Roles' - Value {
5858 $roleCollection = @ (
59- (New-Object - TypeName Object | Add-Member - MemberType ' NoteProperty ' - Name ' Name ' - Value ' sysadmin' - PassThru - Force ),
60- (New-Object - TypeName Object | Add-Member - MemberType ' NoteProperty ' - Name ' Name ' - Value ' CustomRole1' - PassThru - Force )
59+ (New-Object - TypeName ' Microsoft.SqlServer.Management.Smo.ServerRole ' - ArgumentList @ ( $mockServerObject , ' sysadmin' ) ),
60+ (New-Object - TypeName ' Microsoft.SqlServer.Management.Smo.ServerRole ' - ArgumentList @ ( $mockServerObject , ' CustomRole1' ) )
6161 )
6262 return $roleCollection | Add-Member - MemberType ' ScriptMethod' - Name ' Refresh' - Value {
6363 # Mock implementation
@@ -83,7 +83,7 @@ Describe 'Get-SqlDscRole' -Tag 'Public' {
8383 $mockServerObjectWithRefresh | Add-Member - MemberType ' NoteProperty' - Name ' InstanceName' - Value ' TestInstance' - Force
8484 $mockServerObjectWithRefresh | Add-Member - MemberType ' ScriptProperty' - Name ' Roles' - Value {
8585 $roleCollection = @ (
86- (New-Object - TypeName Object | Add-Member - MemberType ' NoteProperty ' - Name ' Name ' - Value ' sysadmin' - PassThru - Force )
86+ (New-Object - TypeName ' Microsoft.SqlServer.Management.Smo.ServerRole ' - ArgumentList @ ( $mockServerObjectWithRefresh , ' sysadmin' ) )
8787 )
8888 return $roleCollection | Add-Member - MemberType ' ScriptMethod' - Name ' Refresh' - Value {
8989 $script :refreshCalled = $true
@@ -103,10 +103,8 @@ Describe 'Get-SqlDscRole' -Tag 'Public' {
103103 $mockServerObject | Add-Member - MemberType ' NoteProperty' - Name ' InstanceName' - Value ' TestInstance' - Force
104104 $mockServerObject | Add-Member - MemberType ' ScriptProperty' - Name ' Roles' - Value {
105105 return @ {
106- ' sysadmin' = New-Object - TypeName Object |
107- Add-Member - MemberType ' NoteProperty' - Name ' Name' - Value ' sysadmin' - PassThru - Force
108- ' CustomRole1' = New-Object - TypeName Object |
109- Add-Member - MemberType ' NoteProperty' - Name ' Name' - Value ' CustomRole1' - PassThru - Force
106+ ' sysadmin' = New-Object - TypeName ' Microsoft.SqlServer.Management.Smo.ServerRole' - ArgumentList @ ($mockServerObject , ' sysadmin' )
107+ ' CustomRole1' = New-Object - TypeName ' Microsoft.SqlServer.Management.Smo.ServerRole' - ArgumentList @ ($mockServerObject , ' CustomRole1' )
110108 } | Add-Member - MemberType ' ScriptMethod' - Name ' Refresh' - Value {
111109 # Mock implementation
112110 } - PassThru - Force
@@ -122,10 +120,20 @@ Describe 'Get-SqlDscRole' -Tag 'Public' {
122120 $result.Name | Should - Be ' sysadmin'
123121 }
124122
125- It ' Should return null when the specified role does not exist' {
123+ It ' Should throw the correct error when the specified role does not exist' {
126124 Mock - CommandName ' Write-Verbose'
127125
128- $result = Get-SqlDscRole - ServerObject $mockServerObject - Name ' NonExistentRole'
126+ # Test the exact error message first
127+ $expectedMessage = ' Server role '' NonExistentRole'' was not found.'
128+
129+ { Get-SqlDscRole - ServerObject $mockServerObject - Name ' NonExistentRole' - ErrorAction ' Stop' } |
130+ Should - Throw - ExpectedMessage $expectedMessage
131+ }
132+
133+ It ' Should return empty result when ignoring the error' {
134+ Mock - CommandName ' Write-Verbose'
135+
136+ $result = Get-SqlDscRole - ServerObject $mockServerObject - Name ' NonExistentRole' - ErrorAction ' SilentlyContinue'
129137
130138 $result | Should - BeNullOrEmpty
131139 }
0 commit comments