70 lines
1.4 KiB
Go
70 lines
1.4 KiB
Go
|
|
package i18n
|
||
|
|
|
||
|
|
import (
|
||
|
|
"encoding/json"
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/Snider/Core/pkg/core"
|
||
|
|
"github.com/nicksnyder/go-i18n/v2/i18n"
|
||
|
|
"github.com/stretchr/testify/assert"
|
||
|
|
"github.com/stretchr/testify/require"
|
||
|
|
"golang.org/x/text/language"
|
||
|
|
)
|
||
|
|
|
||
|
|
func newTestBundle() *i18n.Bundle {
|
||
|
|
bundle := i18n.NewBundle(language.English)
|
||
|
|
bundle.RegisterUnmarshalFunc("json", json.Unmarshal)
|
||
|
|
bundle.MustParseMessageFileBytes([]byte(`{
|
||
|
|
"hello": "Hello"
|
||
|
|
}`), "en.json")
|
||
|
|
bundle.MustParseMessageFileBytes([]byte(`{
|
||
|
|
"hello": "Bonjour"
|
||
|
|
}`), "fr.json")
|
||
|
|
return bundle
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestNew(t *testing.T) {
|
||
|
|
s, err := New()
|
||
|
|
assert.NoError(t, err)
|
||
|
|
assert.NotNil(t, s)
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestRegister(t *testing.T) {
|
||
|
|
c, err := core.New()
|
||
|
|
require.NoError(t, err)
|
||
|
|
s, err := Register(c)
|
||
|
|
assert.NoError(t, err)
|
||
|
|
assert.NotNil(t, s)
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestSetLanguage(t *testing.T) {
|
||
|
|
s, err := New()
|
||
|
|
require.NoError(t, err)
|
||
|
|
|
||
|
|
s.SetBundle(newTestBundle())
|
||
|
|
|
||
|
|
err = s.SetLanguage("en")
|
||
|
|
assert.NoError(t, err)
|
||
|
|
|
||
|
|
err = s.SetLanguage("fr")
|
||
|
|
assert.NoError(t, err)
|
||
|
|
|
||
|
|
err = s.SetLanguage("invalid")
|
||
|
|
assert.Error(t, err)
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestTranslate(t *testing.T) {
|
||
|
|
s, err := New()
|
||
|
|
require.NoError(t, err)
|
||
|
|
|
||
|
|
s.SetBundle(newTestBundle())
|
||
|
|
|
||
|
|
err = s.SetLanguage("en")
|
||
|
|
require.NoError(t, err)
|
||
|
|
assert.Equal(t, "Hello", s.Translate("hello"))
|
||
|
|
|
||
|
|
err = s.SetLanguage("fr")
|
||
|
|
require.NoError(t, err)
|
||
|
|
assert.Equal(t, "Bonjour", s.Translate("hello"))
|
||
|
|
}
|