. $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 = "" #region Set-ChocolateyPackageNewRelicState Describe "Set-ChocolateyPackageNewRelicState" { $global:nrXmlTrue = @' '@ $global:nrXmlFalse = @' '@ $global:nrXmlMissing = @' '@ $global:nrXmlNoAppSettings = @' '@ # Mock the pieces that make sure that the app.config is a real file. Mock -ModuleName $moduleForMock Get-ChildItem { return "totally real file path.jpg" } Mock -ModuleName $moduleForMock Test-Path { return $true } Mock -ModuleName $moduleForMock Save-XMLFile { } Mock -ModuleName $moduleForMock Get-UncPath { } Mock -ModuleName $moduleForMock Set-DotNetCoreProfiling { } Context "Sets NewRelic.AgentEnabled" { # Mock Read-XmlFile for the Test Mock -ModuleName $moduleForMock Read-XmlFile { return [xml]($nrXmlTrue.Clone()) } Mock -ModuleName $moduleForMock Test-Path { return $true } Mock -ModuleName $moduleForMock Set-AppSetting { } It "Sets value to false" { Set-ChocolateyPackageNewRelicState -Name "fake.package" -Enabled $false Assert-MockCalled -ModuleName $moduleForMock Set-AppSetting -Times 1 -Exactly -Scope It -ParameterFilter { $Key -eq "NewRelic.AgentEnabled" -and $Value -eq "false" } } It "Sets value to true" { Set-ChocolateyPackageNewRelicState -Name "fake.package" -Enabled $true Assert-MockCalled -ModuleName $moduleForMock Set-AppSetting -Times 1 -Exactly -Scope It -ParameterFilter { $Key -eq "NewRelic.AgentEnabled" -and $Value -eq "true" } } } Context "Package Path Doesn't Exist" { # Mock Test-Path, which is only used to determine if the microservice path exists. Mock -ModuleName $moduleForMock Test-Path { return $false } Mock -ModuleName $moduleForMock Write-Warning { } It "Warns if App.Config Path Doesn't Exist" { Set-ChocolateyPackageNewRelicState -Name "fake.package" -Enabled $false Assert-MockCalled -ModuleName $moduleForMock Write-Warning -Times 1 -Exactly -Scope It -ParameterFilter { $message -like "*Could not locate app.config path*" } } } } #endregion Set-ChocolateyPackageNewRelicState