feat : quick update
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import { matchesTeamSearch } from "./team-search";
|
||||
|
||||
const team = {
|
||||
team: ["Vaporize Team"],
|
||||
character: ["Mualani"],
|
||||
weapon: ["Surf's Up"],
|
||||
artifact: ["Obsidian Codex", "Scroll of the Hero"],
|
||||
};
|
||||
|
||||
describe("team search", () => {
|
||||
it("searches every category when the target is all", () => {
|
||||
expect(matchesTeamSearch(team, "surf", "all")).toBe(true);
|
||||
expect(matchesTeamSearch(team, "mualani", "all")).toBe(true);
|
||||
});
|
||||
|
||||
it("only searches the selected target", () => {
|
||||
expect(matchesTeamSearch(team, "vaporize", "team")).toBe(true);
|
||||
expect(matchesTeamSearch(team, "obsidian", "team")).toBe(false);
|
||||
expect(matchesTeamSearch(team, "obsidian", "artifact")).toBe(true);
|
||||
});
|
||||
|
||||
it("ignores case and surrounding whitespace", () => {
|
||||
expect(matchesTeamSearch(team, " HERO ", "artifact")).toBe(true);
|
||||
});
|
||||
|
||||
it("matches every team when the query is empty", () => {
|
||||
expect(matchesTeamSearch(team, " ", "weapon")).toBe(true);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,30 @@
|
||||
export type TeamSearchTarget =
|
||||
| "all"
|
||||
| "team"
|
||||
| "character"
|
||||
| "weapon"
|
||||
| "artifact";
|
||||
|
||||
export interface TeamSearchValues {
|
||||
team: string[];
|
||||
character: string[];
|
||||
weapon: string[];
|
||||
artifact: string[];
|
||||
}
|
||||
|
||||
export function matchesTeamSearch(
|
||||
values: TeamSearchValues,
|
||||
query: string,
|
||||
target: TeamSearchTarget,
|
||||
): boolean {
|
||||
const normalizedQuery = query.trim().toLocaleLowerCase();
|
||||
if (!normalizedQuery) return true;
|
||||
|
||||
const candidates = target === "all"
|
||||
? Object.values(values).flat()
|
||||
: values[target];
|
||||
|
||||
return candidates.some((value) =>
|
||||
value.toLocaleLowerCase().includes(normalizedQuery),
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user