Tests/Environment/Test-EnvironmentVariable.Tests.ps1

BeforeAll {

    Set-StrictMode -Version "Latest"

    . "$PSScriptRoot\..\..\Source\Environment\Get-EnvironmentVariable.ps1"
    . "$PSScriptRoot\..\..\Source\Environment\Test-EnvironmentVariable.ps1"

}

Describe "Test-EnvironmentVariable" {

    It "Returns true for a variable that exists and isn't empty" {

        [Environment]::SetEnvironmentVariable("ToolboxTestVariable", "ToolboxTestValue", "Process")

        $result = Test-EnvironmentVariable -Name "ToolboxTestVariable" -Scope "Process"

        $result | Should -BeTrue

        [Environment]::SetEnvironmentVariable("ToolboxTestVariable", $null, "Process")

    }

    It "Returns false for a variable that doesn't exist" {

        $result = Test-EnvironmentVariable -Name "ToolboxNonExistentVariable" -Scope "Process"

        $result | Should -BeFalse

    }

    It "Returns false for a variable that exists but is empty" {

        [Environment]::SetEnvironmentVariable("ToolboxTestVariable", "", "Process")

        $result = Test-EnvironmentVariable -Name "ToolboxTestVariable" -Scope "Process"

        $result | Should -BeFalse

        [Environment]::SetEnvironmentVariable("ToolboxTestVariable", $null, "Process")

    }

    It "Accepts the variable name from the pipeline" {

        [Environment]::SetEnvironmentVariable("ToolboxTestVariable", "ToolboxTestValue", "Process")

        $result = "ToolboxTestVariable" | Test-EnvironmentVariable -Scope "Process"

        $result | Should -BeTrue

        [Environment]::SetEnvironmentVariable("ToolboxTestVariable", $null, "Process")

    }

}