test/plugins.tests.ps1
|
BeforeAll { Get-Module ConfigMap -ErrorAction SilentlyContinue | Remove-Module Import-Module $PSScriptRoot\..\configmap.psm1 } Describe "Invoke-ConfigMapPluginHooks priority" { It "invokes higher priority plugins first (lower number runs first)" { InModuleScope ConfigMap { $script:hookOrder = @() $script:ConfigMapPlugins = @( @{ name = 'low' priority = 50 hooks = @{ TestHook = { $script:hookOrder += 'low' return @{ Handled = $true } } } }, @{ name = 'high' priority = 10 hooks = @{ TestHook = { $script:hookOrder += 'high' return @{ Handled = $false } } } } ) Invoke-ConfigMapPluginHooks -HookName 'TestHook' -Context @{} | Out-Null $script:hookOrder | Should -Be @('high', 'low') } } It "defaults missing priority to lowest precedence" { InModuleScope ConfigMap { $script:hookOrder = @() $script:ConfigMapPlugins = @( @{ name = 'default' hooks = @{ TestHook = { $script:hookOrder += 'default' return @{ Handled = $true } } } }, @{ name = 'explicit' priority = 1 hooks = @{ TestHook = { $script:hookOrder += 'explicit' return @{ Handled = $false } } } } ) Invoke-ConfigMapPluginHooks -HookName 'TestHook' -Context @{} | Out-Null $script:hookOrder | Should -Be @('explicit', 'default') } } } |