diff --git a/pkg/members/members.go b/pkg/members/members.go index 4e153058c5004bdb13dd5a0b548abdf311ac49c8..77d5b1c4ff46e0c664e3c1dca6b9313e5e1aa452 100644 --- a/pkg/members/members.go +++ b/pkg/members/members.go @@ -2,6 +2,7 @@ package members import ( "fmt" + "strconv" ) type Member struct { @@ -24,7 +25,12 @@ func (r Role) IsPrivileged() bool { } func (r Role) Format(s fmt.State, verb rune) { - s.Write([]byte(r.String())) + switch verb { + case 's': + s.Write([]byte(r.String())) + default: + s.Write([]byte(strconv.Itoa(int(r)))) + } } func (r Role) String() string { diff --git a/pkg/members/members_test.go b/pkg/members/members_test.go new file mode 100644 index 0000000000000000000000000000000000000000..4343b75e17b4d91743f1faf3e69bdce81851e03c --- /dev/null +++ b/pkg/members/members_test.go @@ -0,0 +1,65 @@ +package members + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestFormat(t *testing.T) { + tests := []struct { + name string + template string + want string + role Role + }{ + { + name: "NotMember with %s", + template: "%s", + role: NotMember, + want: "not member", + }, + { + name: "RoleMember with %s", + role: RoleMember, + template: "%s", + want: "member", + }, + { + name: "RoleOwner with %s", + role: RoleOwner, + template: "%s", + want: "owner", + }, + { + name: "RoleAdmin with %s", + role: RoleAdmin, + template: "%s", + want: "admin", + }, + { + name: "Existent role with %d", + role: RoleAdmin, + template: "%d", + want: "3", + }, + { + name: "Non-existent role with %s", + role: 4, + template: "%s", + want: "4", + }, + { + name: "Non-existent role with %d", + role: 4, + template: "%d", + want: "4", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + require.Equal(t, tt.want, fmt.Sprintf(tt.template, tt.role)) + }) + } +}