. $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 = "" $currentErrorActionPreference = $ErrorActionPreference $ErrorActionPreference = "stop" Describe 'Get-MicroserviceNewRelicMapping'{ # Silence messages. Comment these out if you're debugging tests. Mock -CommandName Write-Host -MockWith {} Mock -CommandName Write-Warning -MockWith {} Mock -CommandName Write-Error -MockWith {} Mock -CommandName Set-Content -MockWith {} Mock -CommandName Add-Member -MockWith {} Mock -CommandName Join-Path -MockWith {return "TestDrive:\$ChildPath"} Mock -CommandName Test-Path -MockWith {return $true} Mock -CommandName Get-Content -MockWith { return @" app.package1 app.package2 "@ } Context 'When Some New Relic Monitoring Should Be Disabled' { $packageData = New-PackageMetadataObject $packageData.DisableMicroserviceNewRelic = $true $appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.0.0" -IsFullScale $appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.0.0" -IsFullScale $packageArray = @($appPackage1, $appPackage2) $packageData.AppPackagesToInstall = $packageArray It "Sets NR On/Off Status" { $packages = Get-MicroserviceNewRelicMapping -BuildCheckoutDirectory "SomePath" -PackageMetadata $packageData $packages | Should -Not -BeNullOrEmpty Assert-MockCalled -CommandName Add-Member -Scope Context -Times 1 } } Context 'When No New Relic Monitoring Should Be Disabled' { $packageData = New-PackageMetadataObject $packageData.DisableMicroserviceNewRelic = $false $appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.0.0" -IsFullScale $appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.0.0" -IsFullScale $packageArray = @($appPackage1, $appPackage2) $packageData.AppPackagesToInstall = $packageArray It "Does Not Modify New Relic Status On Any Packages"{ $packages = Get-MicroserviceNewRelicMapping -BuildCheckoutDirectory "SomePath" -PackageMetadata $packageData $packages | Should -Not -BeNullOrEmpty Assert-MockCalled -CommandName Add-Member -Scope Context -Times 0 } } Context 'When NewRelicMicroServices.txt is not found' { # No New Relic file: Mock -CommandName Test-Path -MockWith {return $false} Mock -CommandName Write-Warning -MockWith {} $packageData = New-PackageMetadataObject $packageData.DisableMicroserviceNewRelic = $true $appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.0.0" -IsFullScale $appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.0.0" -IsFullScale $packageArray = @($appPackage1, $appPackage2) $packageData.AppPackagesToInstall = $packageArray It "Disables Everything"{ $packages = Get-MicroserviceNewRelicMapping -BuildCheckoutDirectory "SomePath" -PackageMetadata $packageData foreach ($package in $packages) { $package.EnableNewRelic | Should -BeNullOrEmpty } Assert-MockCalled -CommandName Write-Warning -Scope Context -Times 1 } } }