Tests/ConvertFrom-DotEnv.Tests.ps1

BeforeAll {

    Set-StrictMode -Version "Latest"

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

}

Describe "ConvertFrom-DotEnv" {

    It "Returns every key=value pair" {

        $text = @(
            "KEY_ONE=value one"
            "KEY_TWO = value two "
        ) -join "`n"

        $values = ConvertFrom-DotEnv -Text $text

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

    }

    It "Ignores comment and blank lines" {

        $text = @(
            "# comment line"
            ""
            "KEY_ONE=value one"
        ) -join "`n"

        $values = ConvertFrom-DotEnv -Text $text

        $values.Keys | Should -HaveCount 1
        $values["KEY_ONE"] | Should -Be "value one"

    }

    It "Throws when a non-comment, non-blank line is not in KEY=VALUE format" {

        { ConvertFrom-DotEnv -Text "not a key value line" } | Should -Throw

    }

    It "Accepts the text from the pipeline" {

        $values = "KEY_ONE=value one" | ConvertFrom-DotEnv

        $values["KEY_ONE"] | Should -Be "value one"

    }

}