tests/Private/ConvertFrom-GCPInstanceStatus.Tests.ps1

BeforeAll {
    Import-Module (Resolve-Path (Join-Path $PSScriptRoot '..\..\PSCumulus.psd1')).Path -Force
}

Describe 'ConvertFrom-GCPInstanceStatus' {

    It 'returns null for null input' {
        InModuleScope PSCumulus {
            ConvertFrom-GCPInstanceStatus -Status $null | Should -BeNullOrEmpty
        }
    }

    It 'returns null for empty string' {
        InModuleScope PSCumulus {
            ConvertFrom-GCPInstanceStatus -Status '' | Should -BeNullOrEmpty
        }
    }

    It 'returns null for whitespace' {
        InModuleScope PSCumulus {
            ConvertFrom-GCPInstanceStatus -Status ' ' | Should -BeNullOrEmpty
        }
    }

    It 'maps "RUNNING" to Running' {
        InModuleScope PSCumulus {
            ConvertFrom-GCPInstanceStatus -Status 'RUNNING' | Should -BeExactly 'Running'
        }
    }

    It 'maps "TERMINATED" to Stopped' {
        InModuleScope PSCumulus {
            ConvertFrom-GCPInstanceStatus -Status 'TERMINATED' | Should -BeExactly 'Stopped'
        }
    }

    It 'maps "STAGING" to Pending' {
        InModuleScope PSCumulus {
            ConvertFrom-GCPInstanceStatus -Status 'STAGING' | Should -BeExactly 'Pending'
        }
    }

    It 'maps "STOPPING" to Stopping' {
        InModuleScope PSCumulus {
            ConvertFrom-GCPInstanceStatus -Status 'STOPPING' | Should -BeExactly 'Stopping'
        }
    }

    It 'maps "SUSPENDED" to Suspended' {
        InModuleScope PSCumulus {
            ConvertFrom-GCPInstanceStatus -Status 'SUSPENDED' | Should -BeExactly 'Suspended'
        }
    }

    It 'handles already lower-case input' {
        InModuleScope PSCumulus {
            ConvertFrom-GCPInstanceStatus -Status 'running' | Should -BeExactly 'Running'
        }
    }
}