import { describe, it, expect } from "vitest"; import { DriverTeamViewModel } from "./DriverTeamViewModel"; import type { TeamDetailData } from "../view-data/TeamDetailViewData"; const createTeamViewData = (overrides: Partial = {}): TeamDetailData => ({ id: "team-1", name: "Test Team", tag: "TT", ownerId: "owner-1", leagues: ["league-1"], canManage: true, membership: { role: "manager", joinedAt: "2024-01-01T00:00:00Z", isActive: true, }, ...overrides, }); describe("DriverTeamViewModel", () => { it("exposes team fields from ViewData", () => { const viewData = createTeamViewData(); const viewModel = new DriverTeamViewModel(viewData); expect(viewModel.teamId).toBe("team-1"); expect(viewModel.teamName).toBe("Test Team"); expect(viewModel.tag).toBe("TT"); expect(viewModel.role).toBe("manager"); expect(viewModel.isOwner).toBe(false); expect(viewModel.canManage).toBe(true); }); it("derives displayRole with capitalized first letter", () => { const viewData = createTeamViewData({ membership: { role: "owner", joinedAt: "2024-01-01T00:00:00Z", isActive: true, }, }); const viewModel = new DriverTeamViewModel(viewData); expect(viewModel.displayRole).toBe("Owner"); expect(viewModel.isOwner).toBe(true); }); it("defaults role when membership is missing", () => { const viewData = createTeamViewData({ membership: null, }); const viewModel = new DriverTeamViewModel(viewData); expect(viewModel.role).toBe("member"); expect(viewModel.displayRole).toBe("Member"); expect(viewModel.isOwner).toBe(false); }); });