import { FilterOption } from "../types.ts";
import { assertEquals } from "../../test_deps.ts";
import { fuzzySearchAndSort } from "./fuse_search.ts";

Deno.test("testFuzzyFilter", () => {
  const array: FilterOption[] = [
    { name: "My Company/Hank", orderId: 2 },
    { name: "My Company/Hane", orderId: 1 },
    { name: "My Company/Steve Co" },
    { name: "Other/Steve" },
    { name: "Steve" },
  ];

  // Prioritize match in last path part
  let results = fuzzySearchAndSort(array, "");
  assertEquals(results.length, array.length);
  results = fuzzySearchAndSort(array, "Steve");
  assertEquals(results.length, 3);
  results = fuzzySearchAndSort(array, "Co");
  // Match in last path part
  assertEquals(results[0].name, "My Company/Steve Co");
  // Due to orderId
  assertEquals(results[1].name, "My Company/Hane");
  assertEquals(results[2].name, "My Company/Hank");
});