Tests/Convert.Tests.ps1
|
Import-Module "$PSScriptRoot/../PSFirebird.psd1" -Force . "$PSScriptRoot/TestHelper.ps1" Describe 'Convert' -Tag 'Integration' { BeforeAll { # Create a temporary folder for the test files $script:RootFolder = New-Item -ItemType Directory -Path ([System.IO.Path]::GetTempPath()) -Name (New-Guid) $script:TestEnvironment = New-FirebirdEnvironment -Version $FirebirdVersion $script:TestDatabase = New-FirebirdDatabase -Database "$RootFolder/$FirebirdVersion.fdb" -Environment $TestEnvironment $script:DatabaseRestored = "$RootFolder/$FirebirdVersion.restored.fdb" # Set up the environment variables for Firebird $env:ISC_USER = 'SYSDBA' $env:ISC_PASSWORD = 'masterkey' } AfterAll { # Remove the test folder Remove-Item -Path $RootFolder -Recurse -Force -ErrorAction SilentlyContinue } BeforeEach { if (Test-Path $DatabaseRestored) { Remove-Item -Path $DatabaseRestored -Force -ErrorAction SilentlyContinue } } It 'Convert a database from same version' { $DatabaseRestored | Should -Not -Exist Convert-FirebirdDatabase -SourceDatabase $TestDatabase ` -SourceEnvironment $TestEnvironment ` -TargetDatabase $DatabaseRestored ` -TargetEnvironment $TestEnvironment $DatabaseRestored | Should -Exist } } Describe 'Convert Cross-Version' -Tag 'CrossVersion' { BeforeAll { # Create a temporary folder for the test files $script:RootFolder = New-Item -ItemType Directory -Path ([System.IO.Path]::GetTempPath()) -Name (New-Guid) # Cross-version test: convert from oldest (3.x) to newest (5.x) $script:SourceVersion = '3.0.12' $script:TargetVersion = $FirebirdVersion $script:SourceEnv = New-FirebirdEnvironment -Version $SourceVersion $script:TargetEnv = New-FirebirdEnvironment -Version $TargetVersion $script:SourceDb = New-FirebirdDatabase -Database "$RootFolder/source.fdb" -Environment $SourceEnv $script:NativeTargetDb = New-FirebirdDatabase -Database "$RootFolder/native-target.fdb" -Environment $TargetEnv # Set up the environment variables for Firebird $env:ISC_USER = 'SYSDBA' $env:ISC_PASSWORD = 'masterkey' } AfterAll { # Remove the test folder Remove-Item -Path $RootFolder -Recurse -Force -ErrorAction SilentlyContinue } It 'Cross-version conversion produces correct ODS' { if ($SourceEnv.Version.Major -eq $TargetEnv.Version.Major) { Set-ItResult -Skipped -Because 'Source and target are the same major version' return } # Get the expected ODS version from a database created natively with the target environment $expectedODS = (Get-FirebirdDatabase -Path $NativeTargetDb.Path -Environment $TargetEnv).ODSVersion $convertedPath = "$RootFolder/converted.fdb" $convertedPath | Should -Not -Exist Convert-FirebirdDatabase -SourceDatabase $SourceDb ` -SourceEnvironment $SourceEnv ` -TargetDatabase $convertedPath ` -TargetEnvironment $TargetEnv $convertedPath | Should -Exist # Verify the converted database has the ODS version of the target environment $convertedODS = (Get-FirebirdDatabase -Path $convertedPath -Environment $TargetEnv).ODSVersion $convertedODS.Major | Should -Be $expectedODS.Major -Because "converted database should have ODS major version from target environment" } } |