65 lines
3.7 KiB
PowerShell
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 }
|
||
|
}
|
||
|
}
|
||
|
}
|