import { isEqual, isObject } from "../src/utils"; describe("isEqual", () => { it("return true if data are the same", () => { expect(isEqual(null, null)).toBeTruthy(); expect(isEqual(undefined, undefined)).toBeTruthy(); expect(isEqual("hello", "hello")).toBeTruthy(); expect(isEqual(57, 57)).toBeTruthy(); expect(isEqual(["hello", "world"], ["hello", "world"])).toBeTruthy(); expect( isEqual( [ { name: "joe", age: 99 }, { name: "nina", age: 23 }, ], [ { name: "joe", age: 99 }, { name: "nina", age: 23 }, ], ), ).toBeTruthy(); }); it("return false if data are different", () => { expect(isEqual(null, "hello")).toBeFalsy(); expect(isEqual("hello", undefined)).toBeFalsy(); expect(isEqual("hello", "howdy")).toBeFalsy(); expect(isEqual(57, 51)).toBeFalsy(); expect(isEqual(["hello", "world"], ["howdy", "world"])).toBeFalsy(); expect( isEqual( [ { name: "joe", age: 99 }, { name: "nina", age: 23 }, ], [ { name: "joe", age: 98 }, { name: "nina", age: 23 }, ], ), ).toBeFalsy(); expect(isEqual(["psg"], ["psg", "nantes"])).toBeFalsy(); expect(isEqual(null, ["hello", "world"])).toBeFalsy(); expect(isEqual(["hello", "world"], null)).toBeFalsy(); }); it("return true if ignoreArrayOrder option is activated and arrays contains the same values regardless of their positions", () => { expect( isEqual(["hello", "world"], ["world", "hello"], { ignoreArrayOrder: true, }), ).toBeTruthy(); expect( isEqual([44, 45, "world"], [45, "world", 44], { ignoreArrayOrder: true }), ).toBeTruthy(); expect( isEqual( [ { name: "joe", age: 88 }, { name: "nina", isCool: true }, ], [ { name: "nina", isCool: true }, { name: "joe", age: 88 }, ], { ignoreArrayOrder: true, }, ), ).toBeTruthy(); expect( isEqual([true, 55, "hello"], ["hello", 55, true], { ignoreArrayOrder: true, }), ).toBeTruthy(); }); it("return false if ignoreArrayOrder option is activated but the arrays don't contain the same values", () => { expect( isEqual(["hello"], ["world", "hello"], { ignoreArrayOrder: true, }), ).toBeFalsy(); expect( isEqual([44, 47, "world"], [45, "world", 44], { ignoreArrayOrder: true }), ).toBeFalsy(); expect( isEqual( [ { name: "joey", age: 88 }, { name: "nina", isCool: true }, ], [ { name: "nina", isCool: true }, { name: "joe", age: 88 }, ], { ignoreArrayOrder: true, }, ), ).toBeFalsy(); expect( isEqual([false, 55, "hello"], ["hello", 55, true], { ignoreArrayOrder: true, }), ).toBeFalsy(); }); }); describe("isObject", () => { it("return true if the value has nested values", () => { expect(isObject({ name: "joe" })).toBeTruthy(); expect(isObject({ user: { name: "joe" } })).toBeTruthy(); }); it("return false if the value doesn't have nested values", () => { expect(isObject("joe")).toBeFalsy(); expect(isObject(56)).toBeFalsy(); expect(isObject(true)).toBeFalsy(); expect(isObject(null)).toBeFalsy(); expect(isObject(undefined)).toBeFalsy(); expect(isObject(["hello", "world"])).toBeFalsy(); }); });