diff --git a/apps/web/src/app/university/application/ScoreSheet.tsx b/apps/web/src/app/university/application/ScoreSheet.tsx index 74748588..d568cdce 100644 --- a/apps/web/src/app/university/application/ScoreSheet.tsx +++ b/apps/web/src/app/university/application/ScoreSheet.tsx @@ -1,7 +1,7 @@ import { useState } from "react"; import { IconExpandMoreFilled } from "@/public/svgs/community"; import type { ScoreSheet as ScoreSheetType } from "@/types/application"; -import { languageTestMapping } from "@/types/score"; +import { formatLanguageTestScore, isLanguageTestEnum, languageTestMapping } from "@/types/score"; const ScoreSheet = ({ scoreSheet }: { scoreSheet: ScoreSheetType }) => { const [tableOpened, setTableOpened] = useState(false); @@ -32,10 +32,12 @@ const ScoreSheet = ({ scoreSheet }: { scoreSheet: ScoreSheetType }) => { {applicant.gpa.toFixed(2)} - {languageTestMapping[applicant.testType]} + {isLanguageTestEnum(applicant.testType) ? languageTestMapping[applicant.testType] : applicant.testType} - {applicant.testScore} + {isLanguageTestEnum(applicant.testType) + ? formatLanguageTestScore(applicant.testType, applicant.testScore) + : applicant.testScore} ))} diff --git a/apps/web/src/app/university/score/ScoreScreen.tsx b/apps/web/src/app/university/score/ScoreScreen.tsx index 5db00301..e948bcc7 100644 --- a/apps/web/src/app/university/score/ScoreScreen.tsx +++ b/apps/web/src/app/university/score/ScoreScreen.tsx @@ -6,7 +6,7 @@ import { useGetMyGpaScore, useGetMyLanguageTestScore } from "@/apis/Scores"; import BlockBtn from "@/components/button/BlockBtn"; import Tab from "@/components/ui/Tab"; import { IconSolidConnectionSmallLogo } from "@/public/svgs/my"; -import { languageTestMapping } from "@/types/score"; +import { formatLanguageTestScore, languageTestMapping } from "@/types/score"; import ScoreCard from "./ScoreCard"; const ScoreScreen = () => { @@ -36,7 +36,10 @@ const ScoreScreen = () => { = { "5": "N5", }; +const integerScoreTestTypes = new Set([ + LanguageTestEnum.TOEIC, + LanguageTestEnum.TOEFL_IBT, + LanguageTestEnum.TOEFL_ITP, + LanguageTestEnum.DUOLINGO, + LanguageTestEnum.TCF, + LanguageTestEnum.TEF, + LanguageTestEnum.NEW_HSK, +]); + +const trailingZeroPattern = /^-?\d+\.0+$/; + +export const isLanguageTestEnum = (value: string): value is LanguageTestEnum => { + return value in languageTestScoreInfo; +}; + export const formatLanguageTestScore = (testType: LanguageTestEnum, score: string) => { if (testType === LanguageTestEnum.JLPT) { return jlptLevelMapping[score] ?? score; } - return score; + if (!integerScoreTestTypes.has(testType)) { + return score; + } + + if (!trailingZeroPattern.test(score)) { + return score; + } + + return score.replace(/\.0+$/, ""); }; export const formatLanguageTestScoreWithMax = (testType: LanguageTestEnum, score: string) => {