databricks-cli/libs/template/template_test.go

79 lines
2.6 KiB
Go

package template
import (
"testing"
"github.com/databricks/cli/libs/cmdio"
"github.com/stretchr/testify/assert"
)
func TestTemplateHelpDescriptions(t *testing.T) {
expected := `- default-python: The default Python template for Notebooks / Delta Live Tables / Workflows
- default-sql: The default SQL template for .sql files that run with Databricks SQL
- dbt-sql: The dbt SQL template (databricks.com/blog/delivering-cost-effective-data-real-time-dbt-and-databricks)
- mlops-stacks: The Databricks MLOps Stacks template (github.com/databricks/mlops-stacks)`
assert.Equal(t, expected, HelpDescriptions())
}
func TestTemplateOptions(t *testing.T) {
expected := []cmdio.Tuple{
{Name: "default-python", Id: "The default Python template for Notebooks / Delta Live Tables / Workflows"},
{Name: "default-sql", Id: "The default SQL template for .sql files that run with Databricks SQL"},
{Name: "dbt-sql", Id: "The dbt SQL template (databricks.com/blog/delivering-cost-effective-data-real-time-dbt-and-databricks)"},
{Name: "mlops-stacks", Id: "The Databricks MLOps Stacks template (github.com/databricks/mlops-stacks)"},
{Name: "custom...", Id: "Bring your own template"},
}
assert.Equal(t, expected, options())
}
func TestBundleInitRepoName(t *testing.T) {
// Test valid URLs
assert.Equal(t, "cli.git", repoName("git@github.com:databricks/cli.git"))
assert.Equal(t, "cli", repoName("https://github.com/databricks/cli/"))
// test invalid URLs. In these cases the error would be floated when the
// git clone operation fails.
assert.Equal(t, "git@github.com:databricks", repoName("git@github.com:databricks"))
assert.Equal(t, "invalid-url", repoName("invalid-url"))
assert.Equal(t, "www.github.com", repoName("https://www.github.com"))
}
func TestTemplateTelemetryIsCapturedForAllDefaultTemplates(t *testing.T) {
for _, tmpl := range databricksTemplates {
w := tmpl.Writer
// Assert telemetry is captured for all databricks templates, i.e. templates
// owned by databricks.
assert.IsType(t, &writerWithFullTelemetry{}, w)
}
}
func TestTemplateGetDatabricksTemplate(t *testing.T) {
names := []TemplateName{
DefaultPython,
DefaultSql,
DbtSql,
MlopsStacks,
DefaultPydabs,
}
for _, name := range names {
tmpl := GetDatabricksTemplate(name)
assert.Equal(t, tmpl.name, name)
}
notExist := []string{
"/some/path",
"doesnotexist",
"https://www.someurl.com",
}
for _, name := range notExist {
tmpl := GetDatabricksTemplate(TemplateName(name))
assert.Nil(t, tmpl)
}
// Assert the alias works.
assert.Equal(t, MlopsStacks, GetDatabricksTemplate(TemplateName("mlops-stack")).name)
}