diff --git a/packages/graphql/api/slots.test.js b/packages/graphql/api/slots.test.js index 18735e6..9049ee1 100644 --- a/packages/graphql/api/slots.test.js +++ b/packages/graphql/api/slots.test.js @@ -247,7 +247,7 @@ describe('SlotsService', () => { const result = slotsService.updateSlot(variablesWithMissingStart); - await expect(result).rejects.toThrow(ERRORS.INVALID_TIME); + await expect(result).rejects.toThrow(ERRORS.MISSING_DATETIME_START); }); it('should throw error when datetime_end is missing', async () => { @@ -284,7 +284,7 @@ describe('SlotsService', () => { const result = slotsService.updateSlot(variablesWithMissingEnd); - await expect(result).rejects.toThrow(ERRORS.INVALID_TIME); + await expect(result).rejects.toThrow(ERRORS.MISSING_DATETIME_END); }); it('should throw error when datetime_end is before datetime_start', async () => { @@ -606,76 +606,6 @@ describe('SlotsService', () => { await expect(result).resolves.toBe(mockMutationResult.data); }); - - it('should use existing slot times when only datetime_start is provided', async () => { - const variablesWithOnlyStart = { - data: { - datetime_start: '2024-01-01T09:00:00Z', - }, - documentId: 'slot-123', - }; - - const mockMutate = vi.fn().mockResolvedValue(mockMutationResult); - const mockQuery = vi.fn().mockImplementation(({ query }) => { - if (query === GQL.GetCustomerDocument) { - return Promise.resolve(mockGetCustomerResult); - } - - if (query === GQL.GetSlotDocument) { - return Promise.resolve(mockGetSlotResult); - } - - if (query === GQL.GetSlotsDocument) { - return Promise.resolve({ data: { slots: [] } }); - } - - return Promise.resolve({ data: {} }); - }); - - mockGetClientWithToken.mockResolvedValue({ - mutate: mockMutate, - query: mockQuery, - }); - - const result = slotsService.updateSlot(variablesWithOnlyStart); - - await expect(result).resolves.toBe(mockMutationResult.data); - }); - - it('should use existing slot times when only datetime_end is provided', async () => { - const variablesWithOnlyEnd = { - data: { - datetime_end: '2024-01-01T12:00:00Z', - }, - documentId: 'slot-123', - }; - - const mockMutate = vi.fn().mockResolvedValue(mockMutationResult); - const mockQuery = vi.fn().mockImplementation(({ query }) => { - if (query === GQL.GetCustomerDocument) { - return Promise.resolve(mockGetCustomerResult); - } - - if (query === GQL.GetSlotDocument) { - return Promise.resolve(mockGetSlotResult); - } - - if (query === GQL.GetSlotsDocument) { - return Promise.resolve({ data: { slots: [] } }); - } - - return Promise.resolve({ data: {} }); - }); - - mockGetClientWithToken.mockResolvedValue({ - mutate: mockMutate, - query: mockQuery, - }); - - const result = slotsService.updateSlot(variablesWithOnlyEnd); - - await expect(result).resolves.toBe(mockMutationResult.data); - }); }); describe('deleteSlot', () => { diff --git a/packages/graphql/api/slots.ts b/packages/graphql/api/slots.ts index 86df0b0..d0c682a 100644 --- a/packages/graphql/api/slots.ts +++ b/packages/graphql/api/slots.ts @@ -11,7 +11,8 @@ import dayjs from 'dayjs'; export const ERRORS = { HAS_ORDERS: 'Слот имеет активные заказы', INVALID_TIME: 'Некорректное время', - MISSING_DATE: 'Не указана дата', + MISSING_DATETIME_END: 'Не указана дата окончания', + MISSING_DATETIME_START: 'Не указана дата начала', MISSING_SERVICE_ID: 'Не указана услуга', NO_PERMISSION: 'Нет доступа', OVERLAPPING_TIME: 'Время пересекается с другими слотами', @@ -75,7 +76,7 @@ export class SlotsService extends BaseService { variables: VariablesOf, context: { service: GQL.ServiceFiltersInput }, ) { - if (!variables.filters?.datetime_start) throw new Error(ERRORS.MISSING_DATE); + if (!variables.filters?.datetime_start) throw new Error(ERRORS.MISSING_DATETIME_START); if (!context?.service?.documentId?.eq) throw new Error(ERRORS.MISSING_SERVICE_ID); const { query } = await getClientWithToken(); @@ -181,20 +182,15 @@ export class SlotsService extends BaseService { if (!slot) throw new Error(ERRORS.SLOT_NOT_FOUND); - const isTimeChanging = variables?.data?.datetime_start || variables?.data?.datetime_end; + const datetime_start = variables.data.datetime_start; + const datetime_end = variables.data.datetime_end; + + const isTimeChanging = datetime_start || datetime_end; if (!isTimeChanging) return; - let datetime_start = variables.data.datetime_start; - let datetime_end = variables.data.datetime_end; - - if (!datetime_start) datetime_start = slot?.datetime_start; - if (!datetime_end) datetime_end = slot?.datetime_end; - - // Проверка: оба времени должны быть определены - if (!datetime_start || !datetime_end) { - throw new Error(ERRORS.INVALID_TIME); - } + if (!datetime_start) throw new Error(ERRORS.MISSING_DATETIME_START); + if (!datetime_end) throw new Error(ERRORS.MISSING_DATETIME_END); // Проверка валидности времени if (new Date(datetime_end) <= new Date(datetime_start)) {