-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGet-{{Prefix}}Example.tests.ps1
More file actions
77 lines (63 loc) · 2.87 KB
/
Copy pathGet-{{Prefix}}Example.tests.ps1
File metadata and controls
77 lines (63 loc) · 2.87 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
72
73
74
75
76
77
[Diagnostics.CodeAnalysis.SuppressMessageAttribute(
'PSUseDeclaredVarsMoreThanAssignments',
'',
Justification = 'Pester BeforeAll/It scope'
)]
param()
BeforeDiscovery {
# Resolve the project root once (tests/Unit/<Layer>/ -> repo root, three levels up);
# used both to locate build.ps1 below and to compute the staged build output path.
$projectRoot = Split-Path -Path (Split-Path -Path (Split-Path -Path $PSScriptRoot -Parent) -Parent) -Parent
# Build module if not running in psake build
if ($null -eq $Env:BHBuildOutput) {
# Standalone run (e.g. Invoke-Pester on this file directly, or an agent
# running one test): the module isn't built and the BuildHelpers env vars
# aren't set. Defer to build.ps1 -- the canonical entry point -- to bootstrap
# dependencies, set the BuildHelpers environment, and stage the module.
# Invoke with & (not dot-sourcing): build.ps1 ends in an exit statement, and
# the call operator contains it to the script boundary instead of ending the
# whole Pester run.
$buildScript = Join-Path -Path $projectRoot -ChildPath 'build.ps1'
& $buildScript -Task 'Build' -Bootstrap
}
# PowerShellBuild outputs to Output/<ModuleName>/<Version>/
$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
}
}
}