diff --git a/frontend/__test__/getDeadlineTime.test.ts b/frontend/__test__/getDeadlineTime.test.ts new file mode 100644 index 000000000..162e19740 --- /dev/null +++ b/frontend/__test__/getDeadlineTime.test.ts @@ -0,0 +1,53 @@ +import { getDeadlineTime } from '@utils/post/getDeadlineTime'; + +describe('getDeadlineTime를 이용하여 사용자에게 마감 시간을 알려준다.', () => { + test('5분을 설정했을 때 5분으로 표시된다', () => { + const result = getDeadlineTime({ + day: 0, + hour: 0, + minute: 5, + }); + + expect(result).toBe('5분 후에 마감됩니다.'); + }); + + test('1시간 5분을 설정했을 때 1시간 5분으로 표시된다', () => { + const result = getDeadlineTime({ + day: 0, + hour: 1, + minute: 5, + }); + + expect(result).toBe('1시간 5분 후에 마감됩니다.'); + }); + + test('2일 23시간 59분을 설정했을 때 2일 23시간 59분으로 표시된다', () => { + const result = getDeadlineTime({ + day: 2, + hour: 23, + minute: 59, + }); + + expect(result).toBe('2일 23시간 59분 후에 마감됩니다.'); + }); + + test('0일 0시간 0분을 설정했을 때 "마감 시간을 선택해주세요"를 표시된다', () => { + const result = getDeadlineTime({ + day: 0, + hour: 0, + minute: 0, + }); + + expect(result).toBe('마감 시간을 선택해주세요'); + }); + + test('-1일 -1시간 -1분을 설정했을 때 "마감 시간을 다시 설정해주세요"를 표시된다', () => { + const result = getDeadlineTime({ + day: -1, + hour: -1, + minute: -1, + }); + + expect(result).toBe('마감 시간을 다시 설정해주세요'); + }); +}); diff --git a/frontend/src/components/PostForm/index.tsx b/frontend/src/components/PostForm/index.tsx index 3c91102ae..bee4f8147 100644 --- a/frontend/src/components/PostForm/index.tsx +++ b/frontend/src/components/PostForm/index.tsx @@ -24,6 +24,7 @@ import { POST_DESCRIPTION_MAX_LENGTH, POST_TITLE_MAX_LENGTH } from '@constants/p import { changeCategoryToOption } from '@utils/post/changeCategoryToOption'; import { addTimeToDate, formatTimeWithOption } from '@utils/post/formatTime'; +import { getDeadlineTime } from '@utils/post/getDeadlineTime'; import { DEADLINE_OPTION } from './constants'; import ContentImagePart from './ContentImageSection'; @@ -148,36 +149,6 @@ export default function PostForm({ data, mutate, isError, error }: PostFormProps } }; - const getDeadlineTime = ({ - day, - hour, - minute, - }: { - day: number; - hour: number; - minute: number; - }) => { - const timeMessage = []; - - if (day === 0 && hour === 0 && minute === 0) { - return '마감 시간을 선택해주세요'; - } - - if (day > 0) { - timeMessage.push(`${day}일`); - } - - if (hour > 0) { - timeMessage.push(`${hour}시간`); - } - - if (minute > 0) { - timeMessage.push(`${minute}분`); - } - - return `${timeMessage.join(' ')} 후에 마감됩니다.`; - }; - return ( <> diff --git a/frontend/src/utils/post/getDeadlineTime.ts b/frontend/src/utils/post/getDeadlineTime.ts new file mode 100644 index 000000000..4952300ff --- /dev/null +++ b/frontend/src/utils/post/getDeadlineTime.ts @@ -0,0 +1,33 @@ +export const getDeadlineTime = ({ + day, + hour, + minute, +}: { + day: number; + hour: number; + minute: number; +}) => { + const timeMessage = []; + + if (day < 0 || hour < 0 || minute < 0) { + return '마감 시간을 다시 설정해주세요'; + } + + if (day === 0 && hour === 0 && minute === 0) { + return '마감 시간을 선택해주세요'; + } + + if (day > 0) { + timeMessage.push(`${day}일`); + } + + if (hour > 0) { + timeMessage.push(`${hour}시간`); + } + + if (minute > 0) { + timeMessage.push(`${minute}분`); + } + + return `${timeMessage.join(' ')} 후에 마감됩니다.`; +};