mirror of
https://github.com/anomalyco/opencode.git
synced 2026-09-10 06:44:55 +00:00
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
/** @jsxImportSource @opentui/solid */
|
|
import { testRender } from "@opentui/solid"
|
|
import { expect, test } from "bun:test"
|
|
import { createSignal } from "solid-js"
|
|
import { InteractivityProvider, useInteractivity } from "../src/context/interactivity"
|
|
|
|
test("interactivity is independent of the keymap and cannot re-enable a disabled ancestor", async () => {
|
|
const [parent, setParent] = createSignal(true)
|
|
const [child, setChild] = createSignal(true)
|
|
let defaults!: () => boolean
|
|
let enabled!: () => boolean
|
|
|
|
function Probe() {
|
|
enabled = useInteractivity()
|
|
return null
|
|
}
|
|
|
|
function Harness() {
|
|
defaults = useInteractivity()
|
|
return (
|
|
<InteractivityProvider enabled={parent()}>
|
|
<InteractivityProvider enabled={child()}>
|
|
<Probe />
|
|
</InteractivityProvider>
|
|
</InteractivityProvider>
|
|
)
|
|
}
|
|
|
|
const app = await testRender(() => <Harness />)
|
|
try {
|
|
expect(defaults()).toBe(true)
|
|
expect(enabled()).toBe(true)
|
|
setParent(false)
|
|
expect(enabled()).toBe(false)
|
|
setChild(false)
|
|
setChild(true)
|
|
expect(enabled()).toBe(false)
|
|
setParent(true)
|
|
expect(enabled()).toBe(true)
|
|
setChild(false)
|
|
expect(enabled()).toBe(false)
|
|
expect(defaults()).toBe(true)
|
|
} finally {
|
|
app.renderer.destroy()
|
|
}
|
|
})
|