Initial commit: site monorepo with API, web, and infra.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { changePassword, getProfile, updateProfile, uploadAvatar } from "./profileApi";
|
||||
|
||||
vi.mock("@shared/api/client", () => ({
|
||||
apiClient: {
|
||||
get: vi.fn(async () => ({
|
||||
data: {
|
||||
user: { email: "u@example.com" },
|
||||
profile: { display_name: "User", avatar_url: null }
|
||||
}
|
||||
})),
|
||||
patch: vi.fn(async () => ({ data: { profile: { display_name: "User" } } })),
|
||||
post: vi.fn(async () => ({ data: { profile: { avatar_url: "/api/v1/media/files/x" } } }))
|
||||
}
|
||||
}));
|
||||
|
||||
describe("profileApi", () => {
|
||||
it("gets profile", async () => {
|
||||
const data = await getProfile();
|
||||
expect(data.user.email).toBe("u@example.com");
|
||||
});
|
||||
|
||||
it("updates profile", async () => {
|
||||
const data = await updateProfile({ display_name: "User" });
|
||||
expect(data.profile.display_name).toBe("User");
|
||||
});
|
||||
|
||||
it("changes password", async () => {
|
||||
await expect(
|
||||
changePassword({ current_password: "Valid123", new_password: "NewValid1" })
|
||||
).resolves.toBeUndefined();
|
||||
});
|
||||
|
||||
it("uploads avatar", async () => {
|
||||
const file = new File(["avatar"], "avatar.png", { type: "image/png" });
|
||||
const data = await uploadAvatar(file);
|
||||
expect(data.profile.avatar_url).toBe("/api/v1/media/files/x");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user