Skip to content

Commit e573871

Browse files
Copilotjohlju
andcommitted
Complete InModuleScope fixes for all private function tests
Co-authored-by: johlju <7189721+johlju@users.noreply.github.com>
1 parent c8a6cfe commit e573871

1 file changed

Lines changed: 110 additions & 25 deletions

File tree

tests/Unit/DSC_SqlAGDatabase.Tests.ps1

Lines changed: 110 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2949,6 +2949,29 @@ REVERT'
29492949
}
29502950

29512951
Describe 'SqlAGDatabase\Get-DatabasesToAddToAvailabilityGroup' {
2952+
BeforeAll {
2953+
# Setup mock variables needed for this test (reused from parent context)
2954+
$mockDatabaseNameParameter = @(
2955+
'DB*'
2956+
'AnotherDB'
2957+
'3rd*OfDatabase'
2958+
'4th*OfDatabase'
2959+
)
2960+
2961+
$mockAvailabilityDatabasePresentResults = @(
2962+
'DB1'
2963+
'3rdOfDatabase'
2964+
)
2965+
2966+
# Create availability group object with databases
2967+
$mockAvailabilityGroupObject = New-Object -TypeName Microsoft.SqlServer.Management.Smo.AvailabilityGroup
2968+
$mockAvailabilityGroupObject.Name = 'AvailabilityGroup1'
2969+
$mockAvailabilityGroupObject.AvailabilityDatabases = New-Object -TypeName Microsoft.SqlServer.Management.Smo.AvailabilityDatabaseCollection
2970+
2971+
# Create server object
2972+
$mockServerObject = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server
2973+
}
2974+
29522975
BeforeEach {
29532976
$getDatabasesToAddToAvailabilityGroup = @{
29542977
DatabaseName = $mockDatabaseNameParameter
@@ -2960,7 +2983,7 @@ REVERT'
29602983

29612984
Context 'When Ensure is Present' {
29622985
It 'Should return an array of database names to add when matches are found' {
2963-
$results = Get-DatabasesToAddToAvailabilityGroup @getDatabasesToAddToAvailabilityGroup
2986+
$results = InModuleScope -Parameters @{ params = $getDatabasesToAddToAvailabilityGroup } -ScriptBlock { Get-DatabasesToAddToAvailabilityGroup @params }
29642987

29652988
foreach ( $result in $results )
29662989
{
@@ -2971,7 +2994,7 @@ REVERT'
29712994
It 'Should return an array of database names no databases are in the availability group' {
29722995
$getDatabasesToAddToAvailabilityGroup.AvailabilityGroup = $mockAvailabilityGroupWithoutDatabasesObject
29732996

2974-
$results = Get-DatabasesToAddToAvailabilityGroup @getDatabasesToAddToAvailabilityGroup
2997+
$results = InModuleScope -Parameters @{ params = $getDatabasesToAddToAvailabilityGroup } -ScriptBlock { Get-DatabasesToAddToAvailabilityGroup @params }
29752998

29762999
foreach ( $result in $results )
29773000
{
@@ -2982,12 +3005,47 @@ REVERT'
29823005
It 'Should return an empty object when no matches are found' {
29833006
$getDatabasesToAddToAvailabilityGroup.DatabaseName = @()
29843007

2985-
Get-DatabasesToAddToAvailabilityGroup @getDatabasesToAddToAvailabilityGroup | Should -BeNullOrEmpty
3008+
InModuleScope -Parameters @{ params = $getDatabasesToAddToAvailabilityGroup } -ScriptBlock { Get-DatabasesToAddToAvailabilityGroup @params } | Should -BeNullOrEmpty
29863009
}
29873010
}
29883011
}
29893012

29903013
Describe 'SqlAGDatabase\Get-DatabasesToRemoveFromAvailabilityGroup' {
3014+
BeforeAll {
3015+
# Setup mock variables needed for this test
3016+
$mockDatabaseNameParameter = @(
3017+
'DB*'
3018+
'AnotherDB'
3019+
'3rd*OfDatabase'
3020+
'4th*OfDatabase'
3021+
)
3022+
3023+
$mockAvailabilityDatabaseAbsentResults = @(
3024+
'DB2'
3025+
)
3026+
3027+
$mockAvailabilityDatabaseNames = @(
3028+
'DB2'
3029+
'AnotherDB'
3030+
)
3031+
3032+
$mockAvailabilityDatabaseExactlyRemoveResults = @(
3033+
'DB2'
3034+
)
3035+
3036+
# Create availability group object with databases
3037+
$mockAvailabilityGroupObject = New-Object -TypeName Microsoft.SqlServer.Management.Smo.AvailabilityGroup
3038+
$mockAvailabilityGroupObject.Name = 'AvailabilityGroup1'
3039+
$mockAvailabilityGroupObject.AvailabilityDatabases = New-Object -TypeName Microsoft.SqlServer.Management.Smo.AvailabilityDatabaseCollection
3040+
3041+
$mockAvailabilityGroupWithoutDatabasesObject = New-Object -TypeName Microsoft.SqlServer.Management.Smo.AvailabilityGroup
3042+
$mockAvailabilityGroupWithoutDatabasesObject.Name = 'AvailabilityGroup2'
3043+
$mockAvailabilityGroupWithoutDatabasesObject.AvailabilityDatabases = New-Object -TypeName Microsoft.SqlServer.Management.Smo.AvailabilityDatabaseCollection
3044+
3045+
# Create server object
3046+
$mockServerObject = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Server
3047+
}
3048+
29913049
BeforeEach {
29923050
$getDatabasesToRemoveFromAvailabilityGroupParameters = @{
29933051
DatabaseName = $mockDatabaseNameParameter
@@ -3004,7 +3062,7 @@ REVERT'
30043062
}
30053063

30063064
It 'Should return an array of database names to remove when matches are found' {
3007-
$results = Get-DatabasesToRemoveFromAvailabilityGroup @getDatabasesToRemoveFromAvailabilityGroupParameters
3065+
$results = InModuleScope -Parameters @{ params = $getDatabasesToRemoveFromAvailabilityGroupParameters } -ScriptBlock { Get-DatabasesToRemoveFromAvailabilityGroup @params }
30083066

30093067
foreach ( $result in $results )
30103068
{
@@ -3015,7 +3073,7 @@ REVERT'
30153073
It 'Should return an array of database names to remove when no databases are in the availability group' {
30163074
$getDatabasesToRemoveFromAvailabilityGroupParameters.AvailabilityGroup = $mockAvailabilityGroupWithoutDatabasesObject
30173075

3018-
$results = Get-DatabasesToRemoveFromAvailabilityGroup @getDatabasesToRemoveFromAvailabilityGroupParameters
3076+
$results = InModuleScope -Parameters @{ params = $getDatabasesToRemoveFromAvailabilityGroupParameters } -ScriptBlock { Get-DatabasesToRemoveFromAvailabilityGroup @params }
30193077

30203078
foreach ( $result in $results )
30213079
{
@@ -3026,7 +3084,7 @@ REVERT'
30263084
It 'Should return an empty object when no matches are found' {
30273085
$getDatabasesToRemoveFromAvailabilityGroupParameters.DatabaseName = @()
30283086

3029-
Get-DatabasesToRemoveFromAvailabilityGroup @getDatabasesToRemoveFromAvailabilityGroupParameters | Should -BeNullOrEmpty
3087+
InModuleScope -Parameters @{ params = $getDatabasesToRemoveFromAvailabilityGroupParameters } -ScriptBlock { Get-DatabasesToRemoveFromAvailabilityGroup @params } | Should -BeNullOrEmpty
30303088
}
30313089
}
30323090

@@ -3036,7 +3094,7 @@ REVERT'
30363094
}
30373095

30383096
It 'Should return an array of database names to remove when matches are found' {
3039-
$results = Get-DatabasesToRemoveFromAvailabilityGroup @getDatabasesToRemoveFromAvailabilityGroupParameters
3097+
$results = InModuleScope -Parameters @{ params = $getDatabasesToRemoveFromAvailabilityGroupParameters } -ScriptBlock { Get-DatabasesToRemoveFromAvailabilityGroup @params }
30403098

30413099
foreach ( $result in $results )
30423100
{
@@ -3047,7 +3105,7 @@ REVERT'
30473105
It 'Should return all of the databases in the availability group if no matches were found' {
30483106
$getDatabasesToRemoveFromAvailabilityGroupParameters.DatabaseName = @()
30493107

3050-
$results = Get-DatabasesToRemoveFromAvailabilityGroup @getDatabasesToRemoveFromAvailabilityGroupParameters
3108+
$results = InModuleScope -Parameters @{ params = $getDatabasesToRemoveFromAvailabilityGroupParameters } -ScriptBlock { Get-DatabasesToRemoveFromAvailabilityGroup @params }
30513109

30523110
# Ensure all of the results are in the Availability Databases
30533111
foreach ( $result in $results )
@@ -3146,14 +3204,30 @@ REVERT'
31463204
}
31473205

31483206
Describe 'SqlAGDatabase\Get-DatabaseNamesNotFoundOnTheInstance' {
3207+
BeforeAll {
3208+
# Setup mock variables needed for this test
3209+
$mockDatabaseNameParameter = @(
3210+
'DB*'
3211+
'AnotherDB'
3212+
'3rd*OfDatabase'
3213+
'4th*OfDatabase'
3214+
)
3215+
3216+
# The defined databases that should be identified as missing
3217+
$mockMissingDatabases = @(
3218+
'AnotherDB'
3219+
'4th*OfDatabase'
3220+
)
3221+
3222+
$mockPresentDatabaseNames = @(
3223+
'DB1'
3224+
'AnotherDB'
3225+
'3rdOfDatabase'
3226+
'4thOfDatabase'
3227+
)
3228+
}
3229+
31493230
Context 'When the Get-DatabaseNamesNotFoundOnTheInstance function is called' {
3150-
BeforeAll {
3151-
# The defined databases that should be identified as missing
3152-
$mockMissingDatabases = @(
3153-
'AnotherDB'
3154-
'4th*OfDatabase'
3155-
)
3156-
}
31573231

31583232
BeforeEach {
31593233
$getDatabaseNamesNotFoundOnTheInstanceParameters = @{
@@ -3163,15 +3237,23 @@ REVERT'
31633237
}
31643238

31653239
It 'Should return an empty object when no missing databases were identified' {
3166-
$getDatabaseNamesNotFoundOnTheInstanceParameters.MatchingDatabaseNames = $mockDatabaseNameParameter
3167-
3168-
InModuleScope -Parameters @{ params = $getDatabaseNamesNotFoundOnTheInstanceParameters } -ScriptBlock { Get-DatabaseNamesNotFoundOnTheInstance @params } | Should -BeNullOrEmpty
3240+
InModuleScope -Parameters @{ DatabaseName = $mockDatabaseNameParameter; MatchingDatabaseNames = $mockDatabaseNameParameter } -ScriptBlock {
3241+
$params = @{
3242+
DatabaseName = $DatabaseName
3243+
MatchingDatabaseNames = $MatchingDatabaseNames
3244+
}
3245+
Get-DatabaseNamesNotFoundOnTheInstance @params
3246+
} | Should -BeNullOrEmpty
31693247
}
31703248

31713249
It 'Should return a string array of database names when missing databases are identified' {
3172-
$getDatabaseNamesNotFoundOnTheInstanceParameters.MatchingDatabaseNames = $mockPresentDatabaseNames
3173-
3174-
$results = InModuleScope -Parameters @{ params = $getDatabaseNamesNotFoundOnTheInstanceParameters } -ScriptBlock { Get-DatabaseNamesNotFoundOnTheInstance @params }
3250+
$results = InModuleScope -Parameters @{ DatabaseName = $mockDatabaseNameParameter; MatchingDatabaseNames = $mockPresentDatabaseNames } -ScriptBlock {
3251+
$params = @{
3252+
DatabaseName = $DatabaseName
3253+
MatchingDatabaseNames = $MatchingDatabaseNames
3254+
}
3255+
Get-DatabaseNamesNotFoundOnTheInstance @params
3256+
}
31753257

31763258
foreach ( $result in $results )
31773259
{
@@ -3180,10 +3262,13 @@ REVERT'
31803262
}
31813263

31823264
It 'Should return an empty object is supplied and no databases are defined' {
3183-
$getDatabaseNamesNotFoundOnTheInstanceParameters.DatabaseName = @()
3184-
$getDatabaseNamesNotFoundOnTheInstanceParameters.MatchingDatabaseNames = $mockPresentDatabaseNames
3185-
3186-
InModuleScope -Parameters @{ params = $getDatabaseNamesNotFoundOnTheInstanceParameters } -ScriptBlock { Get-DatabaseNamesNotFoundOnTheInstance @params } | Should -BeNullOrEmpty
3265+
InModuleScope -Parameters @{ DatabaseName = @(); MatchingDatabaseNames = $mockPresentDatabaseNames } -ScriptBlock {
3266+
$params = @{
3267+
DatabaseName = $DatabaseName
3268+
MatchingDatabaseNames = $MatchingDatabaseNames
3269+
}
3270+
Get-DatabaseNamesNotFoundOnTheInstance @params
3271+
} | Should -BeNullOrEmpty
31873272
}
31883273
}
31893274
}

0 commit comments

Comments
 (0)