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

Function TestUserSkillsCRUD

coderd/userskills_test.go:48–112  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

46}
47
48func TestUserSkillsCRUD(t *testing.T) {
49 t.Parallel()
50
51 adminClient := coderdtest.New(t, nil)
52 firstUser := coderdtest.CreateFirstUser(t, adminClient)
53 ownerClient, _ := coderdtest.CreateAnotherUser(t, adminClient, firstUser.OrganizationID)
54 owner := codersdk.NewExperimentalClient(ownerClient)
55 ctx := testutil.Context(t, testutil.WaitMedium)
56
57 emptyList, err := owner.UserSkills(ctx, codersdk.Me)
58 require.NoError(t, err)
59 assert.NotNil(t, emptyList)
60 assert.Empty(t, emptyList)
61
62 emptyRes, err := owner.Request(ctx, http.MethodGet, "/api/experimental/users/me/skills", nil)
63 require.NoError(t, err)
64 defer emptyRes.Body.Close()
65 require.Equal(t, http.StatusOK, emptyRes.StatusCode)
66 var rawEmptyList []map[string]json.RawMessage
67 require.NoError(t, json.NewDecoder(emptyRes.Body).Decode(&rawEmptyList))
68 assert.NotNil(t, rawEmptyList)
69 assert.Empty(t, rawEmptyList)
70
71 content := userSkillMarkdown("crud-skill", "Initial description", "Use this skill for CRUD tests.")
72 created, err := owner.CreateUserSkill(ctx, codersdk.Me, codersdk.CreateUserSkillRequest{Content: content})
73 require.NoError(t, err)
74 assert.NotZero(t, created.ID)
75 assert.Equal(t, "crud-skill", created.Name)
76 assert.Equal(t, "Initial description", created.Description)
77 assert.Equal(t, content, created.Content)
78 assert.NotZero(t, created.CreatedAt)
79 assert.NotZero(t, created.UpdatedAt)
80
81 list, err := owner.UserSkills(ctx, codersdk.Me)
82 require.NoError(t, err)
83 require.Len(t, list, 1)
84 assert.Equal(t, created.ID, list[0].ID)
85 assert.Equal(t, "crud-skill", list[0].Name)
86 assert.Equal(t, "Initial description", list[0].Description)
87
88 res, err := owner.Request(ctx, http.MethodGet, "/api/experimental/users/me/skills", nil)
89 require.NoError(t, err)
90 defer res.Body.Close()
91 require.Equal(t, http.StatusOK, res.StatusCode)
92 var rawList []map[string]json.RawMessage
93 require.NoError(t, json.NewDecoder(res.Body).Decode(&rawList))
94 require.Len(t, rawList, 1)
95 assert.NotContains(t, rawList[0], "content")
96
97 got, err := owner.UserSkillByName(ctx, codersdk.Me, "crud-skill")
98 require.NoError(t, err)
99 assert.Equal(t, created.ID, got.ID)
100 assert.Equal(t, content, got.Content)
101
102 updatedContent := userSkillMarkdown("crud-skill", "Updated description", "Updated body.")
103 updated, err := owner.UpdateUserSkill(ctx, codersdk.Me, "crud-skill", codersdk.UpdateUserSkillRequest{Content: updatedContent})
104 require.NoError(t, err)
105 assert.Equal(t, created.ID, updated.ID)

Callers

nothing calls this directly

Calls 15

UserSkillsMethod · 0.95
CreateUserSkillMethod · 0.95
UserSkillByNameMethod · 0.95
UpdateUserSkillMethod · 0.95
DeleteUserSkillMethod · 0.95
NewFunction · 0.92
CreateFirstUserFunction · 0.92
CreateAnotherUserFunction · 0.92
NewExperimentalClientFunction · 0.92
ContextFunction · 0.92
requireSDKErrorStatusFunction · 0.85
userSkillMarkdownFunction · 0.70

Tested by

no test coverage detected