Tests/ConvertTo-DotEnv.Tests.ps1

BeforeAll {

    Set-StrictMode -Version "Latest"

    . "$PSScriptRoot\..\Source\ConvertTo-DotEnv.ps1"

}

Describe "ConvertTo-DotEnv" {

    It "Returns a KEY=VALUE line for every entry" {

        $text = ConvertTo-DotEnv -Values @{ KEY_ONE = "value one" }

        $text | Should -Be "KEY_ONE=value one"

    }

    It "Joins multiple entries with a newline" {

        $text = ConvertTo-DotEnv -Values @{ KEY_ONE = "value one"; KEY_TWO = "value two" }

        $lines = $text -split "`n"

        $lines | Should -Contain "KEY_ONE=value one"
        $lines | Should -Contain "KEY_TWO=value two"

    }

    It "Round-trips through ConvertFrom-DotEnv" {

        . "$PSScriptRoot\..\Source\ConvertFrom-DotEnv.ps1"

        $original = @{ KEY_ONE = "value one"; KEY_TWO = "value two" }
        $roundTripped = ConvertFrom-DotEnv -Text (ConvertTo-DotEnv -Values $original)

        $roundTripped["KEY_ONE"] | Should -Be "value one"
        $roundTripped["KEY_TWO"] | Should -Be "value two"

    }

    It "Accepts the values from the pipeline" {

        $text = @{ KEY_ONE = "value one" } | ConvertTo-DotEnv

        $text | Should -Be "KEY_ONE=value one"

    }

}