feat: notification service

This commit is contained in:
Ilia Denisov
2026-04-22 08:49:45 +02:00
committed by GitHub
parent 5b7593e6f6
commit 32dc29359a
135 changed files with 21828 additions and 130 deletions
@@ -0,0 +1,58 @@
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"))
}