added Invoke-ChecklistRequirement unit tests

zachilde/minver
Chris Kuech 2018-10-15 15:02:32 -07:00
parent 564902483f
commit a0c4b0d235
3 changed files with 60 additions and 3 deletions

View File

@ -10,9 +10,6 @@ $InformationPreference = "Continue"
$LogContext = [Stack[string]]::new()
Import-Module "Profile"
$DockerLinePrefix = " ----->"

60
Requirements.Tests.ps1 Normal file
View File

@ -0,0 +1,60 @@
Import-Module Pester
Import-Module .\Requirements
Describe "Invoke-ChecklistRequirement" {
It "Should write to host correctly" {
# convert Host stream to array by writing to then reading from file
$tempFile = "$env:TEMP\$(New-Guid).out.txt"
try {
Invoke-ChecklistRequirement `
-Describe "Simple Requirement" `
-Test { $script:ValidRequirementHasRun } `
-Set { $script:ValidRequirementHasRun = $true } `
*> $tempFile
$output = Get-Content $tempFile
$loggedOutput = $output | ? {$_.Trim()}
$clearedOutput = $output | ? {-not $_.Trim()}
$loggedOutput | % {$_ | Should -Match "^\d\d:\d\d:\d\d \[ . \] Simple Requirement$"}
$clearedOutput.Count | Should -Be 1
$loggedOutput.Count | Should -Be 2
} finally {
Remove-Item $tempFile
}
}
It "Should not 'Set' if in desired state" {
$script:NotSetIfInDesiredState = 0
Invoke-ChecklistRequirement `
-Describe "Simple Requirement" `
-Test { $true } `
-Set { $script:NotSetIfInDesiredState++ } `
*> $null
$script:NotSetIfInDesiredState | Should -Be 0
}
It "Should 'Set' if in desired state" {
$script:SetIfInDesiredState = 0
Invoke-ChecklistRequirement `
-Describe "Simple Requirement" `
-Test {$script:SetIfInDesiredState -gt 0} `
-Set {$script:SetIfInDesiredState++} `
*> $null
$script:SetIfInDesiredState | Should -Be 1
}
It "Should validate once set" {
$script:TestOnceSetIsTestCount = 0
$script:TestOnceSetIsSet = $false
Invoke-ChecklistRequirement `
-Describe "Simple Requirement" `
-Test {$script:TestOnceSetIsTestCount += 1; $script:TestOnceSetIsSet} `
-Set {$script:TestOnceSetIsSet = $true} `
*> $null
$script:TestOnceSetIsSet | Should -Be $true
$script:TestOnceSetIsTestCount | Should -Be 2
}
}

Binary file not shown.