Skip to content
Snippets Groups Projects
Commit 9f3f4ed9 authored by James Page's avatar James Page
Browse files

Add HumanReadableToKey function

parent f5320f2e
Branches
Tags v1.148.0
No related merge requests found
......@@ -191,6 +191,13 @@ func KeyToHumanReadable(s string) string {
return SentenceCase(string(s))
}
func HumanReadableToKey(s string, separator string) string {
re := regexp.MustCompile(" +")
s = re.ReplaceAllString(s, separator)
s = strings.ToLower(s)
return s
}
func SentenceCase(str string) string {
if len(str) > 0 {
str = strings.ToLower(str)
......
......@@ -2,35 +2,46 @@ package string_utils
import "testing"
func TestIsValidEmail(t *testing.T) {
func TestHumanReadableToKey(t *testing.T) {
type args struct {
email string
humanReadableString string
separator string
}
tests := []struct {
name string
args args
want bool
want string
}{
{
name: "valid",
args: args{email: "johan@bob.co.za"},
want: true,
name: "leading capitals with underscore",
args: args{"Test Courier Name", "_"},
want: "test_courier_name",
},
{
name: "invalid",
args: args{email: "johan@bob.co.za"},
want: false,
name: "leading capitals with hyphen",
args: args{"Test Courier Name", "-"},
want: "test-courier-name",
},
{
name: "invalid",
args: args{email: "johan@bob.co.za"},
want: false,
name: "all lowercase with underscore",
args: args{"test courier name", "_"},
want: "test_courier_name",
},
{
name: "random capitalisation with hyphen",
args: args{"tEsT CoURIer NAME", "-"},
want: "test-courier-name",
},
{
name: "weird characters",
args: args{"Tes*t $#@! (Couriers)", "_"},
want: "tes*t_$#@!_(couriers)",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := IsValidEmail(tt.args.email); got != tt.want {
t.Errorf("IsValidEmail() = %v, want %v", got, tt.want)
if got := HumanReadableToKey(tt.args.humanReadableString, tt.args.separator); got != tt.want {
t.Errorf("HumanReadableToKey() = %v, want %v", got, tt.want)
}
})
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment