package templates import ( "path/filepath" "runtime" "testing" "galaxy/mail/internal/domain/common" "github.com/stretchr/testify/require" ) var expectedNotificationTemplateIDs = []common.TemplateID{ "geo.review_recommended", "game.turn.ready", "game.finished", "game.generation_failed", "lobby.runtime_paused_after_start", "lobby.application.submitted", "lobby.membership.approved", "lobby.membership.rejected", "lobby.invite.created", "lobby.invite.redeemed", "lobby.invite.expired", } func TestCheckedInTemplateCatalogIncludesNotificationEnglishAssets(t *testing.T) { t.Parallel() catalog, err := NewCatalog(checkedInTemplateRoot(t)) require.NoError(t, err) locale, err := common.ParseLocale("en") require.NoError(t, err) authTemplate, err := catalog.Lookup(common.TemplateID("auth.login_code"), locale) require.NoError(t, err) require.Equal(t, common.Locale("en"), authTemplate.ResolvedLocale()) require.False(t, authTemplate.LocaleFallbackUsed()) for _, templateID := range expectedNotificationTemplateIDs { resolved, err := catalog.Lookup(templateID, locale) require.NoErrorf(t, err, "lookup checked-in template %s", templateID) require.Equalf(t, common.Locale("en"), resolved.ResolvedLocale(), "template %s must resolve to en", templateID) require.Falsef(t, resolved.LocaleFallbackUsed(), "template %s must not use fallback for en", templateID) } } func checkedInTemplateRoot(t *testing.T) string { t.Helper() _, thisFile, _, ok := runtime.Caller(0) if !ok { require.FailNow(t, "runtime.Caller failed") } return filepath.Clean(filepath.Join(filepath.Dir(thisFile), "..", "..", "..", "templates")) }