40 lines
1.2 KiB
TypeScript
40 lines
1.2 KiB
TypeScript
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");
|
|
});
|
|
});
|