$here = (Split-Path -Parent $MyInvocation.MyCommand.Path) . "$here.ps1" Describe "Process" { Mock -CommandName Get-EnvironmentVariable -MockWith { throw 'Asked for non-Process paths' } Mock -CommandName Set-EnvironmentVariable -MockWith { throw 'Should not set non-Process paths' } # This simulates a simple real-world experience Context "Prepend terraform path / move it around" { Mock -CommandName Get-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Process' } -MockWith { return "C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Airtame;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Amazon\AWSCLI\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\dotnet\;C:\Program Files (x86)\dotnet\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\GitExtensions\;C:\Program Files (x86)\dotnet-core-uninstall\;C:\Program Files\Git\cmd;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\LinqPad5;C:\Users\cbrand\AppData\Roaming\npm;C:\Users\cbrand\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\cbrand\.dotnet\tools;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files\WindowsPowerShell\Modules\Pester\4.10.1\bin" } Mock -CommandName Get-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'User' } -MockWith { return "C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\LinqPad5;C:\Users\cbrand\AppData\Roaming\npm;C:\Users\cbrand\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\cbrand\.dotnet\tools;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files\WindowsPowerShell\Modules\Pester\4.10.1\bin;" } Mock -CommandName Get-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Machine' } -MockWith { return "C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Airtame;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Amazon\AWSCLI\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\dotnet\;C:\Program Files (x86)\dotnet\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\GitExtensions\;C:\Program Files (x86)\dotnet-core-uninstall\;C:\Program Files\Git\cmd" } Mock -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Process' } -MockWith { $Value | Should -Be "C:\ProgramData\terraform;C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Airtame;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Amazon\AWSCLI\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\dotnet\;C:\Program Files (x86)\dotnet\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\GitExtensions\;C:\Program Files (x86)\dotnet-core-uninstall\;C:\Program Files\Git\cmd;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\LinqPad5;C:\Users\cbrand\AppData\Roaming\npm;C:\Users\cbrand\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\cbrand\.dotnet\tools;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files\WindowsPowerShell\Modules\Pester\4.10.1\bin" } Mock -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'User' } -MockWith { # Note that this loses the trailing ; which doesn't show up well in massively sidescrolling situations $Value | Should -Be "C:\ProgramData\terraform;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\LinqPad5;C:\Users\cbrand\AppData\Roaming\npm;C:\Users\cbrand\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\cbrand\.dotnet\tools;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files\WindowsPowerShell\Modules\Pester\4.10.1\bin" } Mock -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Machine' } -MockWith { $Value | Should -Be "C:\ProgramData\terraform;C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Airtame;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Amazon\AWSCLI\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\dotnet\;C:\Program Files (x86)\dotnet\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\GitExtensions\;C:\Program Files (x86)\dotnet-core-uninstall\;C:\Program Files\Git\cmd" } It 'Does not throw' { { Set-PathVariable -StoreName 'Any' -Prepend 'C:\ProgramData\terraform' } | Should -Not -Throw } It 'Called the Set-EnvironmentVariable correctly' { Assert-MockCalled -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'User' } -Times 1 } It 'Called the Set-EnvironmentVariable correctly' { Assert-MockCalled -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Machine' } -Times 1 } It 'Called the Set-EnvironmentVariable correctly' { Assert-MockCalled -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Process' } -Times 1 } } # This simulates a simple real-world experience with bad params Context "Prepend terraform path / move it around - but with bad params" { Mock -CommandName Get-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Process' } -MockWith { return "C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Airtame;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Amazon\AWSCLI\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\dotnet\;C:\Program Files (x86)\dotnet\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\GitExtensions\;C:\Program Files (x86)\dotnet-core-uninstall\;C:\Program Files\Git\cmd;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\LinqPad5;C:\Users\cbrand\AppData\Roaming\npm;C:\Users\cbrand\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\cbrand\.dotnet\tools;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files\WindowsPowerShell\Modules\Pester\4.10.1\bin" } Mock -CommandName Get-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'User' } -MockWith { return "C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\LinqPad5;C:\Users\cbrand\AppData\Roaming\npm;C:\Users\cbrand\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\cbrand\.dotnet\tools;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files\WindowsPowerShell\Modules\Pester\4.10.1\bin;" } Mock -CommandName Get-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Machine' } -MockWith { return "C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Airtame;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Amazon\AWSCLI\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\dotnet\;C:\Program Files (x86)\dotnet\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\GitExtensions\;C:\Program Files (x86)\dotnet-core-uninstall\;C:\Program Files\Git\cmd" } Mock -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Process' } -MockWith { $Value | Should -Be "C:\ProgramData\terraform;C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Airtame;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Amazon\AWSCLI\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\dotnet\;C:\Program Files (x86)\dotnet\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\GitExtensions\;C:\Program Files (x86)\dotnet-core-uninstall\;C:\Program Files\Git\cmd;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\LinqPad5;C:\Users\cbrand\AppData\Roaming\npm;C:\Users\cbrand\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\cbrand\.dotnet\tools;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files\WindowsPowerShell\Modules\Pester\4.10.1\bin" } Mock -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'User' } -MockWith { # Note that this loses the trailing ; which doesn't show up well in massively sidescrolling situations $Value | Should -Be "C:\ProgramData\terraform;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\LinqPad5;C:\Users\cbrand\AppData\Roaming\npm;C:\Users\cbrand\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\cbrand\.dotnet\tools;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files\WindowsPowerShell\Modules\Pester\4.10.1\bin" } Mock -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Machine' } -MockWith { $Value | Should -Be "C:\ProgramData\terraform;C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Airtame;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Amazon\AWSCLI\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\dotnet\;C:\Program Files (x86)\dotnet\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\GitExtensions\;C:\Program Files (x86)\dotnet-core-uninstall\;C:\Program Files\Git\cmd" } It 'Does not throw' { # Listen, sometimes we make bad param decisions. It happens. { Set-PathVariable -StoreName 'Any' -Prepend 'C:\ProgramData\terraform',"" -Remove @($null) -Append "","" } | Should -Not -Throw } It 'Called the Set-EnvironmentVariable correctly' { Assert-MockCalled -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'User' } -Times 1 } It 'Called the Set-EnvironmentVariable correctly' { Assert-MockCalled -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Machine' } -Times 1 } It 'Called the Set-EnvironmentVariable correctly' { Assert-MockCalled -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Process' } -Times 1 } } Context "Does nothing if there is nothing to do" { Mock -CommandName Get-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Process' } -MockWith { return "C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Airtame;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Amazon\AWSCLI\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\dotnet\;C:\Program Files (x86)\dotnet\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\GitExtensions\;C:\Program Files (x86)\dotnet-core-uninstall\;C:\Program Files\Git\cmd;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\LinqPad5;C:\Users\cbrand\AppData\Roaming\npm;C:\Users\cbrand\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\cbrand\.dotnet\tools;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files\WindowsPowerShell\Modules\Pester\4.10.1\bin" } Mock -CommandName Get-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'User' } -MockWith { return "C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files (x86)\LinqPad5;C:\Users\cbrand\AppData\Roaming\npm;C:\Users\cbrand\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\cbrand\.dotnet\tools;C:\Users\cbrand\AppData\Local\Microsoft\WindowsApps;C:\Program Files\WindowsPowerShell\Modules\Pester\4.10.1\bin;" } Mock -CommandName Get-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Machine' } -MockWith { return "C:\Program Files (x86)\Parallels\Parallels Tools\Applications;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\Airtame;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\nodejs\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Program Files\Amazon\AWSCLI\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\dotnet\;C:\Program Files (x86)\dotnet\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Docker\Docker\resources\bin;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files (x86)\GitExtensions\;C:\Program Files (x86)\dotnet-core-uninstall\;C:\Program Files\Git\cmd" } Mock -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Process' } -MockWith { throw 'This should not get called' } Mock -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'User' } -MockWith { throw 'This should not get called' } Mock -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Machine' } -MockWith { throw 'This should not get called' } It 'Does not throw' { # Listen, sometimes we make bad param decisions. It happens. { Set-PathVariable -StoreName 'Any' -Prepend "" -Remove @($null) -Append "","" } | Should -Not -Throw } It 'Called the Set-EnvironmentVariable correctly' { Assert-MockCalled -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'User' } -Times 0 } It 'Called the Set-EnvironmentVariable correctly' { Assert-MockCalled -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Machine' } -Times 0 } It 'Called the Set-EnvironmentVariable correctly' { Assert-MockCalled -CommandName Set-EnvironmentVariable -ParameterFilter { $Name -eq 'Path' -and $StoreName -eq 'Process' } -Times 0 } } }