-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathctxi18n_test.go
86 lines (68 loc) · 1.98 KB
/
ctxi18n_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package ctxi18n_test
import (
"context"
"testing"
"github.com/invopop/ctxi18n"
"github.com/invopop/ctxi18n/i18n"
"github.com/invopop/ctxi18n/internal/examples"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestDefaults(t *testing.T) {
assert.Equal(t, i18n.Code("en"), ctxi18n.DefaultLocale)
}
func TestLoad(t *testing.T) {
err := ctxi18n.Load(examples.Content)
assert.NoError(t, err)
l := ctxi18n.Get("en")
assert.NotNil(t, l)
assert.Equal(t, "en", l.Code().String())
}
func TestLoadWithDefault(t *testing.T) {
err := ctxi18n.LoadWithDefault(examples.Content, "en")
assert.NoError(t, err)
l := ctxi18n.Get("en")
assert.NotNil(t, l)
assert.Equal(t, "en", l.Code().String())
assert.Equal(t, "Special Label", l.T("special_label"))
l = ctxi18n.Get("es")
assert.NotNil(t, l)
assert.Equal(t, "es", l.Code().String())
assert.Equal(t, "Special Label", l.T("special_label"))
}
func TestGet(t *testing.T) {
err := ctxi18n.Load(examples.Content)
assert.NoError(t, err)
l := ctxi18n.Get("en")
assert.NotNil(t, l)
assert.Equal(t, "en", l.Code().String())
l = ctxi18n.Get("bad")
assert.Nil(t, l)
}
func TestMatch(t *testing.T) {
err := ctxi18n.Load(examples.Content)
require.NoError(t, err)
l := ctxi18n.Match("en-US,en;q=0.9,es;q=0.8")
assert.NotNil(t, l)
assert.Equal(t, "en", l.Code().String())
}
func TestWithLocale(t *testing.T) {
err := ctxi18n.Load(examples.Content)
require.NoError(t, err)
ctx := context.Background()
ctx, err = ctxi18n.WithLocale(ctx, "en-US,en;q=0.9,es;q=0.8")
require.NoError(t, err)
l := ctxi18n.Locale(ctx)
assert.NotNil(t, l)
assert.Equal(t, "en", l.Code().String())
// Use the default locale if not set
ctx, err = ctxi18n.WithLocale(ctx, "inv")
assert.NoError(t, err)
l = ctxi18n.Locale(ctx)
assert.NotNil(t, l)
assert.Equal(t, "en", l.Code().String())
ctxi18n.DefaultLocale = "bad"
_, err = ctxi18n.WithLocale(ctx, "inv")
assert.ErrorIs(t, err, ctxi18n.ErrMissingLocale)
ctxi18n.DefaultLocale = "es"
}