ps/Modules/Alkami.PowerShell.Services/Public/Start-ServicesOnly.tests.ps1
2023-05-30 22:51:22 -07:00

65 lines
3.7 KiB
PowerShell

. $PSScriptRoot\..\..\Load-PesterModules.ps1
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
$sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.tests\.', '.'
$functionPath = Join-Path -Path $here -ChildPath $sut
Write-Host "Overriding SUT: $functionPath"
Import-Module $functionPath -Force
$moduleForMock = ""
Describe "Start-ServicesOnly" {
Mock -ModuleName $moduleForMock -CommandName Start-IISOnly -MockWith {}
Mock -ModuleName $moduleForMock -CommandName Start-DependentServices -MockWith {}
Mock -ModuleName $moduleForMock -CommandName Start-Sleep -MockWith {}
Mock -ModuleName $moduleForMock -CommandName Start-FileBeatsService -MockWith {}
Context "Error Handling" {
It "Does Not Throw if the Services to Start Collection is Null" {
Mock -ModuleName $moduleForMock -CommandName Get-ServicesToStart -MockWith { return $null }
Mock -ModuleName $moduleForMock -CommandName Get-ChocolateyServicesToStart -MockWith { return $null }
Mock -ModuleName $moduleForMock -CommandName Get-ChocolateyServices -MockWith { return $null }
Mock -ModuleName $moduleForMock -CommandName Get-AlkamiServices -MockWith { return $null }
Mock -ModuleName $moduleForMock -CommandName Start-ServicesInParallel -MockWith {}
{ Start-ServicesOnly } | Should -Not -Throw
Assert-MockCalled -CommandName Start-ServicesInParallel -Times 0 -Exactly -Scope It -ModuleName $moduleForMock
}
It "Writes a Warning if the Services to Start Collection is Null" {
Mock -ModuleName $moduleForMock -CommandName Get-ServicesToStart -MockWith { return $null }
Mock -ModuleName $moduleForMock -CommandName Get-ChocolateyServicesToStart -MockWith { return $null }
Mock -ModuleName $moduleForMock -CommandName Get-ChocolateyServices -MockWith { return $null }
Mock -ModuleName $moduleForMock -CommandName Get-AlkamiServices -MockWith { return $null }
Mock -ModuleName $moduleForMock -CommandName Start-ServicesInParallel -MockWith {}
Mock -ModuleName $moduleForMock -CommandName Write-Warning -MockWith {}
Start-ServicesOnly
Assert-MockCalled -CommandName Write-Warning -Times 1 -Exactly -Scope It -ModuleName $moduleForMock `
-ParameterFilter { $Message -match "No Legacy Services Found to Start" }
}
}
Context "Parameter Validation" {
It "Uses the Supplied Max Parallel Parameter" {
Mock -ModuleName $moduleForMock -CommandName Get-ServicesToStart -MockWith { return @("Totally Fake Legacy Service") }
Mock -ModuleName $moduleForMock -CommandName Get-ChocolateyServicesToStart -MockWith { return @("Totally Fake Choco Service") }
Mock -ModuleName $moduleForMock -CommandName Get-ChocolateyServices -MockWith { return @("Totally Fake Choco Service") }
Mock -ModuleName $moduleForMock -CommandName Get-AlkamiServices -MockWith {}
Mock -ModuleName $moduleForMock -CommandName Start-ServicesInParallel -MockWith {}
Mock -ModuleName $moduleForMock -CommandName Start-ServicesChocolateyOnly -MockWith {}
$maxParallelTestValue = 20
Start-ServicesOnly -maxParallel $maxParallelTestValue
Assert-MockCalled -CommandName Start-ServicesInParallel -Times 1 -Exactly -Scope It `
-ModuleName $moduleForMock -ParameterFilter { $maxParallel -eq $maxParallelTestValue }
Assert-MockCalled -CommandName Start-ServicesChocolateyOnly -Times 1 -Exactly -Scope It `
-ModuleName $moduleForMock -ParameterFilter { $maxParallel -eq $maxParallelTestValue }
}
}
}