|
| 1 | +import { describe, expect, test } from "vitest"; |
| 2 | +import formatPhoneNumber from "."; |
| 3 | + |
| 4 | +describe("formatPhoneNumber", () => { |
| 5 | + describe("휴대폰 번호", () => { |
| 6 | + test("11자리 휴대폰 번호에 하이픈을 올바르게 추가한다 (010)", () => { |
| 7 | + expect(formatPhoneNumber("01012345678")).toBe("010-1234-5678"); |
| 8 | + }); |
| 9 | + |
| 10 | + test("11자리 휴대폰 번호에 하이픈을 올바르게 추가한다 (011)", () => { |
| 11 | + expect(formatPhoneNumber("01198765432")).toBe("011-9876-5432"); |
| 12 | + }); |
| 13 | + |
| 14 | + test("중간에 공백이나 하이픈이 있어도 숫자를 제외하고 올바르게 처리한다", () => { |
| 15 | + expect(formatPhoneNumber("010-1234 5678")).toBe("010-1234-5678"); |
| 16 | + }); |
| 17 | + }); |
| 18 | + |
| 19 | + describe("지역번호", () => { |
| 20 | + test("서울 지역번호(02) 9자리에 하이픈을 올바르게 추가한다", () => { |
| 21 | + expect(formatPhoneNumber("021234567")).toBe("02-123-4567"); |
| 22 | + }); |
| 23 | + |
| 24 | + test("서울 지역번호(02) 10자리에 하이픈을 올바르게 추가한다", () => { |
| 25 | + expect(formatPhoneNumber("0212345678")).toBe("02-1234-5678"); |
| 26 | + }); |
| 27 | + |
| 28 | + test("서울 외 지역번호(031) 10자리에 하이픈을 올바르게 추가한다", () => { |
| 29 | + expect(formatPhoneNumber("0311234567")).toBe("031-123-4567"); |
| 30 | + }); |
| 31 | + |
| 32 | + test("서울 외 지역번호(054) 10자리에 하이픈을 올바르게 추가한다", () => { |
| 33 | + expect(formatPhoneNumber("0541234567")).toBe("054-123-4567"); |
| 34 | + }); |
| 35 | + }); |
| 36 | + |
| 37 | + describe("대표번호", () => { |
| 38 | + test("8자리 대표번호(1588)에 하이픈을 올바르게 추가한다", () => { |
| 39 | + expect(formatPhoneNumber("15881234")).toBe("1588-1234"); |
| 40 | + }); |
| 41 | + |
| 42 | + test("8자리 대표번호(1670)에 하이픈을 올바르게 추가한다", () => { |
| 43 | + expect(formatPhoneNumber("16709876")).toBe("1670-9876"); |
| 44 | + }); |
| 45 | + }); |
| 46 | + |
| 47 | + describe("예외 케이스", () => { |
| 48 | + test("빈 문자열을 입력하면 빈 문자열을 반환한다", () => { |
| 49 | + expect(formatPhoneNumber("")).toBe(""); |
| 50 | + }); |
| 51 | + |
| 52 | + test("null 또는 undefined를 입력하면 빈 문자열을 반환한다", () => { |
| 53 | + // @ts-ignore |
| 54 | + expect(formatPhoneNumber(null)).toBe(""); |
| 55 | + // @ts-ignore |
| 56 | + expect(formatPhoneNumber(undefined)).toBe(""); |
| 57 | + }); |
| 58 | + |
| 59 | + test("숫자가 아닌 문자가 포함된 경우, 해당 문자를 제거하고 포맷팅한다", () => { |
| 60 | + expect(formatPhoneNumber("010-abcd-1234-efg-5678")).toBe("010-1234-5678"); |
| 61 | + }); |
| 62 | + |
| 63 | + test("어떤 형식에도 맞지 않는 짧은 길이라면 숫자만 반환한다", () => { |
| 64 | + expect(formatPhoneNumber("12345")).toBe("12345"); |
| 65 | + }); |
| 66 | + |
| 67 | + test("어떤 형식에도 맞지 않는 긴 길이라면 숫자만 반환한다", () => { |
| 68 | + expect(formatPhoneNumber("0101234567890")).toBe("0101234567890"); |
| 69 | + }); |
| 70 | + }); |
| 71 | +}); |
0 commit comments