package templatestrings import ( "embed" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) //go:embed testdata/* var embeddedTestData embed.FS func TestAll(t *testing.T) { t.Run("Faulty initialization", func(t *testing.T) { _, err := InitTemplateStrings("testdata", ".yaml", "en", "faulty") require.Error(t, err) }) t.Run("Missing dir", func(t *testing.T) { _, err := InitTemplateStrings("testdata/x", ".yaml", "en") require.Error(t, err) }) t.Run("Missing file", func(t *testing.T) { _, err := InitTemplateStrings("testdata", ".yaml", "en", "x") require.NoError(t, err) }) t.Run("File as directory", func(t *testing.T) { _, err := InitTemplateStrings("testdata/en.yaml", ".yaml", "en") require.Error(t, err) }) t.Run("Missing default variant", func(t *testing.T) { _, err := InitTemplateStrings("testdata", ".yaml", "x", "en") require.Error(t, err) }) t.Run("No variants", func(t *testing.T) { _, err := InitTemplateStrings("testdata", ".yaml", "x") require.Error(t, err) }) t.Run("Language twice", func(t *testing.T) { _, err := InitTemplateStrings("testdata", ".yaml", "en", "en", "de") require.NoError(t, err) }) t.Run("Empty language", func(t *testing.T) { _, err := InitTemplateStrings("testdata", ".yaml", "") require.Error(t, err) }) t.Run("Wrong number of inputs", func(t *testing.T) { ts, err := InitTemplateStrings("testdata", ".yaml", "en", "de") require.NoError(t, err) assert.Empty(t, ts.GetTemplateStringVariant("simple", "en", "x")) }) t.Run("Default variant", func(t *testing.T) { ts, err := InitTemplateStrings("testdata", ".yaml", "en", "de") require.NoError(t, err) assert.Equal(t, "Simple", ts.GetTemplateStringVariant("simple")) }) t.Run("Specified variant", func(t *testing.T) { ts, err := InitTemplateStrings("testdata", ".yaml", "en", "de") require.NoError(t, err) assert.Equal(t, "Simple", ts.GetTemplateStringVariant("en", "simple")) assert.Equal(t, "Einfach", ts.GetTemplateStringVariant("de", "simple")) }) t.Run("Fallback to default variant", func(t *testing.T) { ts, err := InitTemplateStrings("testdata", ".yaml", "en", "de") require.NoError(t, err) assert.Equal(t, "Fallback", ts.GetTemplateStringVariant("de", "fallback")) }) t.Run("Missing variant", func(t *testing.T) { ts, err := InitTemplateStrings("testdata", ".yaml", "en", "de") require.NoError(t, err) assert.Equal(t, "Simple", ts.GetTemplateStringVariant("x", "simple")) }) t.Run("Missing string", func(t *testing.T) { ts, err := InitTemplateStrings("testdata", ".yaml", "en", "de") require.NoError(t, err) assert.Empty(t, ts.GetTemplateStringVariant("x")) }) t.Run("Template func", func(t *testing.T) { ts, err := InitTemplateStrings("testdata", ".yaml", "en", "de") require.NoError(t, err) assert.Equal(t, "Simple", ts.GetTemplateStringVariantFunc()("simple")) }) // Test using embedded strings t.Run("Specified variant", func(t *testing.T) { ts, err := InitTemplateStringsFS(embeddedTestData, "testdata", ".yaml", "en", "de") require.NoError(t, err) assert.Equal(t, "Simple", ts.GetTemplateStringVariant("en", "simple")) assert.Equal(t, "Einfach", ts.GetTemplateStringVariant("de", "simple")) }) }