view data fixes
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import type { TeamMemberDTO } from '@/lib/types/generated/GetTeamMembersOutputDTO';
|
||||
import type { TeamMemberDTO } from '../types/generated/TeamMemberDTO';
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { TeamMemberViewModel } from './TeamMemberViewModel';
|
||||
|
||||
@@ -16,7 +16,11 @@ describe('TeamMemberViewModel', () => {
|
||||
it('maps fields from DTO', () => {
|
||||
const dto = createTeamMemberDto({ driverId: 'driver-123', driverName: 'Driver 123', role: 'owner' });
|
||||
|
||||
const vm = new TeamMemberViewModel(dto, 'current-user', 'owner-1');
|
||||
const vm = new TeamMemberViewModel({
|
||||
...dto,
|
||||
currentUserId: 'current-user',
|
||||
teamOwnerId: 'owner-1',
|
||||
});
|
||||
|
||||
expect(vm.driverId).toBe('driver-123');
|
||||
expect(vm.driverName).toBe('Driver 123');
|
||||
@@ -27,9 +31,21 @@ describe('TeamMemberViewModel', () => {
|
||||
});
|
||||
|
||||
it('derives roleBadgeVariant based on role', () => {
|
||||
const ownerVm = new TeamMemberViewModel(createTeamMemberDto({ role: 'owner' }), 'current-user', 'owner-1');
|
||||
const managerVm = new TeamMemberViewModel(createTeamMemberDto({ role: 'manager' }), 'current-user', 'owner-1');
|
||||
const memberVm = new TeamMemberViewModel(createTeamMemberDto({ role: 'member' }), 'current-user', 'owner-1');
|
||||
const ownerVm = new TeamMemberViewModel({
|
||||
...createTeamMemberDto({ role: 'owner' }),
|
||||
currentUserId: 'current-user',
|
||||
teamOwnerId: 'owner-1',
|
||||
});
|
||||
const managerVm = new TeamMemberViewModel({
|
||||
...createTeamMemberDto({ role: 'manager' }),
|
||||
currentUserId: 'current-user',
|
||||
teamOwnerId: 'owner-1',
|
||||
});
|
||||
const memberVm = new TeamMemberViewModel({
|
||||
...createTeamMemberDto({ role: 'member' }),
|
||||
currentUserId: 'current-user',
|
||||
teamOwnerId: 'owner-1',
|
||||
});
|
||||
|
||||
expect(ownerVm.roleBadgeVariant).toBe('primary');
|
||||
expect(managerVm.roleBadgeVariant).toBe('secondary');
|
||||
@@ -39,8 +55,16 @@ describe('TeamMemberViewModel', () => {
|
||||
it('identifies owner correctly based on teamOwnerId', () => {
|
||||
const dto = createTeamMemberDto({ driverId: 'owner-1', role: 'owner' });
|
||||
|
||||
const ownerVm = new TeamMemberViewModel(dto, 'some-user', 'owner-1');
|
||||
const nonOwnerVm = new TeamMemberViewModel(dto, 'some-user', 'another-owner');
|
||||
const ownerVm = new TeamMemberViewModel({
|
||||
...dto,
|
||||
currentUserId: 'some-user',
|
||||
teamOwnerId: 'owner-1',
|
||||
});
|
||||
const nonOwnerVm = new TeamMemberViewModel({
|
||||
...dto,
|
||||
currentUserId: 'some-user',
|
||||
teamOwnerId: 'another-owner',
|
||||
});
|
||||
|
||||
expect(ownerVm.isOwner).toBe(true);
|
||||
expect(nonOwnerVm.isOwner).toBe(false);
|
||||
@@ -49,9 +73,21 @@ describe('TeamMemberViewModel', () => {
|
||||
it('determines canManage only for team owner and non-self members', () => {
|
||||
const memberDto = createTeamMemberDto({ driverId: 'member-1' });
|
||||
|
||||
const ownerManagingMember = new TeamMemberViewModel(memberDto, 'owner-1', 'owner-1');
|
||||
const ownerSelf = new TeamMemberViewModel(createTeamMemberDto({ driverId: 'owner-1' }), 'owner-1', 'owner-1');
|
||||
const nonOwner = new TeamMemberViewModel(memberDto, 'another-user', 'owner-1');
|
||||
const ownerManagingMember = new TeamMemberViewModel({
|
||||
...memberDto,
|
||||
currentUserId: 'owner-1',
|
||||
teamOwnerId: 'owner-1',
|
||||
});
|
||||
const ownerSelf = new TeamMemberViewModel({
|
||||
...createTeamMemberDto({ driverId: 'owner-1' }),
|
||||
currentUserId: 'owner-1',
|
||||
teamOwnerId: 'owner-1',
|
||||
});
|
||||
const nonOwner = new TeamMemberViewModel({
|
||||
...memberDto,
|
||||
currentUserId: 'another-user',
|
||||
teamOwnerId: 'owner-1',
|
||||
});
|
||||
|
||||
expect(ownerManagingMember.canManage).toBe(true);
|
||||
expect(ownerSelf.canManage).toBe(false);
|
||||
@@ -61,14 +97,22 @@ describe('TeamMemberViewModel', () => {
|
||||
it('identifies current user correctly', () => {
|
||||
const dto = createTeamMemberDto({ driverId: 'current-user' });
|
||||
|
||||
const vm = new TeamMemberViewModel(dto, 'current-user', 'owner-1');
|
||||
const vm = new TeamMemberViewModel({
|
||||
...dto,
|
||||
currentUserId: 'current-user',
|
||||
teamOwnerId: 'owner-1',
|
||||
});
|
||||
|
||||
expect(vm.isCurrentUser).toBe(true);
|
||||
});
|
||||
|
||||
it('formats joinedAt as a localized date string', () => {
|
||||
const dto = createTeamMemberDto({ joinedAt: '2024-01-01T00:00:00Z' });
|
||||
const vm = new TeamMemberViewModel(dto, 'current-user', 'owner-1');
|
||||
const vm = new TeamMemberViewModel({
|
||||
...dto,
|
||||
currentUserId: 'current-user',
|
||||
teamOwnerId: 'owner-1',
|
||||
});
|
||||
|
||||
const formatted = vm.formattedJoinedAt;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user