Tests/Add-PsmData.Tests.ps1
$moduleRoot = Resolve-Path "$PSScriptRoot\.." $moduleName = Split-Path $moduleRoot -Leaf Import-Module "$moduleRoot\PSModuleBuilder.psm1" Describe "Add-PsmData" -Tag "Unit" { Context 'When in an initialized module folder' { BeforeAll { Write-Host -for DarkGreen "In Describe BeforeAll" Write-Verbose "Creating new directory PsmData" Remove-ItemIfExists "$PSScriptRoot\TestPester\PsmData" New-Item "$PSScriptRoot\TestPester\PsmData" -ItemType Directory -Force Write-Verbose "Changing location to PsmData" Get-ChildItem "$PSScriptRoot\TestPester\PsmData" Set-Location "$PSScriptRoot\TestPester\PsmData" Initialize-Psm -y } Add-PsmData "some-file.txt" "some text data..." Get-ChildItem "$PSScriptRoot\TestPester\PsmData\" it "should create data file" { Test-Path "$PSScriptRoot\TestPester\PsmData\Data\some-file.txt" | Should -be $true } $testCases = @( @{ file = "jsonfile.json"; data = (@{test = "data"; some = "stuff"} | ConvertTo-Json) } @{ file = "csvfile.csv"; data = "top,row,2,1" } @{ file = "something.js"; data = "console.log('looky here');" } ) It "Add-PsmData <file> should create file" -TestCases $testCases { param ($file, $data) Add-PsmData $file $data Test-Path "$PSScriptRoot\TestPester\PsmData\Data\$a" | Should -Be $true } } 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-PsmData "some-file.txt" "some text data..." } | Should -Throw } it "should throw due to missing folders #2" { Mock Confirm-IsInitializedModulePath { return } { Add-PsmData "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-PsmData "some-file.txt" "some text data..." } | Should -Throw } } } AfterAll { Write-Host "Changing back to moduleRoot: $PSScriptRoot" Set-Location $PSScriptRoot } } |