From d5d14b71913c444cd4d610a452ae104ceab14280 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" Date: Sat, 16 Dec 2023 19:11:58 +0400 Subject: [PATCH] Add a test case for the `useMask` hook --- package.json | 1 + tests/hooks.test.tsx | 36 +++++++++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 0636e36..92b392d 100644 --- a/package.json +++ b/package.json @@ -68,6 +68,7 @@ }, "devDependencies": { "@testing-library/react": "^14.1.2", + "@testing-library/user-event": "^14.5.1", "@types/jest": "^29.5.7", "@types/react": "^18.2.34", "jest": "^29.7.0", diff --git a/tests/hooks.test.tsx b/tests/hooks.test.tsx index fedc001..deb74c9 100644 --- a/tests/hooks.test.tsx +++ b/tests/hooks.test.tsx @@ -1,7 +1,10 @@ +import assert from "assert"; + import {useCallback, useEffect, useRef, useState} from "react"; -import {act, renderHook} from "@testing-library/react"; +import {act, render, renderHook, screen} from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; -import {cleanInput, displayFormat, getRawValue, parsePhoneNumber, usePhone} from "../src"; +import {cleanInput, displayFormat, getFormattedNumber, getRawValue, parsePhoneNumber, useMask, usePhone} from "../src"; const usePhoneTester = ({ country = "us", @@ -15,8 +18,8 @@ const usePhoneTester = ({ const [countryCode, setCountryCode] = useState(country); const { - clean, value, + pattern, metadata, setValue, countriesList, @@ -31,15 +34,14 @@ const usePhoneTester = ({ }); const update = useCallback((value: string) => { - const formattedNumber = displayFormat(clean(value).join("")); + const formattedNumber = getFormattedNumber(value, pattern); const phoneMetadata = parsePhoneNumber(formattedNumber, countriesList); setCountryCode(phoneMetadata.isoCode as any); setValue(formattedNumber); - }, [clean, countriesList, setValue]); + }, [countriesList, pattern, setValue]); const backspace = useCallback(() => { - const rawValue = getRawValue(value); - const formattedNumber = displayFormat(rawValue.slice(0, -1)); + const formattedNumber = displayFormat(getRawValue(value).slice(0, -1)); const phoneMetadata = parsePhoneNumber(formattedNumber, countriesList); setCountryCode(phoneMetadata.isoCode as any); setValue(formattedNumber); @@ -60,15 +62,19 @@ const usePhoneTester = ({ if (!initialValue.startsWith(metadata?.[2] as string)) { initialValue = metadata?.[2] as string; } - const formattedNumber = displayFormat(clean(initialValue).join("")); + const formattedNumber = getFormattedNumber(initialValue, pattern); const phoneMetadata = parsePhoneNumber(formattedNumber, countriesList); setCountryCode(phoneMetadata.isoCode as any); setValue(formattedNumber); - }, [clean, countriesList, metadata, setValue, value]) + }, [countriesList, pattern, metadata, setValue, value]) return {update, search, select, value, metadata, backspace, countriesList}; } +const UseMaskTester = ({pattern = "", ...props}: any) => { + return ; +} + describe("Verifying the functionality of hooks", () => { it("Check the usePhone hook initiation and updates", () => { const {result} = renderHook(usePhoneTester, { @@ -132,4 +138,16 @@ describe("Verifying the functionality of hooks", () => { expect((result.current.metadata as any)[0]).toBe("us"); }) + + it("Check useMask for basic use case", async () => { + render( { + const isValid = "+380 (11) 222 34567".startsWith(e.target.value); + assert(isValid || "+380 (1)" === e.target.value); + }} + />); + + await userEvent.type(screen.getByTestId("input"), "3801122234567"); + }) })