| import { test, describe, assert, afterEach } from "vitest"; | |
| import { cleanup, fireEvent, render } from "@self/tootils"; | |
| import { setupi18n } from "../core/src/i18n"; | |
| import HighlightedText from "./Index.svelte"; | |
| import type { LoadingStatus } from "@gradio/statustracker"; | |
| const loading_status: LoadingStatus = { | |
| eta: 0, | |
| queue_position: 1, | |
| queue_size: 1, | |
| status: "complete" as LoadingStatus["status"], | |
| scroll_to_output: false, | |
| visible: true, | |
| fn_index: 0, | |
| show_progress: "full" | |
| }; | |
| describe("HighlightedText", () => { | |
| afterEach(() => cleanup()); | |
| setupi18n(); | |
| test("renders provided text and labels", async () => { | |
| const { getByText, getByTestId, getAllByText } = await render( | |
| HighlightedText, | |
| { | |
| interactive: false, | |
| loading_status, | |
| value: [ | |
| { token: "The", class_or_confidence: null }, | |
| { token: "quick", class_or_confidence: "adjective" }, | |
| { token: " sneaky", class_or_confidence: "adjective" }, | |
| { token: "fox", class_or_confidence: "subject" }, | |
| { token: " jumped ", class_or_confidence: "past tense verb" }, | |
| { token: "over the", class_or_confidence: null }, | |
| { token: "lazy dog", class_or_confidence: "object" } | |
| ] | |
| } | |
| ); | |
| const quick = getByText("quick"); | |
| const adjectiveLabels = getAllByText("adjective"); | |
| assert.exists(quick); | |
| assert.exists(adjectiveLabels); | |
| assert.equal(adjectiveLabels.length, 2); | |
| }); | |
| test("renders labels with remove label buttons which trigger change", async () => { | |
| const { getAllByText, listen } = await render(HighlightedText, { | |
| interactive: true, | |
| loading_status, | |
| value: [ | |
| { token: "The", class_or_confidence: null }, | |
| { token: "quick", class_or_confidence: "adjective" }, | |
| { token: " sneaky", class_or_confidence: "adjective" }, | |
| { token: "fox", class_or_confidence: "subject" }, | |
| { token: " jumped ", class_or_confidence: "past tense verb" }, | |
| { token: "over the", class_or_confidence: null }, | |
| { token: "lazy dog", class_or_confidence: "object" } | |
| ] | |
| }); | |
| const mock = listen("change"); | |
| const removeButtons = getAllByText("×"); | |
| assert.equal(removeButtons.length, 5); | |
| assert.equal(mock.callCount, 0); | |
| fireEvent.click(removeButtons[0]); | |
| assert.equal(mock.callCount, 1); | |
| }); | |
| }); | |