tests/functions/Get-OrElse.Tests.ps1

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

InModuleScope PSDataKit {

    Describe 'Get-OrElse' {

        $mockedEmptyArray = @()
        $mockedSampleArray = @(1, 2, 3, 2, 1)
        $mockedEmptyHashTable = @{ }
        $mockedSampleHashTable = @{a = 1; b = "2" }
        $mockedEmptyObject = New-Object -TypeName psobject
        $mockedSampleObject = New-Object -TypeName psobject
        $mockedSampleObject | Add-Member -MemberType NoteProperty -Name "UserName" -Value "SampleName"

        Context 'with pipelined value' {

            It 'returns default if value is null' {
                Get-OrElse $Null "default" | Should Be "default"
            }
            It 'returns default if value is empty' {
                Get-OrElse "" "default" | Should Be "default"
            }
            It 'returns value if value is neither null or empty' {
                Get-OrElse "a" "default" | Should Be "a"
                Get-OrElse 1   "default" | Should Be 1
                Get-OrElse " " "default" | Should Be " "
            }
        }
        Context 'with pipeline value' {
            It 'returns default if value is null' {
                $Null | Get-OrElse -Default "default" | Should Be "default"
            }
            It 'returns default if value is empty' {
                "" | Get-OrElse -Default "default" | Should Be "default"
            }
            It 'returns value if value is neither null or empty' {
                "a" | Get-OrElse -Default "default" | Should Be "a"
                1 | Get-OrElse -Default "default" | Should Be 1
                " " | Get-OrElse -Default "default" | Should Be " "
            }
        }
        Context 'with pipeline objects' {
            It 'should return default if array is empty' {
                $mockedEmptyArray | Get-OrElse -Default "default" | Should Be "default"
            }
            It 'should return default if hashtable is empty' {
                $mockedEmptyHashTable | Get-OrElse -Default "default" | Should Be "default"
            }
            It 'should return object if object not empty' {
                $mockedSampleObject | Get-OrElse -Default "default" | Should Be $mockedSampleObject
            }
            It 'should return object if new object PSObject initialized but without members' {
                $mockedEmptyObject | Get-OrElse -Default "default" | Should Be $mockedEmptyObject
            }
        }
        Context 'with parametrized value' {
            It 'should return provided hashmap' {
                Get-OrElse -Value $mockedSampleHashTable -Default "default" | Should Be $mockedSampleHashTable
            }
            It 'should return provided array' {
                Get-OrElse -Value $mockedSampleArray -Default "default" | Should Be $mockedSampleArray
            }
        }
    }
}