. $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-BadPackages" { Mock -CommandName Write-Host -MockWith {} Mock -CommandName Write-Warning -MockWith {} Mock -CommandName Write-Error -MockWith {} $webPackage1 = New-DummyPackageInstallationData -PackageName "web.package1" -PackageVersion "1.0.0" -IsWebOnly $webPackage2 = New-DummyPackageInstallationData -PackageName "web.package2" -PackageVersion "1.0.0" -IsWebOnly $appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.0.0" -IsAppOnly $appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.0.0" -IsAppOnly $micPackage1 = New-DummyPackageInstallationData -PackageName "mic.package1" -PackageVersion "1.0.0" -IsMicOnly $micPackage2 = New-DummyPackageInstallationData -PackageName "mic.package2" -PackageVersion "1.0.0" -IsMicOnly $appPackageArray = @($appPackage1, $appPackage2) $webPackageArray = @($webPackage1, $webPackage2) $micPackageArray = @($micPackage1, $micPackage2) $appServerPackageArray = @($appPackage1, $appPackage2, $webPackage1) $webServerPackageArray = @($webPackage1, $webPackage2, $appPackage1) $micServerPackageArray = @($micPackage1, $micPackage2, $webPackage1) $fabServerPackageArray = @($micPackage1, $micPackage2, $webPackage1) # Define wrapper objects $packageData = New-PackageMetadataObject $debugMetadata = New-Object psobject -property @{ WebServerPackages = @() AppServerPackages = @() MicServerPackages = @() FabServerPackages = @() WebPackagesToInstallMap = @{} AppPackagesToInstallMap = @{} ClassifiedPackagesMap = @{} } # Populate wrapper objects. $packageData.AppPackagesToInstall = $appPackageArray $packageData.WebPackagesToInstall = $webPackageArray $packageData.MicPackagesToInstall = $micPackageArray $debugMetadata.WebServerPackages = $webServerPackageArray $debugMetadata.AppServerPackages = $appServerPackageArray $debugMetadata.MicServerPackages = $micServerPackageArray $debugMetadata.FabServerPackages = $fabServerPackageArray $debugMetadata.ClassifiedPackagesMap["web.package1"] = $webPackage1 $debugMetadata.ClassifiedPackagesMap["web.package2"] = $webPackage2 $debugMetadata.ClassifiedPackagesMap["app.package1"] = $appPackage1 $debugMetadata.ClassifiedPackagesMap["app.package2"] = $appPackage2 $debugMetadata.ClassifiedPackagesMap["mic.package1"] = $micPackage1 $debugMetadata.ClassifiedPackagesMap["mic.package2"] = $micPackage2 Context "When Debug MetaData Has WebServerPackages" { It "Marks Packages To Be Uninstalled From Web Servers" { $packageData = Get-BadPackages $DebugMetadata $packageData $packageData.BadWebPackagesToUninstall | Should -Not -BeNullOrEmpty } } Context "When Debug MetaData Has AppServerPackages" { It "Marks Packages To Be Uninstalled From App Servers" { $packageData = Get-BadPackages $DebugMetadata $packageData $packageData.BadAppPackagesToUninstall | Should -Not -BeNullOrEmpty } It "Sets the ActionType to Uninstall"{ $packageData = Get-BadPackages $DebugMetadata $packageData $packageData.BadAppPackagesToUninstall.ActionType | Should -BeLikeExactly "Uninstall" } It "Sets the ActionReason to Wrong_Host_Type"{ $packageData = Get-BadPackages $DebugMetadata $packageData $packageData.BadAppPackagesToUninstall.ActionReason | Should -BeLikeExactly "Wrong_Host_Type" } } Context "When Debug MetaData Has MicServerPackages" { It "Marks Packages To Be Uninstalled From Mic Servers" { $packageData = Get-BadPackages $DebugMetadata $packageData $packageData.BadMicPackagesToUninstall | Should -Not -BeNullOrEmpty } } Context "When Debug MetaData Has FabServerPackages" { It "Marks Packages To Be Uninstalled From Mic Servers" { $packageData = Get-BadPackages $DebugMetadata $packageData $packageData.BadMicPackagesToUninstall | Should -Not -BeNullOrEmpty } It "Does Not Mark Packages To Be Uninstalled From Fab Servers" { $packageData = Get-BadPackages $DebugMetadata $packageData $packageData.BadFabPackagesToUninstall | Should -BeNullOrEmpty } } }