fix: ignore emoji when sorting (#2687)
* fix: ignore emoji when sorting * fix: use correct flow types * fix: use emoji-regex
This commit is contained in:
61
shared/utils/naturalSort.test.js
Normal file
61
shared/utils/naturalSort.test.js
Normal file
@ -0,0 +1,61 @@
|
||||
// @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" },
|
||||
]);
|
||||
});
|
||||
});
|
Reference in New Issue
Block a user