From 68768291bc3ed9ceefc447e1984b3493a48ded69 Mon Sep 17 00:00:00 2001 From: Danis Kirasirov <kirasirov@perx.ru> Date: Fri, 12 Apr 2024 13:38:48 +0000 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B0=20`fa?= =?UTF-8?q?tal=20error:=20stack=20overflow`=20=D0=BF=D1=80=D0=B8=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=BF=D1=8B=D1=82=D0=BA=D0=B5=20=D0=BF=D1=80=D0=B8=D0=B2?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BE=D0=B1=D1=8A=D0=B5?= =?UTF-8?q?=D0=BA=D1=82=D0=B0=20Role=20=D0=BA=20=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/members/members.go | 8 ++++- pkg/members/members_test.go | 65 +++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 pkg/members/members_test.go diff --git a/pkg/members/members.go b/pkg/members/members.go index 4e153058..77d5b1c4 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 00000000..4343b75e --- /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)) + }) + } +} -- GitLab