UNPKG

@vectara/vectara-ui

Version:

Vectara's design system, codified as a React and Sass component library

281 lines (274 loc) 8.53 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { MemoryRouter } from "react-router-dom"; import "@testing-library/jest-dom"; import { VuiSearchResult } from "./SearchResult"; import { renderWithContext } from "../context/Context.test.util"; describe("VuiSearchResult", () => { describe("renders", () => { test("all props", () => { const { asFragment } = renderWithContext(_jsx(VuiSearchResult, Object.assign({ result: { title: "title", url: "url", date: "date", snippet: { pre: "pre", text: "text", post: "" } }, position: 1, subTitle: _jsx("div", { children: "subTitle" }), className: "customClass", snippetProps: { className: "snippetCustomClass" } }, { children: _jsx("div", { children: "children" }) })), { wrapper: MemoryRouter }); expect(asFragment()).toMatchInlineSnapshot(` <DocumentFragment> <div class="vuiSearchResult fs-mask customClass" > <div class="vuiSearchResultPosition" data-testid="searchResultCitation-1" > 1 </div> <a class="vuiLink vuiTitle vuiTitle--s" href="/url#:~:text=text" rel="noopener" target="_blank" > <h3> title </h3> </a> <div class="vuiSpacer vuiSpacer--xs" /> <div> subTitle </div> <div class="vuiText vuiText--s snippetCustomClass" > <p> <span class="vuiTextColor vuiTextColor--subdued" > date — </span> pre <strong> text </strong> </p> </div> <div class="vuiSpacer vuiSpacer--s" /> <div> children </div> </div> </DocumentFragment> `); }); test("missing optional props", () => { const { asFragment } = renderWithContext(_jsx(VuiSearchResult, Object.assign({ result: { snippet: { pre: "pre", text: "text", post: "" } }, position: 1 }, { children: _jsx("div", { children: "children" }) })), { wrapper: MemoryRouter }); expect(asFragment()).toMatchInlineSnapshot(` <DocumentFragment> <div class="vuiSearchResult fs-mask" > <div class="vuiSearchResultPosition" data-testid="searchResultCitation-1" > 1 </div> <div class="vuiText vuiText--s" > <p> pre <strong> text </strong> </p> </div> <div class="vuiSpacer vuiSpacer--s" /> <div> children </div> </div> </DocumentFragment> `); }); test("has title but missing url", () => { const { asFragment } = renderWithContext(_jsx(VuiSearchResult, Object.assign({ result: { title: "title", snippet: { pre: "pre", text: "text", post: "" } }, position: 1 }, { children: _jsx("div", { children: "children" }) })), { wrapper: MemoryRouter }); expect(asFragment()).toMatchInlineSnapshot(` <DocumentFragment> <div class="vuiSearchResult fs-mask" > <div class="vuiSearchResultPosition" data-testid="searchResultCitation-1" > 1 </div> <h3 class="vuiTitle vuiTitle--s" > title </h3> <div class="vuiText vuiText--s" > <p> pre <strong> text </strong> </p> </div> <div class="vuiSpacer vuiSpacer--s" /> <div> children </div> </div> </DocumentFragment> `); }); test("missing title but has url", () => { const { asFragment } = renderWithContext(_jsx(VuiSearchResult, Object.assign({ result: { url: "url", snippet: { pre: "pre", text: "text", post: "" } }, position: 1 }, { children: _jsx("div", { children: "children" }) })), { wrapper: MemoryRouter }); expect(asFragment()).toMatchInlineSnapshot(` <DocumentFragment> <div class="vuiSearchResult fs-mask" > <div class="vuiSearchResultPosition" data-testid="searchResultCitation-1" > 1 </div> <a class="vuiLink vuiTitle vuiTitle--s" href="/url#:~:text=text" rel="noopener" target="_blank" > <h3> url </h3> </a> <div class="vuiText vuiText--s" > <p> pre <strong> text </strong> </p> </div> <div class="vuiSpacer vuiSpacer--s" /> <div> children </div> </div> </DocumentFragment> `); }); test("has empty title but has url", () => { const { asFragment } = renderWithContext(_jsx(VuiSearchResult, Object.assign({ result: { title: " ", url: "url", snippet: { pre: "pre", text: "text", post: "" } }, position: 1 }, { children: _jsx("div", { children: "children" }) })), { wrapper: MemoryRouter }); expect(asFragment()).toMatchInlineSnapshot(` <DocumentFragment> <div class="vuiSearchResult fs-mask" > <div class="vuiSearchResultPosition" data-testid="searchResultCitation-1" > 1 </div> <a class="vuiLink vuiTitle vuiTitle--s" href="/url#:~:text=text" rel="noopener" target="_blank" > <h3> url </h3> </a> <div class="vuiText vuiText--s" > <p> pre <strong> text </strong> </p> </div> <div class="vuiSpacer vuiSpacer--s" /> <div> children </div> </div> </DocumentFragment> `); }); test("has empty title and empty url", () => { const { asFragment } = renderWithContext(_jsx(VuiSearchResult, Object.assign({ result: { title: " ", url: " ", snippet: { pre: "pre", text: "text", post: "" } }, position: 1 }, { children: _jsx("div", { children: "children" }) })), { wrapper: MemoryRouter }); expect(asFragment()).toMatchInlineSnapshot(` <DocumentFragment> <div class="vuiSearchResult fs-mask" > <div class="vuiSearchResultPosition" data-testid="searchResultCitation-1" > 1 </div> <div class="vuiText vuiText--s" > <p> pre <strong> text </strong> </p> </div> <div class="vuiSpacer vuiSpacer--s" /> <div> children </div> </div> </DocumentFragment> `); }); }); });