Public/System/Update-Env.Tests.ps1

## Import the function (Assuming the function is in the same directory)
#. "$PSScriptRoot\Refresh-Env.ps1" # Import-Module PDS
#
## Run Pester Tests
#Describe "Refresh-Env Function Tests" {
#
# BeforeAll {
# # Backup existing TEST_ENV_VAR (if it exists)
# $existingValue = [System.Environment]::GetEnvironmentVariable("TEST_ENV_VAR", "Process")
# $existingUserValue = Get-ItemProperty -Path "HKCU:\Environment" -Name "TEST_ENV_VAR" -ErrorAction SilentlyContinue
#
# # Set a test value in the registry
# Set-ItemProperty -Path "HKCU:\Environment" -Name "TEST_ENV_VAR" -Value "RegistryValue" -Force
# [System.Environment]::SetEnvironmentVariable("TEST_ENV_VAR", "OldSessionValue", "Process")
# }
#
# It "Should reload the TEST_ENV_VAR from registry" {
# # Run the refresh function
# Refresh-Env
#
# # Check if the session variable matches the registry value
# $sessionValue = [System.Environment]::GetEnvironmentVariable("TEST_ENV_VAR", "Process")
# $sessionValue | Should -Be "RegistryValue"
# }
#
# It "Should correctly merge system and user Path variables" {
# # Get values before and after refresh
# $beforePath = [System.Environment]::GetEnvironmentVariable("Path", "Process")
# Refresh-Env
# $afterPath = [System.Environment]::GetEnvironmentVariable("Path", "Process")
#
# # Check that Path was modified and not empty
# $afterPath | Should -Not -BeEmpty
# $afterPath | Should -Not -BeNullOrEmpty
#
# # Ensure it contains at least some of the expected paths
# $systemPath = [System.Environment]::GetEnvironmentVariable("Path", "Machine")
# $userPath = [System.Environment]::GetEnvironmentVariable("Path", "User")
#
# foreach ($pathEntry in $systemPath -split ";") {
# $afterPath | Should -Contain $pathEntry
# }
# foreach ($pathEntry in $userPath -split ";") {
# $afterPath | Should -Contain $pathEntry
# }
# }
#
# AfterAll {
# # Restore original TEST_ENV_VAR value
# if ($existingUserValue) {
# Set-ItemProperty -Path "HKCU:\Environment" -Name "TEST_ENV_VAR" -Value $existingUserValue.TEST_ENV_VAR -Force
# } else {
# Remove-ItemProperty -Path "HKCU:\Environment" -Name "TEST_ENV_VAR" -ErrorAction SilentlyContinue
# }
#
# # Restore process environment variable
# [System.Environment]::SetEnvironmentVariable("TEST_ENV_VAR", $existingValue, "Process")
# }
#}