# 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);
    };