feat: user service
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
package shared
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestParseLanguageTag(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
want string
|
||||
wantErrCode string
|
||||
wantErr string
|
||||
}{
|
||||
{
|
||||
name: "canonicalizes valid tag",
|
||||
input: " en-us ",
|
||||
want: "en-US",
|
||||
},
|
||||
{
|
||||
name: "rejects invalid tag",
|
||||
input: "en-@",
|
||||
wantErrCode: ErrorCodeInvalidRequest,
|
||||
wantErr: "language tag must be a valid BCP 47 language tag",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
got, err := ParseLanguageTag(tt.input)
|
||||
if tt.wantErr != "" {
|
||||
require.Error(t, err)
|
||||
require.Empty(t, got)
|
||||
require.Equal(t, tt.wantErrCode, CodeOf(err))
|
||||
require.Equal(t, tt.wantErr, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tt.want, got.String())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseTimeZoneName(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
input string
|
||||
want string
|
||||
wantErrCode string
|
||||
wantErr string
|
||||
}{
|
||||
{
|
||||
name: "accepts valid zone",
|
||||
input: " Europe/Kaliningrad ",
|
||||
want: "Europe/Kaliningrad",
|
||||
},
|
||||
{
|
||||
name: "rejects invalid zone",
|
||||
input: "Mars/Olympus",
|
||||
wantErrCode: ErrorCodeInvalidRequest,
|
||||
wantErr: "time zone name must be a valid IANA time zone name",
|
||||
},
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
tt := tt
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
got, err := ParseTimeZoneName(tt.input)
|
||||
if tt.wantErr != "" {
|
||||
require.Error(t, err)
|
||||
require.Empty(t, got)
|
||||
require.Equal(t, tt.wantErrCode, CodeOf(err))
|
||||
require.Equal(t, tt.wantErr, err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, tt.want, got.String())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseRegistrationPreferredLanguage(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
got, err := ParseRegistrationPreferredLanguage(" en-us ")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "en-US", got.String())
|
||||
|
||||
_, err = ParseRegistrationPreferredLanguage("bad@@tag")
|
||||
require.Error(t, err)
|
||||
require.Equal(t, ErrorCodeInvalidRequest, CodeOf(err))
|
||||
require.Equal(t, "registration_context.preferred_language must be a valid BCP 47 language tag", err.Error())
|
||||
}
|
||||
|
||||
func TestParseRegistrationTimeZoneName(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
got, err := ParseRegistrationTimeZoneName(" Europe/Kaliningrad ")
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, "Europe/Kaliningrad", got.String())
|
||||
|
||||
_, err = ParseRegistrationTimeZoneName("Mars/Olympus")
|
||||
require.Error(t, err)
|
||||
require.Equal(t, ErrorCodeInvalidRequest, CodeOf(err))
|
||||
require.Equal(t, "registration_context.time_zone must be a valid IANA time zone name", err.Error())
|
||||
}
|
||||
Reference in New Issue
Block a user