mirror of
https://github.com/larksuite/cli.git
synced 2026-07-04 06:29:52 +08:00
80 lines
2.7 KiB
Go
80 lines
2.7 KiB
Go
// Copyright (c) 2026 Lark Technologies Pte. Ltd.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package task
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/larksuite/cli/shortcuts/common"
|
|
"github.com/smartystreets/goconvey/convey"
|
|
)
|
|
|
|
func TestBuildMembersBody(t *testing.T) {
|
|
convey.Convey("Build with ids and token", t, func() {
|
|
body := buildMembersBody("u1, u2 , ", "assignee", "token1")
|
|
members := body["members"].([]map[string]interface{})
|
|
convey.So(len(members), convey.ShouldEqual, 2)
|
|
convey.So(body["client_token"], convey.ShouldEqual, "token1")
|
|
convey.So(members[0]["role"], convey.ShouldEqual, "assignee")
|
|
convey.So(members[0]["type"], convey.ShouldEqual, "user")
|
|
})
|
|
|
|
convey.Convey("Build infers app assignee members from cli prefix", t, func() {
|
|
body := buildMembersBody("cli_bot_1", "assignee", "")
|
|
members := body["members"].([]map[string]interface{})
|
|
convey.So(len(members), convey.ShouldEqual, 1)
|
|
convey.So(members[0]["id"], convey.ShouldEqual, "cli_bot_1")
|
|
convey.So(members[0]["role"], convey.ShouldEqual, "assignee")
|
|
convey.So(members[0]["type"], convey.ShouldEqual, "app")
|
|
})
|
|
|
|
convey.Convey("Build infers mixed member types in one list", t, func() {
|
|
body := buildMembersBody("ou_user_1, cli_bot_1", "assignee", "")
|
|
members := body["members"].([]map[string]interface{})
|
|
convey.So(len(members), convey.ShouldEqual, 2)
|
|
convey.So(members[0]["type"], convey.ShouldEqual, "user")
|
|
convey.So(members[1]["type"], convey.ShouldEqual, "app")
|
|
})
|
|
}
|
|
|
|
func TestBuildTaskCreateBodySupportsAssigneeAndFollower(t *testing.T) {
|
|
cmd := &cobra.Command{Use: "test"}
|
|
cmd.Flags().String("summary", "", "")
|
|
cmd.Flags().String("description", "", "")
|
|
cmd.Flags().String("assignee", "", "")
|
|
cmd.Flags().String("follower", "", "")
|
|
cmd.Flags().String("due", "", "")
|
|
cmd.Flags().String("tasklist-id", "", "")
|
|
cmd.Flags().String("idempotency-key", "", "")
|
|
cmd.Flags().String("data", "", "")
|
|
_ = cmd.Flags().Set("summary", "bot task")
|
|
_ = cmd.Flags().Set("assignee", "cli_bot_xxx")
|
|
_ = cmd.Flags().Set("follower", "ou_follower_xxx")
|
|
|
|
runtime := &common.RuntimeContext{Cmd: cmd}
|
|
body, err := buildTaskCreateBody(runtime)
|
|
if err != nil {
|
|
t.Fatalf("buildTaskCreateBody() error = %v", err)
|
|
}
|
|
|
|
members := body["members"].([]map[string]interface{})
|
|
if len(members) != 2 {
|
|
t.Fatalf("members len = %d, want 2", len(members))
|
|
}
|
|
if got := members[0]["type"]; got != "app" {
|
|
t.Fatalf("member[0] type = %v, want app", got)
|
|
}
|
|
if got := members[0]["role"]; got != "assignee" {
|
|
t.Fatalf("member[0] role = %v, want assignee", got)
|
|
}
|
|
if got := members[1]["type"]; got != "user" {
|
|
t.Fatalf("member[1] type = %v, want user", got)
|
|
}
|
|
if got := members[1]["role"]; got != "follower" {
|
|
t.Fatalf("member[1] role = %v, want follower", got)
|
|
}
|
|
}
|