Файли
rilaxik 0b716e8f25
ci / test (push) Successful in 1m29s
ci / test (pull_request) Successful in 1m3s
feat: roadmap polish
2026-11-08 03:52:49 +00:00

74 рядки
1.9 KiB
Go

package domain
import "testing"
func TestAllowed(t *testing.T) {
roles := []Role{RoleOwner, RoleEditor, RoleReader}
tests := []struct {
name string
action Action
want map[Role]bool
}{
{
name: "view list",
action: ActionViewList,
want: map[Role]bool{RoleOwner: true, RoleEditor: true, RoleReader: true},
},
{
name: "edit list meta",
action: ActionEditListMeta,
want: map[Role]bool{RoleOwner: true, RoleEditor: false, RoleReader: false},
},
{
name: "delete list",
action: ActionDeleteList,
want: map[Role]bool{RoleOwner: true, RoleEditor: false, RoleReader: false},
},
{
name: "manage shares",
action: ActionManageShares,
want: map[Role]bool{RoleOwner: true, RoleEditor: false, RoleReader: false},
},
{
name: "view items",
action: ActionViewItems,
want: map[Role]bool{RoleOwner: true, RoleEditor: true, RoleReader: true},
},
{
name: "add item",
action: ActionAddItem,
want: map[Role]bool{RoleOwner: true, RoleEditor: true, RoleReader: false},
},
{
name: "edit item",
action: ActionEditItem,
want: map[Role]bool{RoleOwner: true, RoleEditor: true, RoleReader: false},
},
{
name: "delete item",
action: ActionDeleteItem,
want: map[Role]bool{RoleOwner: true, RoleEditor: true, RoleReader: false},
},
{
name: "change item state",
action: ActionChangeItemState,
want: map[Role]bool{RoleOwner: true, RoleEditor: true, RoleReader: false},
},
{
name: "reserve item",
action: ActionReserveItem,
want: map[Role]bool{RoleOwner: true, RoleEditor: true, RoleReader: false},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
for _, role := range roles {
if got := Allowed(role, tt.action); got != tt.want[role] {
t.Fatalf("Allowed(%s, %v) = %v, want %v", role, tt.action, got, tt.want[role])
}
}
})
}
}