All files / js/composables productSearch.ts

0% Statements 0/9
0% Branches 0/6
0% Functions 0/2
0% Lines 0/9

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25                                                 
export interface ProductSearchCandidate {
    name?: string | null;
    sku?: string | null;
}
 
const normalizeProductSearchTerm = (value: string | null | undefined): string => {
    return String(value ?? '').trim().toLocaleLowerCase();
};
 
export const matchesProductSearch = (
    product: ProductSearchCandidate,
    query: string | null | undefined,
): boolean => {
    const normalizedQuery = normalizeProductSearchTerm(query);
 
    if (normalizedQuery.length < 2) {
        return false;
    }
 
    const normalizedName = normalizeProductSearchTerm(product.name);
    const normalizedSku = normalizeProductSearchTerm(product.sku);
 
    return normalizedName.includes(normalizedQuery) || normalizedSku.includes(normalizedQuery);
};