Templates/Sampler/tests/Unit/Public/Add-Sample.tests.ps1
$ProjectPath = "$PSScriptRoot\..\..\.." | Convert-Path $ProjectName = ((Get-ChildItem -Path $ProjectPath\*\*.psd1).Where{ ($_.Directory.Name -match 'source|src' -or $_.Directory.Name -eq $_.BaseName) -and $(try { Test-ModuleManifest $_.FullName -ErrorAction Stop } catch { $false } ) }).BaseName Import-Module $ProjectName InModuleScope $ProjectName { Describe Add-Sample { Context 'invoke plaster with correct parameters for template' { BeforeAll { } $testCases = @( # If the templates do not define those parameters, Invoke-Plaster will fail and this test will catch it. # The template integration is done separately, hence why we don't need to test it here. # We only test that the Add-Sample parameters & parameter set work with the templates we have defined. @{ TestCaseName = 'classes' AddSampleParams = @{ Sample = 'Classes' DestinationPath = $TestDrive SourceDirectory = 'Source' } } @{ TestCaseName = 'ClassResource' AddSampleParams = @{ Sample = 'ClassResource' DestinationPath = $TestDrive ResourceName = 'MyResource' SourceDirectory = 'source' } } @{ TestCaseName = 'Examples' AddSampleParams = @{ Sample = 'Examples' DestinationPath = $TestDrive } } ) mock Invoke-Plaster -mockWith {} -Verifiable -ModuleName Sampler It 'New-Sample module should call Invoke-Plaster with test case <TestCaseName>' -TestCases $testCases { param ( $TestCaseName, $AddSampleParams ) { Add-Sample @AddSampleParams } | Should -Not -Throw Assert-MockCalled -CommandName Invoke-Plaster -Scope It -Times 1 } } } } |