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