gradio/js/textbox/Textbox.test.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

64 lines
1.6 KiB
TypeScript
Raw Normal View History

2022-03-23 19:22:49 +08:00
import { test, describe, assert, afterEach } from "vitest";
import { spy } from "tinyspy";
import { cleanup, fireEvent, render, get_text, wait } from "@gradio/tootils";
import event from "@testing-library/user-event";
import Textbox from "./interactive";
import type { LoadingStatus } from "@gradio/statustracker";
const loading_status = {
eta: 0,
queue_position: 1,
Release new queue beta (#1969) * queue-refactor-backend (#1489) * queue-refactor-backend - create a template for the new design * queue-refactor-backend - clean after the old queue * queue-refactor-backend - add basic test to websocket endpoint * queue-refactor-backend - small fix * queue-refactor-backend - debugs&fixes&finalizations - test the flow with postman * queue-refactor-backend - tweaks on websocket closing * queue-refactor-backend - cleanup * queue-refactor-backend - cleanup & tweaks * queue-refactor-backend - cleanup & tweaks * queue-refactor-backend - cleanup & tweaks - correct the exception handling * queue-refactor-backend - add websockets dependency * queue-refactor-backend - reformat * queue-refactor-backend - add single event test * queue-refactor-backend - tweaks - remove outdated tests * queue-refactor-backend - reformat * queue-refactor-backend - reformat * queue-refactor-backend - reformat * queue-refactor-backend - add Queue configurations to Blocks.launch() - add live_queue_update to send estimations whenever a job gets fetched from the Queue * queue-refactor-backend - add Queue configurations to Blocks.launch() - add live_queue_update to send estimations whenever a job gets fetched from the Queue * queue-refactor-backend - tweaks * queue-refactor-backend - make SLEEP_WHEN_FREE shorter Co-authored-by: Ali Abid <aabid94@gmail.com> * Add estimation parameters to queue (#1889) * - tweaks on Estimation * version * Revert "version" This reverts commit bd1f4d7bfe3658a4967b93126859a62a511a70e2. * some fix and tweaks * implement queue frontend (#1950) * implement queue frontend * fix types * fix ws endpoint in build mode * cleanup * Queue tweaks (#1909) * tweaks on estimation payload * Queue keep ws connections open (#1910) * 1. keep ws connections open after the event process is completed 2. do not send estimations periodically if live queue updates is open * fix calculation * 1. tweaks on event_queue * fix issue - create new ws for each request * format * fix * fix tests * fix tests * tets * test * changes * changes * changes * change' * wtf * changes * changes * file perms * Release queue beta v1 (#1971) * - release the new queue * - bypass the issue in the tests - rewrite the lost part in the codebase * - add concurrent queue example (#1978) * rank_eta calc * Queue fixes (#1981) * change * format * - comment out queue tests as they dont work well * - reformat * Update gradio/event_queue.py Co-authored-by: Ömer Faruk Özdemir <farukozderim@gmail.com> * changes * changes * change * weird fix Co-authored-by: Ömer Faruk Özdemir <farukozderim@gmail.com> * release-queue-v3 (#1988) * Fix frontend queuing to target secure WSS (#1996) * change * format * changes * queue-concurrency-tweaks (#2002) 1. make gather_data and broadcast_estimation sequential instead of concurrent because they were deleting elements at the same time and raising expections which was lowering the performance * Update Queue API, documentation (#2026) * changes * changes * fixes * changes * change * fix Co-authored-by: Ömer Faruk Özdemir <farukozderim@gmail.com> Co-authored-by: pngwn <hello@pngwn.io>
2022-08-18 02:17:56 +08:00
queue_size: 1,
status: "complete" as LoadingStatus["status"],
scroll_to_output: false,
visible: true,
fn_index: 0
};
2022-03-23 19:22:49 +08:00
describe("Textbox", () => {
afterEach(() => cleanup());
test("renders provided value", async () => {
const { getByDisplayValue } = await render(Textbox, {
show_label: true,
max_lines: 1,
loading_status,
2022-03-23 19:22:49 +08:00
lines: 1,
mode: "dynamic",
2022-04-06 18:47:19 +08:00
value: "hello world",
label: "Textbox"
2022-03-23 19:22:49 +08:00
});
const item: HTMLInputElement = getByDisplayValue(
"hello world"
) as HTMLInputElement;
2022-03-23 19:22:49 +08:00
assert.equal(item.value, "hello world");
});
test("changing the text should update the value", async () => {
const { component, getByDisplayValue } = await render(Textbox, {
show_label: true,
max_lines: 10,
loading_status,
2022-03-23 19:22:49 +08:00
lines: 1,
mode: "dynamic",
value: "hi ",
2022-04-06 18:47:19 +08:00
label: "Textbox"
2022-03-23 19:22:49 +08:00
});
const item: HTMLInputElement = getByDisplayValue("hi") as HTMLInputElement;
2022-03-23 19:22:49 +08:00
const mock = spy();
component.$on("change", mock);
item.focus();
await event.keyboard("some text");
2022-03-23 19:22:49 +08:00
assert.equal(item.value, "hi some text");
assert.equal(component.value, "hi some text");
assert.equal(mock.callCount, 9);
assert.equal(mock.calls[8][0].detail, "hi some text");
2022-03-23 19:22:49 +08:00
});
});