functions/_getExtensionVersionRange.Tests.ps1
|
# <copyright file="_getExtensionVersionRange.Tests.ps1" company="Endjin Limited"> # Copyright (c) Endjin Limited. All rights reserved. # </copyright> BeforeAll { # sut . $PSCommandPath.Replace('.Tests.ps1','.ps1') . (Join-Path (Split-Path -Parent $PSCommandPath) '_getCompleteExtensionVersion.ps1') Set-StrictMode -Version Latest } Describe '_getExtensionVersionRange' { It 'Caps the range below the next major version' { $range = _getExtensionVersionRange -MinimumVersion '1.4.2' $range.Minimum | Should -Be ([semver]'1.4.2') $range.Maximum | Should -Be ([semver]'2.0.0') $range.Text | Should -Be '[1.4.2,2.0.0)' } It 'Caps a 0.x range below the next minor version' { (_getExtensionVersionRange -MinimumVersion '0.3.1').Text | Should -Be '[0.3.1,0.4.0)' } It 'Caps a 0.0.x range below the next patch version' { (_getExtensionVersionRange -MinimumVersion '0.0.3').Text | Should -Be '[0.0.3,0.0.4)' } It 'Accepts <MinimumVersion>, which has fewer than 3 parts' -TestCases @( @{ MinimumVersion = '1.4'; Expected = '[1.4.0,2.0.0)' } @{ MinimumVersion = '2'; Expected = '[2.0.0,3.0.0)' } ) { (_getExtensionVersionRange -MinimumVersion $MinimumVersion).Text | Should -Be $Expected } It 'Keeps a pre-release label' { $range = _getExtensionVersionRange -MinimumVersion '1.4.0-beta.1' $range.Minimum | Should -Be ([semver]'1.4.0-beta.1') $range.Text | Should -Be '[1.4.0-beta.1,2.0.0)' } It 'Throws for <MinimumVersion>, which is not a semantic version' -TestCases @( @{ MinimumVersion = 'main' } @{ MinimumVersion = '1.2.3.4' } @{ MinimumVersion = 'v1.2.3' } ) { { _getExtensionVersionRange -MinimumVersion $MinimumVersion } | Should -Throw "Invalid minimum version '$MinimumVersion'*" } } |