. $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-ServicesChocolateyOnly" { Context "Logic" { It "Writes a Warning and Returns If No Choco Services are Stopped" { Mock -CommandName Get-ChocolateyServicesToStart -ModuleName $moduleForMock -MockWith {} Mock -CommandName Write-Warning -ModuleName $moduleForMock -MockWith {} Mock -CommandName Start-ServicesInParallel -ModuleName $moduleForMock -MockWith {} Start-ServicesChocolateyOnly Assert-MockCalled -ModuleName $moduleForMock Write-Warning -Times 1 -Exactly -Scope It ` -ParameterFilter { $Message -match "No Chocolatey Services Found to Start"} Assert-MockCalled -ModuleName $moduleForMock Start-ServicesInParallel -Times 0 -Exactly -Scope It } It "Uses the Supplied MaxParallel Value" { Mock -CommandName Start-ServicesInParallel -ModuleName $moduleForMock -MockWith {} Mock -CommandName Get-ChocolateyServicesToStart -ModuleName $moduleForMock -MockWith { return New-Object PSObject -Property @{ ServiceName = "Alkami.Stopped.Service"; ServicePath = "C:\BogusPath\Bogus.exe"; Tier = "1"; } } Start-ServicesChocolateyOnly -MaxParallel 99 Assert-MockCalled -ModuleName $moduleForMock Start-ServicesInParallel -Times 1 -Exactly -Scope It ` -ParameterFilter { $maxParallel -eq 99} } It "Calls Start Services Split by Tier" { Mock -CommandName Start-ServicesInParallel -ModuleName $moduleForMock -MockWith {} Mock -CommandName Get-ChocolateyServicesToStart -ModuleName $moduleForMock -MockWith { $tier1 = New-Object PSObject -Property @{ ServiceName = "Alkami.Tier1.Service"; ServicePath = "C:\BogusPath\Bogus.exe"; Tier = "1"; } $tier2 = New-Object PSObject -Property @{ ServiceName = "Alkami.Tier2.Service"; ServicePath = "C:\BogusPath\Bogus.exe"; Tier = "2"; } $tier99 = New-Object PSObject -Property @{ ServiceName = "Alkami.Tier99.Service"; ServicePath = "C:\BogusPath\Bogus.exe"; Tier = "99"; } return @( $tier99, $tier2, $tier1 ) } Start-ServicesChocolateyOnly Assert-MockCalled -ModuleName $moduleForMock Start-ServicesInParallel -Times 1 -Exactly -Scope It ` -ParameterFilter { [string]$serviceNamestoStart -eq "Alkami.Tier1.Service" } Assert-MockCalled -ModuleName $moduleForMock Start-ServicesInParallel -Times 1 -Exactly -Scope It ` -ParameterFilter { [string]$serviceNamestoStart -eq "Alkami.Tier2.Service" } Assert-MockCalled -ModuleName $moduleForMock Start-ServicesInParallel -Times 1 -Exactly -Scope It ` -ParameterFilter { [string]$serviceNamestoStart -eq "Alkami.Tier99.Service" } } } }