test: 前端单测覆盖率Phase2,行覆盖率22%→39.3%
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
AI Code Review / AI Code Review (pull_request) Successful in 4m22s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 1420h37m28s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 1420h37m32s
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Failing after 1420h38m18s
CI Build & Deploy Pipeline / Deploy Production (pull_request) Failing after 1420h38m19s
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Failing after 1420h38m19s
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Failing after 1420h38m20s
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Failing after 1420h38m20s
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1420h38m21s
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Failing after 1420h38m22s
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Failing after 1420h38m22s
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1421h9m35s
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Failing after 1421h10m24s
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Failing after 1421h10m25s
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Failing after 1421h10m26s
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
AI Code Review / AI Code Review (pull_request) Successful in 4m22s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 1420h37m28s
CI/CD Pipeline / Validate Code Quality And Tests (pull_request) Failing after 1420h37m32s
CI Build & Deploy Pipeline / Production Browser E2E (pull_request) Failing after 1420h38m18s
CI Build & Deploy Pipeline / Deploy Production (pull_request) Failing after 1420h38m19s
CI Build & Deploy Pipeline / Staging E2E Tests (pull_request) Failing after 1420h38m19s
CI Build & Deploy Pipeline / Build Production Worker Image (pull_request) Failing after 1420h38m20s
CI Build & Deploy Pipeline / Build Production API Image (pull_request) Failing after 1420h38m20s
CI Build & Deploy Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1420h38m21s
CI Build & Deploy Pipeline / Build Staging Web Image (pull_request) Failing after 1420h38m22s
CI Build & Deploy Pipeline / Build Staging API Image (pull_request) Failing after 1420h38m22s
CI/CD Pipeline / Check if frontend-only change (pull_request) Has been skipped
CI/CD Pipeline / Frontend Unit Tests (pull_request) Has been skipped
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1421h9m35s
CI Build & Deploy Pipeline / Staging API Integration Tests (pull_request) Failing after 1421h10m24s
CI Build & Deploy Pipeline / Build Production Web Image (pull_request) Failing after 1421h10m25s
CI Build & Deploy Pipeline / Build Staging Worker Image (pull_request) Failing after 1421h10m26s
- 新增5个Layout组件测试(AppLayout/Header/MainLayout/PageHead/Sidebar) - 新增AssetSelector业务组件测试 - 新增~18个页面smoke test(查重系列/任务系列/资源库/音色/订阅/产品等) - 新增useUndoRedo hook测试 + useAuth测试增强 - 新增config/navigation配置测试 + auth-normalize纯函数测试 - 71个测试文件,420个用例全通过,行覆盖率39.3%
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
/**
|
||||
* 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()
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user