Private/Resolve-Version.Tests.ps1

BeforeAll {
    . $PSCommandPath.Replace('.Tests.ps1','.ps1')
}

Describe 'Resolve-Version' {

    BeforeAll {
    }

    It 'It should detect the version from .terraform-version files' {
        $Config = @{
            AvailableVersions = @(
                "1.0.0"
            )
            DesiredVersion = "1.0.0"
        }
        Push-Location
        Set-Location -Path "TestDrive:\"
        Set-Content "TestDrive:\.terraform-version" -value "1.0.0"
        $Version = Resolve-Version -Config $Config
        Pop-Location

        $Version.DesiredVersion | Should -BeExactly "1.0.0"
        $Version.Source | Should -BeExactly ".terraform-version"
    }

    It 'It should detect the version from user profile config file' {
        $Config = @{
            AvailableVersions = @(
                "1.0.0"
            )
            DesiredVersion = "1.0.0"
        }
        $Version = Resolve-Version -Config $Config
        $Version.DesiredVersion | Should -BeExactly "1.0.0"
        $Version.Source | Should -BeExactly "user profile"
    }

    It 'It should default to the latest version if no version is provided' {
        $Config = @{
            AvailableVersions = @(
                "1.0.0"
                "2.0.0"
            )
        }
        $Version = Resolve-Version -Config $Config
        $Version.DesiredVersion | Should -BeExactly "2.0.0"
        $Version.Source | Should -BeExactly "latest"
    }

}