# zidane-ui/palette/testing

Import: `import { … } from 'zidane-ui/palette/testing'`. Source: [ui/src/palette/testing/index.ts](https://github.com/Tahul/zidane/blob/main/ui/src/palette/testing/index.ts).

## Functions

### `createFixturePaletteHost`

Function.

Creates a [`PaletteHost`](https://zidane.si/docs/reference/ui-palette-headless.md#PaletteHost) held in memory.

```ts
function createFixturePaletteHost(options?: FixturePaletteOptions): FixturePaletteHost
```

**Parameters**

- `options?` (`FixturePaletteOptions`, default `{}`): Its commands, files, extension items, settings and recents.

**Returns** `FixturePaletteHost`

Source: [ui/src/palette/testing/index.ts:96](https://github.com/Tahul/zidane/blob/main/ui/src/palette/testing/index.ts#L96)

## Constants

### `DEMO_PALETTE_COMMANDS`

Constant.

Demo `/` commands.

```ts
const DEMO_PALETTE_COMMANDS: readonly PaletteCommand[]
```

Source: [ui/src/palette/testing/index.ts:13](https://github.com/Tahul/zidane/blob/main/ui/src/palette/testing/index.ts#L13)

### `DEMO_PALETTE_CONVERSATIONS`

Constant.

Demo conversation text, by session id, for the content search.

```ts
const DEMO_PALETTE_CONVERSATIONS: Readonly<Record<string, string>>
```

Source: [ui/src/palette/testing/index.ts:41](https://github.com/Tahul/zidane/blob/main/ui/src/palette/testing/index.ts#L41)

### `DEMO_PALETTE_EXTENSION_ITEMS`

Constant.

A demo extension item (its `source` is its provider's id).

```ts
const DEMO_PALETTE_EXTENSION_ITEMS: readonly PaletteItem[]
```

Source: [ui/src/palette/testing/index.ts:29](https://github.com/Tahul/zidane/blob/main/ui/src/palette/testing/index.ts#L29)

### `DEMO_PALETTE_FILES`

Constant.

Demo project files, relative to the project root.

```ts
const DEMO_PALETTE_FILES: readonly string[]
```

Source: [ui/src/palette/testing/index.ts:20](https://github.com/Tahul/zidane/blob/main/ui/src/palette/testing/index.ts#L20)

## Interfaces

### `FixturePaletteHost`

Interface.

The [`PaletteHost`](https://zidane.si/docs/reference/ui-palette-headless.md#PaletteHost) [`createFixturePaletteHost`](https://zidane.si/docs/reference/ui-palette-testing.md#createFixturePaletteHost) returns, plus a way to change its extension items.

```ts
interface FixturePaletteHost extends PaletteHost
```

**Properties**

- `extensions?` (`PaletteExtensions`, from `PaletteHost`): Extension-contributed items. Absent: no extensions source.
- `recents?` (`PaletteRecents`, from `PaletteHost`): Persistent recents. Absent: recents last as long as the page.
- `settings?` (`Readable<Partial<Settings>>`, from `PaletteHost`): The settings in effect, read when the palette lists its rows. Absent: no settings rows.
- `listCommands?` (`(query: PaletteCommandQuery) => Promise<readonly PaletteCommand[]>`, from `PaletteHost`): The `/` commands for a folder. Absent: no commands source.
- `listFiles?` (`(query: PaletteFileQuery) => Promise<readonly PaletteFileEntry[]>`, from `PaletteHost`): The project's files (without gitignored ones). Absent: no files source.
- `searchConversations?` (`(query: PaletteConversationQuery) => Promise<readonly PaletteConversationHit[]>`, from `PaletteHost`): Content matches inside conversations, best first; a newer call may cancel an older scan (it then resolves
  with whatever it has, or rejects). Absent: no "In conversations" group.
- `setExtensionItems` (`(items: readonly PaletteItem[]) => void`): Replaces the extension items and tells `extensions.subscribe` listeners.
- `setSettings?` (`(patch: Partial<Settings>) => Promise<void>`, from `PaletteHost`): Applies a settings patch. Absent: settings rows are not offered.

Source: [ui/src/palette/testing/index.ts:86](https://github.com/Tahul/zidane/blob/main/ui/src/palette/testing/index.ts#L86)

### `FixturePaletteOptions`

Interface.

Options of [`createFixturePaletteHost`](https://zidane.si/docs/reference/ui-palette-testing.md#createFixturePaletteHost). Each list defaults to the demo data.

```ts
interface FixturePaletteOptions
```

**Properties**

- `commands?` (`false | readonly PaletteCommand[]`): The `/` commands, for any folder. `false`: no `listCommands`.
- `conversations?` (`false | Readonly<Record<string, string>>`): Conversation text by session id, for the content search. `false`: no `searchConversations`.
- `extensionItems?` (`false | readonly PaletteItem[]`): Extension items. `false`: no `extensions`.
- `files?` (`false | readonly string[]`): File paths relative to any root. `false`: no `listFiles`.
- `onSetSettings?` (`(patch: Partial<Settings>) => void`): Called with each settings patch, after the host applied it.
- `recents?` (`readonly string[]`): The stored recents. Default: none.
- `runExtension?` (`(sourceId: string, itemId: string) => PaletteExtensionRun`): What running an extension item answers. Default: a notice naming it.
- `settings?` (`false | Partial<Settings>`): The settings in effect. `false`: no `settings` / `setSettings`. Default: `{}`.

Source: [ui/src/palette/testing/index.ts:66](https://github.com/Tahul/zidane/blob/main/ui/src/palette/testing/index.ts#L66)
