fix(orders): update datetime validation logic and test cases for order creation and completion
- Modified order creation tests to set datetime_start to one hour in the past for past orders. - Updated the OrdersService to use isNowOrAfter for validating order completion against the start time. - Enhanced datetime utility function to accept a unit parameter for more flexible comparisons.
This commit is contained in:
parent
269dabe067
commit
b8ebdb8c64
@ -1282,6 +1282,7 @@ describe('OrdersService', () => {
|
||||
order: {
|
||||
...mockOrder,
|
||||
client: mockCustomer,
|
||||
datetime_start: now.subtract(1, 'hour').toISOString(), // заказ в прошлом
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
@ -1345,6 +1346,7 @@ describe('OrdersService', () => {
|
||||
order: {
|
||||
...mockOrder,
|
||||
client: mockCustomer,
|
||||
datetime_start: now.subtract(1, 'hour').toISOString(), // заказ в прошлом
|
||||
slot: { ...mockSlot, master: mockMaster },
|
||||
},
|
||||
},
|
||||
@ -1395,14 +1397,14 @@ describe('OrdersService', () => {
|
||||
});
|
||||
|
||||
it('should throw error when trying to complete order before start time', async () => {
|
||||
const pastOrder = {
|
||||
const futureOrder = {
|
||||
...mockOrder,
|
||||
datetime_start: now.subtract(1, 'hour').toISOString(),
|
||||
datetime_start: now.add(1, 'hour').toISOString(),
|
||||
};
|
||||
|
||||
const mockQuery = vi.fn().mockResolvedValue({
|
||||
data: {
|
||||
order: pastOrder,
|
||||
order: futureOrder,
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@ -8,7 +8,7 @@ import { ServicesService } from './services';
|
||||
import { SlotsService } from './slots';
|
||||
import { type VariablesOf } from '@graphql-typed-document-node/core';
|
||||
import { isCustomerMaster } from '@repo/utils/customer';
|
||||
import { getMinutes, isBeforeNow } from '@repo/utils/datetime-format';
|
||||
import { getMinutes, isBeforeNow, isNowOrAfter } from '@repo/utils/datetime-format';
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
export const ERRORS = {
|
||||
@ -381,7 +381,7 @@ export class OrdersService extends BaseService {
|
||||
if (
|
||||
state === GQL.Enum_Order_State.Completed &&
|
||||
existingOrder?.datetime_start &&
|
||||
isBeforeNow(existingOrder?.datetime_start, 'minute')
|
||||
isNowOrAfter(existingOrder?.datetime_start, 'minute')
|
||||
) {
|
||||
throw new Error(ERRORS.CANNOT_COMPLETE_BEFORE_START);
|
||||
}
|
||||
|
||||
@ -106,8 +106,8 @@ export function isBeforeNow(date: Date | string, unit: OpUnitType = 'day') {
|
||||
return inputDate.isBefore(now, unit);
|
||||
}
|
||||
|
||||
export function isNowOrAfter(date: Date | string) {
|
||||
return !isBeforeNow(date);
|
||||
export function isNowOrAfter(date: Date | string, unit: OpUnitType = 'day') {
|
||||
return !isBeforeNow(date, unit);
|
||||
}
|
||||
|
||||
export function sumTime(datetime: DateTime, durationMinutes: number) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user