(t *testing.T)
| 46 | } |
| 47 | |
| 48 | func 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) |
nothing calls this directly
no test coverage detected