From ed3b80d9ddedec7d74a739bcea4e5bc034dd8fb7 Mon Sep 17 00:00:00 2001 From: Zachary Folwick Date: Tue, 29 Sep 2015 10:06:53 -0700 Subject: [PATCH] added Get-Variable tests --- src/pester-tests/Test-Get-Variable.Tests.ps1 | 149 +++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 src/pester-tests/Test-Get-Variable.Tests.ps1 diff --git a/src/pester-tests/Test-Get-Variable.Tests.ps1 b/src/pester-tests/Test-Get-Variable.Tests.ps1 new file mode 100644 index 000000000..821c7309d --- /dev/null +++ b/src/pester-tests/Test-Get-Variable.Tests.ps1 @@ -0,0 +1,149 @@ +Describe "Test-Get-Variable" { + It "Should be able to call with no parameters without error" { + { Get-Variable } | Should Not Throw + } + + It "Should return environment variables when called with no parameters" { + (Get-Variable).Name -contains "$" | Should Be $true + (Get-Variable).Name -contains "?" | Should Be $true + (Get-Variable).Name -contains "HOST" | Should Be $true + (Get-Variable).Name -contains "PWD" | Should Be $true + (Get-Variable).Name -contains "PID" | Should Be $true + (Get-Variable).Name -contains "^" | Should Be $true + } + + It "Should return the value of an object" { + New-Variable -Name tempVar -Value 1 + (Get-Variable tempVar).Value | Should Be (1) + } + + It "Should be able to call using the gv alias" { + { gv } | Should Not Throw + } + + It "Should be able to call using the Name switch" { + New-Variable -Name var1 -Value 4 + + { Get-Variable -Name var1 } | Should Not Throw + + (Get-Variable -Name var1).Value | Should Be 4 + + Remove-Variable var1 + } + + It "Should be able to use wildcard characters in the Name field" { + New-Variable -Name var1 -Value 4 + New-Variable -Name var2 -Value "test" + + (Get-Variable -Name var*).Value[0] | Should be 4 + (Get-Variable -Name var*).Value[1] | Should be "test" + + Remove-Variable var1 + Remove-Variable var2 + } + + It "Should return only the value if the value switch is used" { + New-Variable -Name var1 -Value 4 + + Get-Variable -Name var1 -ValueOnly | Should be 4 + + Remove-Variable var1 + } + + It "Should pipe string to the name field without the Name field being specified"{ + New-Variable -Name var1 -Value 3 + + ("var1" | Get-Variable ).Value | Should Be 3 + + Remove-Variable var1 + } + + It "Should be able to include a set of variables to get" { + New-Variable -Name var1 -Value 4 + New-Variable -Name var2 -Value 2 + + $actual = Get-Variable -Include var1, var2 + + $actual[0].Name | Should Be var1 + $actual[1].Name | Should Be var2 + + $actual[0].Value | Should Be 4 + $actual[1].Value | Should Be 2 + + Remove-Variable var1 + Remove-Variable var2 + } + + It "Should be able to exclude a set of variables to get" { + New-Variable -Name var1 -Value 4 + New-Variable -Name var2 -Value 2 + New-Variable -Name var3 -Value "test" + + $actual = Get-Variable -Exclude var1, var2 + + $actual | Where-Object { $_.Name -eq "var3" } | Should Not BeNullOrEmpty + } + +Context "Scope Tests" { + # This will violate the DRY principle. Tread softly. + + It "Should be able to get a global scope variable using the global switch" { + New-Variable globalVar -Value 1 -Scope global -Force + + (Get-Variable -Name globalVar -Scope global)[0].Value | Should Be 1 + } + + It "Should not be able to clear a global scope variable using the local switch" { + New-Variable globalVar -Value 1 -Scope global -Force + + Get-Variable -Name globalVar -Scope local -ErrorAction SilentlyContinue | Should Throw + } + + It "Should be able to get a global variable using the script scope switch" { + { + New-Variable globalVar -Value 1 -Scope global -Force + Get-Variable -Name globalVar -Scope script + } | Should Not Throw + } + + It "Should be able to get an item locally using the local switch" { + { + New-Variable globalVar -Value 1 -Scope local -Force + + Get-Variable -Name globalVar -Scope local + } | Should Not Throw + } + + It "Should be able to get an item locally using the global switch" { + { + New-Variable globalVar -Value 1 -Scope local -Force + + Get-Variable -Name globalVar -Scope global + } | Should Not Throw + } + + It "Should not be able to get a local variable using the script scope switch" { + { + New-Variable globalVar -Value 1 -Scope local -Force + + Get-Variable -Name globalVar -Scope script + } | Should Not Throw + } + + It "Should be able to get a script variable created using the script switch" { + { + New-Variable globalVar -Value 1 -Scope script -Force + + Get-Variable -Name globalVar -Scope script + } | Should Not Throw + } + + It "Should be able to clear a global script variable that was created using the script scope switch" { + { + New-Variable globalVar -Value 1 -Scope script -Force + + Get-Variable -Name globalVar -Scope script + } | Should Not Throw + } + } +}