ps/Modules/Alkami.PowerShell.Choco/Public/Select-InstallPackages.Tests.ps1

101 lines
3.9 KiB
PowerShell
Raw Permalink Normal View History

2023-05-30 22:51:22 -07:00
. $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
}
}
}