tests/Public/Get-CloudRegion.Tests.ps1
|
Describe 'Get-CloudRegion' { BeforeAll { $ModulePath = $PSScriptRoot | Split-Path -Parent | Split-Path -Parent | Join-Path -ChildPath 'PSCumulus.psd1' Import-Module $ModulePath -Force } Context 'Parameter validation' { It 'Should accept -Provider parameter' { { Get-CloudRegion -Provider Azure } | Should -Not -Throw } It 'Should work without -Provider parameter' { { Get-CloudRegion } | Should -Not -Throw } } Context 'Output shape' { It 'Should return PSCumulus.CloudRegion objects' { $result = Get-CloudRegion -Provider Azure | Select-Object -First 1 $result.PSObject.TypeNames | Should -Contain 'PSCumulus.CloudRegion' } It 'Should return objects with Provider and Name properties' { $result = Get-CloudRegion -Provider AWS | Select-Object -First 1 $result.Provider | Should -Not -BeNullOrEmpty $result.Name | Should -Not -BeNullOrEmpty } } Context 'Provider filtering' { It 'Should return only Azure regions when Provider is Azure' { $result = Get-CloudRegion -Provider Azure $result | ForEach-Object { $_.Provider } | Should -Not -Contain 'AWS' $result | ForEach-Object { $_.Provider } | Should -Not -Contain 'GCP' } It 'Should return regions from all providers when Provider is omitted' { $result = Get-CloudRegion $providers = ($result | Select-Object -ExpandProperty Provider -Unique) $providers.Count | Should -Be 3 } } Context 'Region counts' { It 'Should return expected number of Azure regions' { $result = Get-CloudRegion -Provider Azure $result.Count | Should -BeGreaterOrEqual 40 } It 'Should return expected number of AWS regions' { $result = Get-CloudRegion -Provider AWS $result.Count | Should -BeGreaterOrEqual 20 } It 'Should return expected number of GCP regions' { $result = Get-CloudRegion -Provider GCP $result.Count | Should -BeGreaterOrEqual 30 } } } |