// @flow import naturalSort from "./naturalSort"; describe("#naturalSort", () => { it("should sort a list of objects by the given key", () => { const items = [{ name: "Joan" }, { name: "Pedro" }, { name: "Mark" }]; expect(naturalSort(items, "name")).toEqual([ { name: "Joan" }, { name: "Mark" }, { name: "Pedro" }, ]); }); it("should accept a function as the object key", () => { const items = [{ name: "Joan" }, { name: "Pedro" }, { name: "Mark" }]; expect(naturalSort(items, (item) => item.name)).toEqual([ { name: "Joan" }, { name: "Mark" }, { name: "Pedro" }, ]); }); it("should accept natural-sort options", () => { const items = [ { name: "Joan" }, { name: "joan" }, { name: "Pedro" }, { name: "Mark" }, ]; expect( naturalSort(items, "name", { direction: "desc", caseSensitive: true }) ).toEqual([ { name: "joan" }, { name: "Pedro" }, { name: "Mark" }, { name: "Joan" }, ]); }); it("should ignore non basic latin letters", () => { const items = [{ name: "Abel" }, { name: "Martín" }, { name: "Ávila" }]; expect(naturalSort(items, "name")).toEqual([ { name: "Abel" }, { name: "Ávila" }, { name: "Martín" }, ]); }); it("should ignore emojis", () => { const items = [ { title: "🍔 Document 2" }, { title: "🐻 Document 3" }, { title: "🙂 Document 1" }, ]; expect(naturalSort(items, "title")).toEqual([ { title: "🙂 Document 1" }, { title: "🍔 Document 2" }, { title: "🐻 Document 3" }, ]); }); });