Tests/Import-MyModule.Test.ps1
Describe 'Import-MyModule' { BeforeAll { # Mock dependencies Mock Import-Module { } Mock Get-Module { $null } Mock Write-Error { } Mock Test-Path { $true } } Context 'Parameter Validation' { It 'Should require Name parameter' { { Import-MyModule } | Should -Throw } It 'Should accept pipeline input' { { 'TestModule' | Import-MyModule } | Should -Not -Throw } It 'Should validate version format' { { Import-MyModule -Name 'Test' -MinimumVersion 'invalid' } | Should -Throw } } Context 'Special Module Handling' { It 'Should handle GroupPolicy module' { Import-MyModule -Name 'GroupPolicy' -Force Should -Invoke Import-Module -Times 1 } It 'Should handle ServerManager module' { Import-MyModule -Name 'ServerManager' -Force Should -Invoke Import-Module -Times 1 } } Context 'Module Import Logic' { It 'Should check for module availability' { Mock Get-Module { $null } Import-MyModule -Name 'NonExistentModule' Should -Invoke Write-Error -Times 1 } It 'Should handle already imported modules' { Mock Get-Module { [PSCustomObject]@{ Name = 'TestModule' } } Import-MyModule -Name 'TestModule' Should -Invoke Import-Module -Times 0 } It 'Should force import when specified' { Mock Get-Module { [PSCustomObject]@{ Name = 'TestModule' } } Import-MyModule -Name 'TestModule' -Force Should -Invoke Import-Module -Times 1 } } Context 'Error Handling' { It 'Should handle Import-Module failures' { Mock Import-Module { throw 'Import failed' } Import-MyModule -Name 'FailingModule' Should -Invoke Write-Error -Times 1 } } } |