Tests/Use-FirebirdEnvironment.Tests.ps1
Import-Module "$PSScriptRoot/../PSFirebird.psd1" -Force Describe 'Use-FirebirdEnvironment' { BeforeAll { # Create mock environments for testing $script:mockEnv3 = [FirebirdEnvironment]::new(@{ Path = '/tmp/mock-firebird-3.0.12' Version = [version]'3.0.12' }) $script:mockEnv4 = [FirebirdEnvironment]::new(@{ Path = '/tmp/mock-firebird-4.0.5' Version = [version]'4.0.5' }) $script:mockEnv5 = [FirebirdEnvironment]::new(@{ Path = '/tmp/mock-firebird-5.0.2' Version = [version]'5.0.2' }) } It 'FirebirdEnvironment::default() throws an error when no context environment is available.' { { [FirebirdEnvironment]::default() } | Should -Throw 'No Firebird environment available*' } It 'FirebirdEnvironment::default() uses the context environment when available.' { Use-FirebirdEnvironment -Environment $mockEnv5 { [FirebirdEnvironment]::default() | Should -Be $mockEnv5 } { [FirebirdEnvironment]::default() } | Should -Throw 'No Firebird environment available*' } It 'Use-FirebirdEnvironment accepts pipeline input.' { $mockEnv4 | Use-FirebirdEnvironment -ScriptBlock { [FirebirdEnvironment]::default() | Should -Be $mockEnv4 } { [FirebirdEnvironment]::default() } | Should -Throw 'No Firebird environment available*' } It 'Context environments can be nested.' { Use-FirebirdEnvironment -Environment $mockEnv3 { [FirebirdEnvironment]::default() | Should -Be $mockEnv3 Use-FirebirdEnvironment -Environment $mockEnv4 { [FirebirdEnvironment]::default() | Should -Be $mockEnv4 Use-FirebirdEnvironment -Environment $mockEnv5 { [FirebirdEnvironment]::default() | Should -Be $mockEnv5 } [FirebirdEnvironment]::default() | Should -Be $mockEnv4 } [FirebirdEnvironment]::default() | Should -Be $mockEnv3 } { [FirebirdEnvironment]::default() } | Should -Throw 'No Firebird environment available*' } It 'Nested context environments can overlap.' { Use-FirebirdEnvironment -Environment $mockEnv3 { [FirebirdEnvironment]::default() | Should -Be $mockEnv3 Use-FirebirdEnvironment -Environment $mockEnv4 { [FirebirdEnvironment]::default() | Should -Be $mockEnv4 Use-FirebirdEnvironment -Environment $mockEnv3 { [FirebirdEnvironment]::default() | Should -Be $mockEnv3 } [FirebirdEnvironment]::default() | Should -Be $mockEnv4 Use-FirebirdEnvironment -Environment $mockEnv5 { [FirebirdEnvironment]::default() | Should -Be $mockEnv5 } [FirebirdEnvironment]::default() | Should -Be $mockEnv4 } [FirebirdEnvironment]::default() | Should -Be $mockEnv3 } { [FirebirdEnvironment]::default() } | Should -Throw 'No Firebird environment available*' } } |