tests/Remove-EnvironmentVariable.Tests.ps1

BeforeAll {
    Import-Module "$PSScriptRoot/../easypeasy.psd1" -Force
}

Describe 'Remove-EnvironmentVariable' {

    Context 'user scope' {

        BeforeEach { [Environment]::SetEnvironmentVariable('EASYPEASY_TEST', 'x', 'User') }
        AfterEach { [Environment]::SetEnvironmentVariable('EASYPEASY_TEST', $null, 'User') }

        It 'removes a user environment variable' {
            Remove-EnvironmentVariable -Name EASYPEASY_TEST -User
            [Environment]::GetEnvironmentVariable('EASYPEASY_TEST', 'User') | Should -BeNullOrEmpty
        }

        It 'keeps the variable under -WhatIf' {
            Remove-EnvironmentVariable -Name EASYPEASY_TEST -User -WhatIf
            [Environment]::GetEnvironmentVariable('EASYPEASY_TEST', 'User') | Should -Be 'x'
        }
    }

    Context 'machine scope requires administrator' {

        It 'errors when not elevated' {
            Mock -ModuleName easypeasy Assert-Administrator { throw 'admin required' }

            { Remove-EnvironmentVariable -Name EASYPEASY_TEST -ErrorAction Stop } |
                Should -Throw '*machine environment variable*'
        }
    }
}