From ff3c5657d05d70991b94edb62c258f957a66ec76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=96zg=C3=BCr=20Adem=20I=C5=9EIKLI?= Date: Mon, 3 Feb 2025 17:05:14 +0100 Subject: [PATCH] Fixed #68 --- src/ruleManager.ts | 2 +- tests/ruleManager.test.ts | 48 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 tests/ruleManager.test.ts diff --git a/src/ruleManager.ts b/src/ruleManager.ts index 4f32813..51b403a 100644 --- a/src/ruleManager.ts +++ b/src/ruleManager.ts @@ -7,7 +7,7 @@ export const DEFINED_RULES: Record = { }; export const isRegistered = (name: string) => { - return DEFINED_RULES.includes(name); + return Object.keys(DEFINED_RULES).includes(name); }; export const register = ( diff --git a/tests/ruleManager.test.ts b/tests/ruleManager.test.ts new file mode 100644 index 0000000..678d989 --- /dev/null +++ b/tests/ruleManager.test.ts @@ -0,0 +1,48 @@ +import { beforeAll, describe, test, expect } from "vitest"; +import { + setLocales, + en, + ILocale, + isRegistered, + register, + validate, +} from "../index"; + +describe("isRegistered()", () => { + beforeAll(async () => { + setLocales(en as ILocale); + }); + + test("should check the unregistered rules", async () => { + const result = isRegistered("myRule"); + expect(result).toBe(false); + }); + + test("should check the registered rules", async () => { + register( + "myRule", + () => { + return false; + }, + { + en: "My rule throws an error!", + } + ); + const result = isRegistered("myRule"); + expect(result).toBe(true); + }); + + test("should be able use custom rule", async () => { + const data = { + email: "foo@bar.com", + }; + const rules = { + email: "myRule", + }; + + const result = await validate(data, rules); + expect(result.isValid).toBe(false); + expect(result.errors.email[0].rule).toBe("myRule"); + expect(result.errors.email[0].message).toBe("My rule throws an error!"); + }); +});