plaster/ModuleBuild/scaffold/src/tests/FunctionCBH.Tests.ps1
#Requires -Modules Pester <# This pester test verifies the module's public functions all have proper comment based help required for building documentation via PlatyPS. Example: PS> Invoke-Pester -Script @{Path = '.\src\tests\FuncitonCBH.Tests.ps1'; Parameters = @{ ModuleName = MyModule}} #> [CmdletBinding()] Param( [Parameter(HelpMessage = 'Module to scan.')] [string]$ModuleName ) If (($ModuleName -like '*.psd1') -and (test-path $ModuleName)) { $Module = (Split-Path $ModuleName -Leaf) -replace '.psd1','' } else { $Module = $ModuleName } if (-not (Get-Module $Module)) { try { Import-Module $ModuleName -force } catch { throw "$Module is not loaded." } } Describe "Comment Based Help tests for $Module" -Tags Build { $functions = Get-Command -Module $Module -CommandType Function foreach($Function in $Functions){ $help = Get-Help $Function.name Context $help.name { it "Has a HelpUri" { $Function.HelpUri | Should Not BeNullOrEmpty } It "Has related Links" { $help.relatedLinks.navigationLink.uri.count | Should BeGreaterThan 0 } it "Has a description" { $help.description | Should Not BeNullOrEmpty } it "Has an example" { $help.examples | Should Not BeNullOrEmpty } foreach($parameter in $help.parameters.parameter) { if($parameter -notmatch 'whatif|confirm') { it "Has a Parameter description for '$($parameter.name)'" { $parameter.Description.text | Should Not BeNullOrEmpty } } } } } } |