import { test, describe, assert, afterEach, vi } from "vitest"; import { cleanup, render } from "@gradio/tootils"; import { setupi18n } from "../app/src/i18n"; import Gallery 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("Gallery", () => { afterEach(() => { cleanup(); vi.useRealTimers(); }); beforeEach(() => { setupi18n(); }); test("renders the image provided", async () => { const { getByTestId } = await render(Gallery, { show_label: true, label: "Gallery", loading_status: loading_status, preview: true, root: "", proxy_url: "", value: [ { image: { path: "https://raw.githubusercontent.com/gradio-app/gradio/main/gradio/demo/video_component/files/a.mp4" } } ] }); let item = getByTestId("detailed-image") as HTMLImageElement; assert.equal( item.src, "https://raw.githubusercontent.com/gradio-app/gradio/main/gradio/demo/video_component/files/a.mp4" ); }); test("triggers the change event if and only if the images change", async () => { const { listen, component } = await render(Gallery, { show_label: true, label: "Gallery", loading_status: loading_status, preview: true, root: "", proxy_url: "", value: [ { image: { path: "https://raw.githubusercontent.com/gradio-app/gradio/main/gradio/demo/video_component/files/a.mp4" } } ] }); const change_event = listen("change"); await component.$set({ value: [ { image: { path: "https://raw.githubusercontent.com/gradio-app/gradio/main/gradio/demo/video_component/files/a.mp4" } } ] }); assert.equal(change_event.callCount, 0); }); });