Ctrl K
ComunidadGuías…

shared/utils/naturalSort.test.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
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",
      },
    ]);
  });
});