-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGet-{{Prefix}}Example.tests.ps1
More file actions
71 lines (58 loc) · 2.31 KB
/
Copy pathGet-{{Prefix}}Example.tests.ps1
File metadata and controls
71 lines (58 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
[Diagnostics.CodeAnalysis.SuppressMessageAttribute(
'PSUseDeclaredVarsMoreThanAssignments',
'',
Justification = 'Pester BeforeAll/It scope'
)]
param()
BeforeDiscovery {
# Build module if not running in psake build
if ($null -eq $Env:BHBuildOutput) {
$buildFilePath = Join-Path -Path $PSScriptRoot -ChildPath '..\..\..\build.psake.ps1'
$invokePsakeParameters = @{
TaskList = 'Build'
BuildFile = $buildFilePath
}
Invoke-psake @invokePsakeParameters
}
# PowerShellBuild outputs to Output/<ModuleName>/<Version>/
$projectRoot = Split-Path -Path (Split-Path -Path (Split-Path -Path $PSScriptRoot -Parent) -Parent) -Parent
$sourceManifest = Join-Path -Path $projectRoot -ChildPath "$Env:BHProjectName/$Env:BHProjectName.psd1"
$moduleVersion = (Import-PowerShellDataFile $sourceManifest).ModuleVersion
$Env:BHBuildOutput = Join-Path -Path $projectRoot -ChildPath "Output/$Env:BHProjectName/$moduleVersion"
}
BeforeAll {
# Import the module from the build output
$moduleManifestPath = Join-Path -Path $Env:BHBuildOutput -ChildPath "$Env:BHProjectName.psd1"
Get-Module $Env:BHProjectName | Remove-Module -Force -ErrorAction 'Ignore'
Import-Module $moduleManifestPath -Force -ErrorAction 'Stop'
}
Describe 'Get-{{Prefix}}Example' {
Context 'Basic functionality' {
It 'Returns a greeting with default name' {
$result = Get-{{Prefix}}Example
$result | Should -Be 'Hello, World!'
}
It 'Returns a greeting with specified name' {
$result = Get-{{Prefix}}Example 'PowerShell'
$result | Should -Be 'Hello, PowerShell!'
}
It 'Accepts pipeline input' {
$result = 'Test' | Get-{{Prefix}}Example
$result | Should -Be 'Hello, Test!'
}
}
Context 'Parameter validation' {
It 'Throws on empty name' {
{ Get-{{Prefix}}Example '' } | Should -Throw
}
It 'Throws on null name' {
{ Get-{{Prefix}}Example $null } | Should -Throw
}
}
Context 'Verbose output' {
It 'Writes verbose messages when -Verbose is specified' {
$verboseOutput = Get-{{Prefix}}Example 'Test' -Verbose 4>&1
$verboseOutput | Should -Not -BeNullOrEmpty
}
}
}