UNCLASSIFIED - NO CUI

Skip to content
Snippets Groups Projects
lunr-pipelines.spec.js 1.64 KiB
Newer Older
graham.smith's avatar
graham.smith committed
import lunr from "lunr";
import {
  acronymAliases,
  registerAcronymAliases,
  useAcronymAliases,
} from "@/plugins/search/lunr-pipelines";

describe("lunr-pipelins.js", () => {
  afterEach(() => {
    jest.restoreAllMocks();
  });

  it("should update token with acronym alias", () => {
    const mockToken = {
      toString: () => "cso",
      update: jest.fn(),
    };
    acronymAliases(mockToken);
    expect(mockToken.update).toHaveBeenCalledTimes(1);
    const updateFn = mockToken.update.mock.calls[0][0];
    expect(typeof updateFn).toEqual("function");
    expect(updateFn()).toEqual("chief software officer");
  });
  it("should not update token with alias if no matching alias", () => {
    const mockToken = {
      toString: () => "mock",
      update: jest.fn(),
    };
    acronymAliases(mockToken);
    expect(mockToken.update).toHaveBeenCalledTimes(0);
  });
  it("should only register acronymAliases once", () => {
    const spy = jest.spyOn(lunr.Pipeline, "registerFunction");
    registerAcronymAliases();
    registerAcronymAliases();
    expect(spy).toBeCalledTimes(1);
  });
  it("should configure lunrjs builder", () => {
    const mockBuilder = {
      pipeline: { before: jest.fn() },
      searchPipeline: { before: jest.fn() },
    };

    useAcronymAliases(mockBuilder);
    expect(mockBuilder.pipeline.before).toHaveBeenCalledTimes(1);
    expect(mockBuilder.pipeline.before).toHaveBeenCalledWith(
      lunr.stemmer,
      acronymAliases
    );

    expect(mockBuilder.searchPipeline.before).toHaveBeenCalledTimes(1);
    expect(mockBuilder.searchPipeline.before).toHaveBeenCalledWith(
      lunr.stemmer,
      acronymAliases
    );
  });
});