tests/unit/Private/ConvertTo-KlippyPascalCaseObject.Tests.ps1
|
#Requires -Modules Pester BeforeAll { $modulePath = Split-Path -Parent (Split-Path -Parent (Split-Path -Parent $PSScriptRoot)) Import-Module "$modulePath/KlippyCLI.psd1" -Force } Describe "ConvertTo-KlippyPascalCaseObject" -Tag Unit { Context "Simple Properties" { It "Should convert snake_case to PascalCase" { $result = & (Get-Module KlippyCLI) { $input = [PSCustomObject]@{ print_stats = "value" } ConvertTo-KlippyPascalCaseObject -InputObject $input } $result.PSObject.Properties.Name | Should -Contain "PrintStats" $result.PrintStats | Should -Be "value" } It "Should handle multiple underscores" { $result = & (Get-Module KlippyCLI) { $input = [PSCustomObject]@{ current_layer_height = 0.2 } ConvertTo-KlippyPascalCaseObject -InputObject $input } $result.PSObject.Properties.Name | Should -Contain "CurrentLayerHeight" } It "Should handle single word properties" { $result = & (Get-Module KlippyCLI) { $input = [PSCustomObject]@{ state = "ready" } ConvertTo-KlippyPascalCaseObject -InputObject $input } $result.PSObject.Properties.Name | Should -Contain "State" } } Context "Nested Objects" { It "Should convert nested object properties" { $result = & (Get-Module KlippyCLI) { $input = [PSCustomObject]@{ heater_bed = [PSCustomObject]@{ target_temp = 60 } } ConvertTo-KlippyPascalCaseObject -InputObject $input } $result.HeaterBed | Should -Not -BeNullOrEmpty $result.HeaterBed.TargetTemp | Should -Be 60 } } Context "Arrays" { It "Should preserve primitive arrays" { $result = & (Get-Module KlippyCLI) { $input = [PSCustomObject]@{ values = @(1, 2, 3) } ConvertTo-KlippyPascalCaseObject -InputObject $input } $result.Values | Should -Be @(1, 2, 3) } } Context "Edge Cases" { It "Should handle null values" { $result = & (Get-Module KlippyCLI) { $input = [PSCustomObject]@{ null_value = $null } ConvertTo-KlippyPascalCaseObject -InputObject $input } $result.NullValue | Should -BeNullOrEmpty } It "Should return primitive types unchanged" { $result = & (Get-Module KlippyCLI) { ConvertTo-KlippyPascalCaseObject -InputObject "string" } $result | Should -Be "string" } } } |