Skip to content

Commit f29296f

Browse files
committed
Add refresh logic for database owner in Set-SqlDscDatabaseOwner function and mock implementation in tests
1 parent c5cd62b commit f29296f

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

source/Public/Set-SqlDscDatabaseOwner.ps1

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,16 @@ function Set-SqlDscDatabaseOwner
150150
try
151151
{
152152
$sqlDatabaseObject.SetOwner($OwnerName)
153+
154+
<#
155+
Refresh the database object to get the updated owner property if:
156+
- PassThru is specified (user wants the updated object back)
157+
- Using DatabaseObject parameter set (user's object reference should be updated)
158+
#>
159+
if ($PassThru.IsPresent -or $PSCmdlet.ParameterSetName -eq 'DatabaseObjectSet')
160+
{
161+
$sqlDatabaseObject.Refresh()
162+
}
153163
}
154164
catch
155165
{

tests/Unit/Public/Set-SqlDscDatabaseOwner.Tests.ps1

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ Describe 'Set-SqlDscDatabaseOwner' -Tag 'Public' {
7272
param($OwnerName)
7373
$this.Owner = $OwnerName
7474
} -Force
75+
$mockDatabaseObject | Add-Member -MemberType 'ScriptMethod' -Name 'Refresh' -Value {
76+
# Mock implementation - in real SMO this updates properties from server
77+
} -Force
7578

7679
$mockServerObject = New-Object -TypeName 'Microsoft.SqlServer.Management.Smo.Server'
7780
$mockServerObject | Add-Member -MemberType 'NoteProperty' -Name 'InstanceName' -Value 'TestInstance' -Force
@@ -124,6 +127,9 @@ Describe 'Set-SqlDscDatabaseOwner' -Tag 'Public' {
124127
param($OwnerName)
125128
$this.Owner = $OwnerName
126129
} -Force
130+
$mockDatabaseObject | Add-Member -MemberType 'ScriptMethod' -Name 'Refresh' -Value {
131+
# Mock implementation - in real SMO this updates properties from server
132+
} -Force
127133
}
128134

129135
It 'Should set database owner successfully' {
@@ -158,6 +164,9 @@ Describe 'Set-SqlDscDatabaseOwner' -Tag 'Public' {
158164
param($OwnerName)
159165
$this.Owner = $OwnerName
160166
} -Force
167+
$mockDatabaseObject | Add-Member -MemberType 'ScriptMethod' -Name 'Refresh' -Value {
168+
# Mock implementation - in real SMO this updates properties from server
169+
} -Force
161170
}
162171

163172
It 'Should still call SetOwner even when owner is already set to desired value' {
@@ -182,6 +191,9 @@ Describe 'Set-SqlDscDatabaseOwner' -Tag 'Public' {
182191
param($OwnerName)
183192
throw 'Simulated SetOwner() failure'
184193
} -Force
194+
$mockDatabaseObject | Add-Member -MemberType 'ScriptMethod' -Name 'Refresh' -Value {
195+
# Mock implementation - in real SMO this updates properties from server
196+
} -Force
185197
}
186198

187199
It 'Should throw error when SetOwner() fails' {

0 commit comments

Comments
 (0)