Tests/Add-PsmDependency.Tests.ps1
$moduleRoot = Resolve-Path "$PSScriptRoot\.." $moduleName = Split-Path $moduleRoot -Leaf Import-Module "$moduleRoot\PSModuleBuilder.psm1" Describe "Add-PsmDependency" -Tag "Unit" { Context 'When in an initialized module folder' { BeforeAll { Write-Host -for DarkGreen "In Describe BeforeAll" Write-Verbose "Creating new directory PsmDependency" Remove-ItemIfExists "$PSScriptRoot\TestPester\PsmDependency" | Out-Null New-Item "$PSScriptRoot\TestPester\PsmDependency" -ItemType Directory -Force Write-Verbose "Changing location to PsmDependency" Set-Location "$PSScriptRoot\TestPester\PsmDependency" Initialize-Psm -y Get-ChildItem "$PSScriptRoot\TestPester\PsmDependency" } Context "When module exists" { InModuleScope PSModuleBuilder { $someModule = @{ Name = "SomeModule"; Version = "2.0.0" } Mock Get-Module -MockWith { $someModule } -Verifiable Add-PsmDependency "SomeModule" It "should use mocked functionality -- Verified" { Assert-VerifiableMock } It "should use mocked functionality -- Times Called" { Assert-MockCalled Get-Module -Times 1 } it "should have a package xml file" { Test-Path "$PSScriptRoot\TestPester\PsmDependency\module-psd1.xml" | Should -be $true } it "should add a module to packagexml.RequiredModules -- Null Check" { (Import-Clixml "module-psd1.xml").RequiredModules | Should -Not -BeNullOrEmpty } it "should add a module to packagexml.RequiredModules -- > 0 Check" { (Import-Clixml "module-psd1.xml").RequiredModules.Count -gt 0 | Should -Be $true } it "should add a module to packagexml.RequiredModules -- Name Check" { ((Import-Clixml "module-psd1.xml").RequiredModules).Name -eq $someModule.Name | Should -Be $true } it "should add a module to packagexml.RequiredModules -- Version Check" { ((Import-Clixml "module-psd1.xml").RequiredModules).Version -eq $someModule.Version | Should -Be $true } } } Context "When module does not exist" { InModuleScope PSModuleBuilder { Mock Get-Module -MockWith { } it "should have a package xml file" { { Add-PsmDependency "SomeModule" } | Should -Throw } } } } Context 'When in a non-initialized module folder' { BeforeAll { Write-Host -for DarkGreen "In Describe BeforeAll" Set-Location "$PSScriptRoot\TestPester" } InModuleScope PSModuleBuilder { it "should throw due to missing folders #1" { { Add-PsmDependency "some-file.txt" "some text data..." } | Should -Throw } it "should throw due to missing folders #2" { Mock Confirm-IsInitializedModulePath { return } { Add-PsmDependency "some-file.txt" "some text data..." } | Should -Throw } it "should throw due to data folder" { Mock Confirm-IsInitializedModulePath { } Mock Import-CliXml -MockWith { @{ RootModule = "SomeModule" } } { Add-PsmDependency "some-file.txt" "some text data..." } | Should -Throw } } } AfterAll { Write-Host "Changing back to moduleRoot: $PSScriptRoot" Set-Location $PSScriptRoot } } |