fix: support partial updates in tournament PUT endpoint
- Change PUT endpoint to only include fields present in the request - Add support for team configuration fields (teamDurability, partnerRotation, allowByes) - Fix contradictory test that expected resetting allowTies when not provided - When a field is not in the request, it is preserved (not modified) Fixes issue where Save Configuration button would fail with 'Tournament name is required' error.
This commit is contained in:
@@ -101,12 +101,12 @@ describe('Tournament Update API', () => {
|
||||
);
|
||||
});
|
||||
|
||||
it('should default allowTies to false when not provided', async () => {
|
||||
it('should NOT modify allowTies when not provided in request', async () => {
|
||||
// Mock existing tournament
|
||||
eventFindUniqueMock.mockImplementation(async () => ({
|
||||
id: 1,
|
||||
name: 'Test Tournament',
|
||||
allowTies: true,
|
||||
allowTies: true, // This is the current value
|
||||
targetScore: 5,
|
||||
eventType: 'tournament',
|
||||
format: 'round_robin',
|
||||
@@ -119,11 +119,11 @@ describe('Tournament Update API', () => {
|
||||
updatedAt: new Date(),
|
||||
} as any));
|
||||
|
||||
// Mock successful update
|
||||
// Mock successful update (allowTies should remain unchanged)
|
||||
eventUpdateMock.mockImplementation(async () => ({
|
||||
id: 1,
|
||||
name: 'Test Tournament',
|
||||
allowTies: false,
|
||||
allowTies: true, // Should remain true, not reset to false
|
||||
targetScore: 5,
|
||||
eventType: 'tournament',
|
||||
format: 'round_robin',
|
||||
@@ -141,7 +141,7 @@ describe('Tournament Update API', () => {
|
||||
body: JSON.stringify({
|
||||
name: 'Test Tournament',
|
||||
targetScore: 5,
|
||||
// allowTies not provided
|
||||
// allowTies not provided - should NOT be modified
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -149,13 +149,12 @@ describe('Tournament Update API', () => {
|
||||
const response = await PUT(request, { params });
|
||||
|
||||
expect(response.status).toBe(200);
|
||||
expect(prisma.event.update).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
data: expect.objectContaining({
|
||||
allowTies: false, // Should default to false
|
||||
}),
|
||||
})
|
||||
);
|
||||
// When allowTies is not provided, it should NOT be in the update data
|
||||
// (it will keep its existing value in the database)
|
||||
const updateCall = eventUpdateMock.mock.calls[0][0];
|
||||
expect(updateCall.data.allowTies).toBeUndefined();
|
||||
expect(updateCall.data.name).toBe('Test Tournament');
|
||||
expect(updateCall.data.targetScore).toBe(5);
|
||||
});
|
||||
|
||||
it('should preserve allowTies value when updating other fields', async () => {
|
||||
|
||||
Reference in New Issue
Block a user