. $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 "Set-AlkamiWebAppPoolConfiguration" { Mock -ModuleName $moduleForMock -CommandName Get-LogLeadName -MockWith { "UUT" } Mock -ModuleName $moduleForMock -CommandName Write-Verbose -MockWith { } Mock -ModuleName $moduleForMock -CommandName Write-Host -MockWith { } Mock -ModuleName $moduleForMock -CommandName Write-Warning -MockWith { } Mock -ModuleName $moduleForMock -CommandName Get-AppServiceAccountName -MockWith { "this string is not empty" } Mock -ModuleName $moduleForMock -CommandName Set-ItemProperty -MockWith { } Mock -ModuleName $moduleForMock -CommandName WebAdministration\New-WebAppPool -MockWith { } Mock -ModuleName $moduleForMock -CommandName Get-Item -MockWith { } Mock -ModuleName $moduleForMock -CommandName Test-AppCommandPropertyExistsOnAppPool -MockWith { $true } Mock -ModuleName $moduleForMock -CommandName Set-AppCommandPropertyOnAppPool -MockWith { } Mock -ModuleName $moduleForMock -CommandName IISAdministration\Get-IISAppPool -MockWith { New-Object PSObject } Mock -ModuleName $moduleForMock -CommandName Get-AppSetting -MockWith { return "" } $appPoolName = "Totally fake app name" Context "Integration Tests" { It "Does nothing if all results are 'already found'" { Mock -ModuleName $moduleForMock -CommandName Test-AppCommandPropertyExistsOnAppPool -MockWith { $true } Set-AlkamiWebAppPoolConfiguration -AppPoolName $appPoolName Assert-MockCalled -CommandName Test-AppCommandPropertyExistsOnAppPool -Times 11 -Exactly -Scope It -ModuleName $moduleForMock Assert-MockCalled -CommandName Set-AppCommandPropertyOnAppPool -Times 0 -Exactly -Scope It -ModuleName $moduleForMock Assert-MockCalled -CommandName IISAdministration\Get-IISAppPool -Times 2 -Exactly -Scope It -ModuleName $moduleForMock } It "Does all actions if no results are 'already found'" { Mock -ModuleName $moduleForMock -CommandName Test-AppCommandPropertyExistsOnAppPool -MockWith { $false } Set-AlkamiWebAppPoolConfiguration -AppPoolName $appPoolName Assert-MockCalled -CommandName Test-AppCommandPropertyExistsOnAppPool -Times 11 -Exactly -Scope It -ModuleName $moduleForMock Assert-MockCalled -CommandName Set-AppCommandPropertyOnAppPool -Times 11 -Exactly -Scope It -ModuleName $moduleForMock Assert-MockCalled -CommandName IISAdministration\Get-IISAppPool -Times 2 -Exactly -Scope It -ModuleName $moduleForMock } } }