@@ -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