Tests/New-ElmStyle.Tests.ps1
|
BeforeAll { . $PSScriptRoot/../Public/Style/New-ElmStyle.ps1 } Describe 'New-ElmStyle' -Tag 'Unit', 'P2' { Context 'When called with no parameters' { It 'Should return a PSCustomObject' { New-ElmStyle | Should -BeOfType [PSCustomObject] } It 'Should have Bold = $false' { (New-ElmStyle).Bold | Should -BeFalse } It 'Should have Italic = $false' { (New-ElmStyle).Italic | Should -BeFalse } It 'Should have Underline = $false' { (New-ElmStyle).Underline | Should -BeFalse } It 'Should have Strikethrough = $false' { (New-ElmStyle).Strikethrough | Should -BeFalse } It 'Should have Border = None' { (New-ElmStyle).Border | Should -Be 'None' } It 'Should have Align = Left' { (New-ElmStyle).Align | Should -Be 'Left' } It 'Should have all padding fields = 0' { $result = New-ElmStyle $result.PaddingTop | Should -Be 0 $result.PaddingRight | Should -Be 0 $result.PaddingBottom | Should -Be 0 $result.PaddingLeft | Should -Be 0 } It 'Should have all margin fields = 0' { $result = New-ElmStyle $result.MarginTop | Should -Be 0 $result.MarginRight | Should -Be 0 $result.MarginBottom | Should -Be 0 $result.MarginLeft | Should -Be 0 } It 'Should have Foreground = $null' { (New-ElmStyle).Foreground | Should -BeNullOrEmpty } It 'Should have Background = $null' { (New-ElmStyle).Background | Should -BeNullOrEmpty } It 'Should have Width = $null' { (New-ElmStyle).Width | Should -BeNullOrEmpty } It 'Should have Height = $null' { (New-ElmStyle).Height | Should -BeNullOrEmpty } } Context 'When -Padding 2 is specified' { It 'Should set all four padding fields to 2' { $result = New-ElmStyle -Padding 2 $result.PaddingTop | Should -Be 2 $result.PaddingRight | Should -Be 2 $result.PaddingBottom | Should -Be 2 $result.PaddingLeft | Should -Be 2 } } Context 'When -Padding 1, 2 is specified' { It 'Should set top/bottom = 1 and left/right = 2' { $result = New-ElmStyle -Padding 1, 2 $result.PaddingTop | Should -Be 1 $result.PaddingBottom | Should -Be 1 $result.PaddingRight | Should -Be 2 $result.PaddingLeft | Should -Be 2 } } Context 'When -Padding 1, 2, 3, 4 is specified' { It 'Should set padding in CSS order (top, right, bottom, left)' { $result = New-ElmStyle -Padding 1, 2, 3, 4 $result.PaddingTop | Should -Be 1 $result.PaddingRight | Should -Be 2 $result.PaddingBottom | Should -Be 3 $result.PaddingLeft | Should -Be 4 } } Context 'When -Margin 1 is specified' { It 'Should set all four margin fields to 1' { $result = New-ElmStyle -Margin 1 $result.MarginTop | Should -Be 1 $result.MarginRight | Should -Be 1 $result.MarginBottom | Should -Be 1 $result.MarginLeft | Should -Be 1 } } Context 'When -Margin 1, 2 is specified' { It 'Should set top/bottom = 1 and left/right = 2' { $result = New-ElmStyle -Margin 1, 2 $result.MarginTop | Should -Be 1 $result.MarginBottom | Should -Be 1 $result.MarginRight | Should -Be 2 $result.MarginLeft | Should -Be 2 } } Context 'When -Base is specified' { It 'Should inherit Bold from base' { $base = New-ElmStyle -Bold $result = New-ElmStyle -Base $base $result.Bold | Should -BeTrue } It 'Should replace overridden Foreground field' { $base = New-ElmStyle -Foreground '#FF0000' $result = New-ElmStyle -Base $base -Foreground '#00FF00' $result.Foreground | Should -Be '#00FF00' } It 'Should preserve non-overridden base fields when overriding another' { $base = New-ElmStyle -Bold -Border 'Rounded' $result = New-ElmStyle -Base $base -Foreground '#FF0000' $result.Bold | Should -BeTrue $result.Border | Should -Be 'Rounded' } } } |