. $PSScriptRoot\..\..\Load-PesterModules.ps1 $here = Split-Path -Parent $MyInvocation.MyCommand.Path $sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.tests\.', '.' $functionPath = Join-Path -Path $here -ChildPath $sut Write-Host "Overriding SUT: $functionPath" #Import-Module $functionPath -Force $moduleForMock = "Alkami.PowerShell.Configuration" # not working if I don't specify it for some reason? Describe "Test-IsEnvironment" { Context "developer mocking tests (developer has excess odd cases)" { It "is development" { Mock -ModuleName $moduleForMock -CommandName Get-EnvironmentType -MockWith { return "" } Test-IsEnvironment -EnvironmentType Development | Should -Be $true } It "is development" { Mock -ModuleName $moduleForMock -CommandName Get-EnvironmentType -MockWith { return $null } Test-IsEnvironment -EnvironmentType Development | Should -Be $true } It "is development" { Mock -ModuleName $moduleForMock -CommandName Get-EnvironmentType -MockWith { return "development" } Test-IsEnvironment -EnvironmentType Development | Should -Be $true } It "is development" { Mock -ModuleName $moduleForMock -CommandName Get-EnvironmentType -MockWith { return "sdk" } Test-IsEnvironment -EnvironmentType Development | Should -Be $true } It "is development" { Mock -ModuleName $moduleForMock -CommandName Get-EnvironmentType -MockWith { return "this is not a real value" } Test-IsEnvironment -EnvironmentType Development | Should -Be $false } } Context "production test" { Mock -ModuleName $moduleForMock -CommandName Get-EnvironmentType -MockWith { return "Production" } It "is production" { Test-IsEnvironment -EnvironmentType Production | Should -Be $true } It "is not qa when it is production" { Test-IsEnvironment -EnvironmentType QA | Should -Be $false } Assert-MockCalled -ModuleName $moduleForMock -CommandName Get-EnvironmentType -Times 2 } Context "for empty" { Mock -ModuleName $moduleForMock -CommandName Get-EnvironmentType -MockWith { return "" } It "is not production" { Test-IsEnvironment -EnvironmentType Production | Should -Be $false } It "is not qa when it is production" { Test-IsEnvironment -EnvironmentType QA | Should -Be $false } Assert-MockCalled -ModuleName $moduleForMock -CommandName Get-EnvironmentType -Times 2 } Context "Bad input value" { Mock -ModuleName $moduleForMock -CommandName Get-EnvironmentType -MockWith { return "not a real environment" } Mock -ModuleName Alkami.PowerShell.Configuration -CommandName Get-EnvironmentType -MockWith { return "not a real environment" } Mock -ModuleName Alkami.PowerShell.Configuration -CommandName Get-AppSetting -MockWith { return "not a real value" } It "is not production" { Test-IsEnvironment -EnvironmentType Production | Should -Be $false } It "is not qa" { Test-IsEnvironment -EnvironmentType QA | Should -Be $false } It "is not Development" { Test-IsEnvironment -EnvironmentType Development | Should -Be $false } It "is not LoadTest" { Test-IsEnvironment -EnvironmentType LoadTest | Should -Be $false } It "is not build" { Test-IsEnvironment -EnvironmentType Build | Should -Be $false } It "is not Unconfigured" { Test-IsEnvironment -EnvironmentType Unconfigured | Should -Be $false } Assert-MockCalled -ModuleName $moduleForMock -CommandName Get-EnvironmentType -Times 5 Assert-MockCalled -ModuleName Alkami.PowerShell.Configuration -CommandName Get-EnvironmentType -Times 1 Assert-MockCalled -ModuleName Alkami.PowerShell.Configuration -CommandName Get-AppSetting -Times 1 } }