functions/_testExtensionVersionInRange.Tests.ps1

# <copyright file="_testExtensionVersionInRange.Tests.ps1" company="Endjin Limited">
# Copyright (c) Endjin Limited. All rights reserved.
# </copyright>

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

    # in-module dependencies
    . (Join-Path (Split-Path -Parent $PSCommandPath) '_getExtensionVersionRange.ps1')
    . (Join-Path (Split-Path -Parent $PSCommandPath) '_getCompleteExtensionVersion.ps1')

    Set-StrictMode -Version Latest
}

Describe '_testExtensionVersionInRange' {

    BeforeAll {
        $range = _getExtensionVersionRange -MinimumVersion '1.4.0'
    }

    It 'Returns <Expected> for <Version>' -TestCases @(
        @{ Version = '1.3.9'; Expected = $false }
        @{ Version = '1.4.0'; Expected = $true }
        @{ Version = '1.9.12'; Expected = $true }
        @{ Version = '2.0.0'; Expected = $false }
    ) {
        _testExtensionVersionInRange -Version $Version -Range $range | Should -Be $Expected
    }

    It 'Excludes pre-release versions unless they are requested' {
        _testExtensionVersionInRange -Version '1.5.0-beta.1' -Range $range | Should -Be $false
        _testExtensionVersionInRange -Version '1.5.0-beta.1' -Range $range -PreRelease | Should -Be $true
    }

    It 'Excludes pre-release versions of the next major version' {
        _testExtensionVersionInRange -Version '2.0.0-beta.1' -Range $range -PreRelease | Should -Be $false
    }

    It 'Excludes pre-release versions of the minimum version' {
        _testExtensionVersionInRange -Version '1.4.0-beta.1' -Range $range -PreRelease | Should -Be $false
    }
}