view data fixes
This commit is contained in:
@@ -1,68 +1,59 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { DriverTeamViewModel } from './DriverTeamViewModel';
|
||||
import type { GetDriverTeamOutputDTO } from '@/lib/types/generated/GetDriverTeamOutputDTO';
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { DriverTeamViewModel } from "./DriverTeamViewModel";
|
||||
import type { TeamDetailData } from "../view-data/TeamDetailViewData";
|
||||
|
||||
const createTeamDto = (overrides: Partial<GetDriverTeamOutputDTO> = {}): GetDriverTeamOutputDTO => ({
|
||||
team: {
|
||||
id: 'team-1',
|
||||
name: 'Test Team',
|
||||
tag: 'TT',
|
||||
description: 'Test team description',
|
||||
ownerId: 'owner-1',
|
||||
leagues: ['league-1'],
|
||||
createdAt: '2024-01-01T00:00:00Z',
|
||||
specialization: 'mixed',
|
||||
region: 'EU',
|
||||
languages: ['en'],
|
||||
},
|
||||
const createTeamViewData = (overrides: Partial<TeamDetailData> = {}): 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',
|
||||
role: "manager",
|
||||
joinedAt: "2024-01-01T00:00:00Z",
|
||||
isActive: true,
|
||||
},
|
||||
isOwner: false,
|
||||
canManage: true,
|
||||
...overrides,
|
||||
});
|
||||
|
||||
describe('DriverTeamViewModel', () => {
|
||||
it('maps team and membership fields from DTO', () => {
|
||||
const dto = createTeamDto();
|
||||
const viewModel = new DriverTeamViewModel(dto);
|
||||
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.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 dto = createTeamDto({
|
||||
it("derives displayRole with capitalized first letter", () => {
|
||||
const viewData = createTeamViewData({
|
||||
membership: {
|
||||
role: 'owner',
|
||||
joinedAt: '2024-01-01T00:00:00Z',
|
||||
role: "owner",
|
||||
joinedAt: "2024-01-01T00:00:00Z",
|
||||
isActive: true,
|
||||
},
|
||||
});
|
||||
|
||||
const viewModel = new DriverTeamViewModel(dto);
|
||||
const viewModel = new DriverTeamViewModel(viewData);
|
||||
|
||||
expect(viewModel.displayRole).toBe('Owner');
|
||||
expect(viewModel.displayRole).toBe("Owner");
|
||||
expect(viewModel.isOwner).toBe(true);
|
||||
});
|
||||
|
||||
it('handles lower-case role strings consistently', () => {
|
||||
const dto = createTeamDto({
|
||||
membership: {
|
||||
role: 'member',
|
||||
joinedAt: '2024-01-01T00:00:00Z',
|
||||
isActive: true,
|
||||
},
|
||||
it("defaults role when membership is missing", () => {
|
||||
const viewData = createTeamViewData({
|
||||
membership: null,
|
||||
});
|
||||
|
||||
const viewModel = new DriverTeamViewModel(dto);
|
||||
const viewModel = new DriverTeamViewModel(viewData);
|
||||
|
||||
expect(viewModel.displayRole).toBe('Member');
|
||||
expect(viewModel.role).toBe("member");
|
||||
expect(viewModel.displayRole).toBe("Member");
|
||||
expect(viewModel.isOwner).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user