c70403f4c3
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Has been skipped
CI Build & Deploy Pipeline / Deploy Production (pull_request) Has been skipped
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Has been skipped
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 47s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Integration Tests (pull_request) Has been skipped
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m11s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 1m15s
Auto Approve CI PRs / Auto Approve on CI Green (pull_request) Successful in 1m18s
Auto Merge CI PRs / Auto Merge on CI Green + Approved (pull_request) Successful in 1m21s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m11s
AI Code Review / AI Code Review (pull_request) Successful in 4m22s
- 新增5个Layout组件测试(AppLayout/Header/MainLayout/PageHead/Sidebar) - 新增AssetSelector业务组件测试 - 新增~18个页面smoke test(查重系列/任务系列/资源库/音色/订阅/产品等) - 新增useUndoRedo hook测试 + useAuth测试增强 - 新增config/navigation配置测试 + auth-normalize纯函数测试 - 71个测试文件,420个用例全通过,行覆盖率39.3%
120 lines
3.0 KiB
TypeScript
120 lines
3.0 KiB
TypeScript
/**
|
|
* auth API 纯函数测试
|
|
* - normalizeUser
|
|
*/
|
|
import { describe, it, expect } from "vitest"
|
|
import { normalizeUser } from "@/api/auth"
|
|
|
|
describe("normalizeUser", () => {
|
|
it("应该正确映射标准用户数据", () => {
|
|
const input = {
|
|
id: "123",
|
|
user_id: "123",
|
|
email: "test@example.com",
|
|
username: "testuser",
|
|
display_name: "Test User",
|
|
is_email_verified: true,
|
|
email_verified: true,
|
|
created_at: "2024-01-01T00:00:00Z",
|
|
}
|
|
|
|
const result = normalizeUser(input)
|
|
|
|
expect(result.id).toBe("123")
|
|
expect(result.user_id).toBe("123")
|
|
expect(result.email).toBe("test@example.com")
|
|
expect(result.username).toBe("testuser")
|
|
expect(result.display_name).toBe("Test User")
|
|
expect(result.is_email_verified).toBe(true)
|
|
expect(result.email_verified).toBe(true)
|
|
expect(result.created_at).toBe("2024-01-01T00:00:00Z")
|
|
})
|
|
|
|
it("id 优先于 user_id", () => {
|
|
const input = {
|
|
id: "id-from-id",
|
|
user_id: "id-from-user-id",
|
|
email: "a@b.com",
|
|
username: "user",
|
|
}
|
|
|
|
const result = normalizeUser(input)
|
|
expect(result.id).toBe("id-from-id")
|
|
expect(result.user_id).toBe("id-from-id")
|
|
})
|
|
|
|
it("没有 id 时使用 user_id", () => {
|
|
const input = {
|
|
user_id: "fallback-user-id",
|
|
email: "a@b.com",
|
|
username: "user",
|
|
}
|
|
|
|
const result = normalizeUser(input as any)
|
|
expect(result.id).toBe("fallback-user-id")
|
|
expect(result.user_id).toBe("fallback-user-id")
|
|
})
|
|
|
|
it("id 和 user_id 都没有时返回空字符串", () => {
|
|
const input = {
|
|
email: "a@b.com",
|
|
username: "user",
|
|
}
|
|
|
|
const result = normalizeUser(input as any)
|
|
expect(result.id).toBe("")
|
|
expect(result.user_id).toBe("")
|
|
})
|
|
|
|
it("is_email_verified 优先于 email_verified", () => {
|
|
const input = {
|
|
id: "1",
|
|
email: "a@b.com",
|
|
username: "user",
|
|
is_email_verified: true,
|
|
email_verified: false,
|
|
}
|
|
|
|
const result = normalizeUser(input)
|
|
expect(result.is_email_verified).toBe(true)
|
|
expect(result.email_verified).toBe(true)
|
|
})
|
|
|
|
it("没有 is_email_verified 时使用 email_verified", () => {
|
|
const input = {
|
|
id: "1",
|
|
email: "a@b.com",
|
|
username: "user",
|
|
email_verified: true,
|
|
}
|
|
|
|
const result = normalizeUser(input as any)
|
|
expect(result.is_email_verified).toBe(true)
|
|
expect(result.email_verified).toBe(true)
|
|
})
|
|
|
|
it("两个都没有时默认为 false", () => {
|
|
const input = {
|
|
id: "1",
|
|
email: "a@b.com",
|
|
username: "user",
|
|
}
|
|
|
|
const result = normalizeUser(input as any)
|
|
expect(result.is_email_verified).toBe(false)
|
|
expect(result.email_verified).toBe(false)
|
|
})
|
|
|
|
it("缺失可选字段时返回 undefined", () => {
|
|
const input = {
|
|
id: "1",
|
|
email: "a@b.com",
|
|
username: "user",
|
|
}
|
|
|
|
const result = normalizeUser(input as any)
|
|
expect(result.display_name).toBeUndefined()
|
|
expect(result.created_at).toBeUndefined()
|
|
})
|
|
})
|