Files
apskel-pos-backend/internal/util/phone_test.go
T

50 lines
1.2 KiB
Go
Raw Normal View History

package util
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestNormalizePhoneNumber(t *testing.T) {
for _, raw := range []string{
"6281234561234",
"+6281234561234",
"081234561234",
"81234561234",
"0812-3456-1234",
"+62 812 3456 1234",
"(+62) 812.3456.1234",
"+62081234561234",
" 081234561234 ",
} {
got, err := NormalizePhoneNumber(raw)
require.NoError(t, err, raw)
assert.Equal(t, "6281234561234", got, raw)
}
shortest, err := NormalizePhoneNumber("0811234567")
require.NoError(t, err)
assert.Equal(t, "62811234567", shortest)
longest, err := NormalizePhoneNumber("0812345678901")
require.NoError(t, err)
assert.Equal(t, "62812345678901", longest)
_, err = NormalizePhoneNumber("08123456789012")
assert.ErrorIs(t, err, ErrInvalidPhoneNumber, "too long")
for _, raw := range []string{
"",
"0",
"021-1234567", // a landline, cannot get the WhatsApp OTP
"+6521234567", // not Indonesian
"+1 415 555 0100", // not Indonesian
"62812", // too short
"0812abc61234",
"0812/3456/1234",
} {
_, err := NormalizePhoneNumber(raw)
assert.ErrorIs(t, err, ErrInvalidPhoneNumber, raw)
}
}