Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 9196c38

Browse files
test: add happy path test
1 parent a27490b commit 9196c38

File tree

2 files changed

+120
-1
lines changed

2 files changed

+120
-1
lines changed

cli/taskcreate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func (r *RootCmd) taskCreate() *serpent.Command {
2626
)
2727

2828
return &serpent.Command{
29-
Use: "create [task]",
29+
Use: "create <template[@version]>",
3030
Short: "Create a task",
3131
Middleware: serpent.Chain(
3232
serpent.RequireRangeArgs(0, 1),

cli/taskcreate_test.go

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
package cli_test
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/coder/coder/v2/cli/clitest"
8+
"github.com/coder/coder/v2/coderd/coderdtest"
9+
"github.com/coder/coder/v2/codersdk"
10+
"github.com/coder/coder/v2/provisioner/echo"
11+
"github.com/coder/coder/v2/provisionersdk/proto"
12+
"github.com/coder/coder/v2/testutil"
13+
"github.com/google/uuid"
14+
"github.com/stretchr/testify/require"
15+
)
16+
17+
func TestTaskCreate(t *testing.T) {
18+
t.Parallel()
19+
20+
createAITemplate := func(t *testing.T, client *codersdk.Client, user codersdk.CreateFirstUserResponse) (codersdk.TemplateVersion, codersdk.Template) {
21+
t.Helper()
22+
23+
taskAppID := uuid.New()
24+
version := coderdtest.CreateTemplateVersion(t, client, user.OrganizationID, &echo.Responses{
25+
Parse: echo.ParseComplete,
26+
ProvisionPlan: []*proto.Response{
27+
{
28+
Type: &proto.Response_Plan{
29+
Plan: &proto.PlanComplete{
30+
Parameters: []*proto.RichParameter{{Name: codersdk.AITaskPromptParameterName, Type: "string"}},
31+
HasAiTasks: true,
32+
AiTasks: []*proto.AITask{},
33+
},
34+
},
35+
},
36+
},
37+
ProvisionApply: []*proto.Response{
38+
{
39+
Type: &proto.Response_Apply{
40+
Apply: &proto.ApplyComplete{
41+
Resources: []*proto.Resource{{
42+
Name: "example",
43+
Type: "aws_instance",
44+
Agents: []*proto.Agent{{
45+
Id: uuid.NewString(),
46+
Name: "example",
47+
Apps: []*proto.App{
48+
{
49+
Id: taskAppID.String(),
50+
Slug: "task-sidebar",
51+
DisplayName: "Task Sidebar",
52+
},
53+
},
54+
}},
55+
}},
56+
Parameters: []*proto.RichParameter{{Name: codersdk.AITaskPromptParameterName, Type: "string"}},
57+
AiTasks: []*proto.AITask{{
58+
SidebarApp: &proto.AITaskSidebarApp{
59+
Id: taskAppID.String(),
60+
},
61+
}},
62+
},
63+
},
64+
},
65+
},
66+
})
67+
coderdtest.AwaitTemplateVersionJobCompleted(t, client, version.ID)
68+
template := coderdtest.CreateTemplate(t, client, user.OrganizationID, version.ID)
69+
70+
return version, template
71+
}
72+
73+
t.Run("CreateWithTemplateNameAndVersion", func(t *testing.T) {
74+
t.Parallel()
75+
76+
var (
77+
ctx = testutil.Context(t, testutil.WaitShort)
78+
79+
prompt = "Task prompt"
80+
)
81+
82+
client := coderdtest.New(t, &coderdtest.Options{IncludeProvisionerDaemon: true})
83+
owner := coderdtest.CreateFirstUser(t, client)
84+
templateVersion, template := createAITemplate(t, client, owner)
85+
86+
member, _ := coderdtest.CreateAnotherUser(t, client, owner.OrganizationID)
87+
expMember := codersdk.NewExperimentalClient(member)
88+
89+
tasks, err := expMember.Tasks(ctx, nil)
90+
require.NoError(t, err)
91+
require.Empty(t, tasks)
92+
93+
args := []string{
94+
"exp",
95+
"task",
96+
"create",
97+
fmt.Sprintf("%s@%s", template.Name, templateVersion.Name),
98+
"--input", prompt,
99+
}
100+
101+
inv, root := clitest.New(t, args...)
102+
clitest.SetupConfig(t, member, root)
103+
104+
err = inv.Run()
105+
require.NoError(t, err)
106+
107+
workspaces, err := member.Workspaces(ctx, codersdk.WorkspaceFilter{FilterQuery: "has-ai-task:true"})
108+
require.NoError(t, err)
109+
require.Len(t, workspaces.Workspaces, 1)
110+
111+
coderdtest.AwaitWorkspaceBuildJobCompleted(t, member, workspaces.Workspaces[0].LatestBuild.ID)
112+
113+
tasks, err = expMember.Tasks(ctx, nil)
114+
require.NoError(t, err)
115+
require.Len(t, tasks, 1)
116+
117+
require.Equal(t, prompt, tasks[0].InitialPrompt)
118+
})
119+
}

0 commit comments

Comments
 (0)