tests/ib-dsl.Tests.ps1

. $PSScriptRoot/testhelpers.ps1

BeforeAll {
    . $PSScriptRoot/testhelpers.ps1
}

Describe 'DSL like syntax should generate correct yml document.' {
    BeforeAll {
        $docName = 'Amazon Corretto 11'
        $docDesc = 'Installs Amazon Corretto 11 for Windows in accordance with the Amazon Corretto 11 User Guide at https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/windows-7-install.html.'
        $ExampleYaml = Get-ExampleYaml -path "$PSScriptRoot/test-yaml-files/CorrettoExample.yml"
    }

    Context 'Testing whether the module returns valid Image Builder YAML documents' {
        It 'Generates a correct YAML' {
            IBD $docName -description $docDesc @(
                IBP 'build' @(
                    (IBS 'Installer' -ExecutePowerShell -timeoutSeconds 15 -commands "Write-Host 'amazon-corretto-11-x64-windows-jdk.msi'"),
                    (IBS 'InstallerUri' -ExecutePowerShell -timeoutSeconds 15 -commands "Write-Host 'https://corretto.aws/downloads/latest/{{build.Installer.outputs.stdout}}'")
                )
            ) | Should -BeExactly $ExampleYaml
        }
    }

    Context 'Users should be able to use Pipeline to generate valid Documents' {
        It 'Generates a correct IB document' {
            $Step1 = "Write-Host 'amazon-corretto-11-x64-windows-jdk.msi'" | IBS 'Installer' -ExecutePowerShell -timeoutSeconds 15
            $Step2 = "Write-Host 'https://corretto.aws/downloads/latest/{{build.Installer.outputs.stdout}}'" | IBS 'InstallerUri' -ExecutePowerShell -timeoutSeconds 15
            $Step1, $Step2 | IBP 'build' | IBD $docName -Description $docDesc | Should -BeExactly $ExampleYaml
        }
    }
}