MCPcopy Index your code
hub / github.com/coder/coder / TestStartWorkspace

Function TestStartWorkspace

coderd/x/chatd/chattool/startworkspace_test.go:32–944  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

30)
31
32func TestStartWorkspace(t *testing.T) {
33 t.Parallel()
34
35 t.Run("NoWorkspace", func(t *testing.T) {
36 t.Parallel()
37 ctx := testutil.Context(t, testutil.WaitLong)
38 db, _ := dbtestutil.NewDB(t)
39
40 user := dbgen.User(t, db, database.User{})
41 modelCfg := seedModelConfig(t, db)
42 org := dbgen.Organization(t, db, database.Organization{})
43 _ = dbgen.OrganizationMember(t, db, database.OrganizationMember{
44 UserID: user.ID,
45 OrganizationID: org.ID,
46 })
47
48 chat := dbgen.Chat(t, db, database.Chat{
49 OrganizationID: org.ID,
50 OwnerID: user.ID,
51 LastModelConfigID: modelCfg.ID,
52 Title: "test-no-workspace",
53 })
54
55 tool := chattool.StartWorkspace(db, chat.ID, chattool.StartWorkspaceOptions{
56 StartFn: func(_ context.Context, _ uuid.UUID, _ uuid.UUID, _ codersdk.CreateWorkspaceBuildRequest) (codersdk.WorkspaceBuild, error) {
57 t.Fatal("StartFn should not be called")
58 return codersdk.WorkspaceBuild{}, nil
59 },
60 WorkspaceMu: &sync.Mutex{},
61 })
62
63 resp, err := tool.Run(ctx, fantasy.ToolCall{ID: "call-1", Name: "start_workspace", Input: "{}"})
64 require.NoError(t, err)
65 require.Contains(t, resp.Content, "no workspace")
66 })
67
68 t.Run("AlreadyRunning", func(t *testing.T) {
69 t.Parallel()
70 ctx := testutil.Context(t, testutil.WaitLong)
71 db, _ := dbtestutil.NewDB(t)
72
73 user := dbgen.User(t, db, database.User{})
74 modelCfg := seedModelConfig(t, db)
75 org := dbgen.Organization(t, db, database.Organization{})
76 _ = dbgen.OrganizationMember(t, db, database.OrganizationMember{
77 UserID: user.ID,
78 OrganizationID: org.ID,
79 })
80 wsResp := dbfake.WorkspaceBuild(t, db, database.WorkspaceTable{
81 OwnerID: user.ID,
82 OrganizationID: org.ID,
83 }).Seed(database.WorkspaceBuild{
84 Transition: database.WorkspaceTransitionStart,
85 }).Do()
86 ws := wsResp.Workspace
87
88 chat := dbgen.Chat(t, db, database.Chat{
89 OrganizationID: org.ID,

Callers

nothing calls this directly

Calls 15

ContextFunction · 0.92
NewDBFunction · 0.92
UserFunction · 0.92
OrganizationFunction · 0.92
OrganizationMemberFunction · 0.92
ChatFunction · 0.92
StartWorkspaceFunction · 0.92
WorkspaceBuildFunction · 0.92
NewResponseErrorFunction · 0.92
TryReceiveFunction · 0.92
OrganizationFunction · 0.92
NewFunction · 0.92

Tested by

no test coverage detected