Download packages/tui/test/plugin/slots.test.tsx from SaylorTwift/opencode: direct link, hf CLI and curl.
- Browser
- Download file 846 Bytes
-
https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/tui/test/plugin/slots.test.tsx
- Command line
-
hf download hf://SaylorTwift/opencode/packages/tui/test/plugin/slots.test.tsx
-
curl -L -o slots.test.tsx https://huggingface.co/SaylorTwift/opencode/resolve/main/packages/tui/test/plugin/slots.test.tsx
846 Bytes
| /** @jsxImportSource @opentui/solid */ | |
| import { expect, test } from "bun:test" | |
| import { createSlot, createSolidSlotRegistry, testRender, useRenderer } from "@opentui/solid" | |
| import { onMount } from "solid-js" | |
| type Slots = { | |
| prompt: {} | |
| } | |
| test("replace slot mounts plugin content once", async () => { | |
| let mounts = 0 | |
| const Probe = () => { | |
| onMount(() => { | |
| mounts += 1 | |
| }) | |
| return <box /> | |
| } | |
| const App = () => { | |
| const registry = createSolidSlotRegistry<Slots>(useRenderer(), {}) | |
| const Slot = createSlot(registry) | |
| registry.register({ id: "plugin", slots: { prompt: () => <Probe /> } }) | |
| return ( | |
| <Slot name="prompt" mode="replace"> | |
| <box /> | |
| </Slot> | |
| ) | |
| } | |
| const app = await testRender(() => <App />) | |
| try { | |
| expect(mounts).toBe(1) | |
| } finally { | |
| app.renderer.destroy() | |
| } | |
| }) | |