. $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 "Select-InstallPackages" { function Get-PackageObject{ param( $packageName, $packageVersion ) $properties = @{ Name = $packageName; Version = $packageVersion; Feed = $null; Tags = $null; IsService = $null; StartMode = $null} $package = New-Object -TypeName PSObject -Prop $properties; return $package } Context "When InstallPackages is Null or Empty"{ $packages = [System.Collections.ArrayList]::new() $packageObject1 = Get-PackageObject -packageName "Alkami.FakeService1" -packageVersion "1.0.0" $packageObject2 = Get-PackageObject -packageName "Alkami.FakeService2" -packageVersion "1.0.0" $packages.Add($packageObject1) $packages.Add($packageObject2) It "Returns Packages on Null"{ $installPackages = $null $returnedInstallPackages = Select-InstallPackages -Packages $packages -InstallPackages $installPackages $returnedInstallPackages | Should -Be $packages } It "Returns Packages on Empty"{ $installPackages = [System.Collections.ArrayList]::new() $returnedInstallPackages = Select-InstallPackages -Packages $packages -InstallPackages $installPackages $returnedInstallPackages | Should -Be $packages } } Context "When Given a Packages Array with Null Entries"{ $packages = [System.Collections.ArrayList]::new() $packageObject1 = Get-PackageObject -packageName "Alkami.FakeService1" -packageVersion "1.0.0" $packageObject2 = Get-PackageObject -packageName "Alkami.FakeService2" -packageVersion "1.0.0" $packageObject3 = $null $packages.Add($packageObject1) $packages.Add($packageObject2) $packages.Add($packageObject3) It "Strips Null Entries"{ $installPackages = [System.Collections.ArrayList]::new() $returnedInstallPackages = Select-InstallPackages -Packages $packages -InstallPackages $installPackages $returnedInstallPackages.Count | Should -Be 2 } } Context "When Given the Same Package in Both Arrays" { $packages = [System.Collections.ArrayList]::new() $installPackages = [System.Collections.ArrayList]::new() $packageObject1 = Get-PackageObject -packageName "Alkami.FakeService1" -packageVersion "1.0.0" $packageObject2 = Get-PackageObject -packageName "Alkami.FakeService1" -packageVersion "1.7.2" $packages.Add($packageObject1) $installPackages.Add($packageObject2) It "Takes the Value from InstallPackages" { $returnedInstallPackages = Select-InstallPackages -Packages $packages -InstallPackages $installPackages $returnedInstallPackages[0].Version | Should -Be "1.7.2" } } Context "When Given New Packages In InstallPackages"{ $packages = [System.Collections.ArrayList]::new() $installPackages = [System.Collections.ArrayList]::new() $packageObject1 = Get-PackageObject -packageName "Alkami.FakeService1" -packageVersion "1.0.0" $packageObject2 = Get-PackageObject -packageName "Alkami.FakeService2" -packageVersion "1.0.0" $packages.Add($packageObject1) $installPackages.Add($packageObject2) It "Adds the New Values to Packages"{ $returnedInstallPackages = Select-InstallPackages -Packages $packages -InstallPackages $installPackages $returnedInstallPackages.Name -Contains 'Alkami.FakeService1' | Should -BeTrue $returnedInstallPackages.Name -Contains 'Alkami.FakeService2' | Should -BeTrue } } }