# zidane-ui/appearance/testing

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

## Functions

### `createFixtureAppearanceHost`

Function.

Creates an [`AppearanceHost`](https://zidane.si/docs/reference/ui-appearance-headless.md#AppearanceHost) held in memory.

```ts
function createFixtureAppearanceHost(
  options?: FixtureAppearanceOptions,
): FixtureAppearanceHost
```

**Parameters**

- `options?` (`FixtureAppearanceOptions`, default `{}`): Stored preferences, extra themes, and which optional members to offer.

**Returns** `FixtureAppearanceHost`

Source: [ui/src/appearance/headless/fixture-host.ts:63](https://github.com/Tahul/zidane/blob/main/ui/src/appearance/headless/fixture-host.ts#L63)

### `memoryStorage`

Function.

A `Storage` double over a `Map`.

```ts
function memoryStorage(): AppearanceStorage & { removeItem(key: string): void }
```

**Returns** `AppearanceStorage & { removeItem(key: string): void }`

Source: [ui/src/appearance/headless/fixture-host.ts:49](https://github.com/Tahul/zidane/blob/main/ui/src/appearance/headless/fixture-host.ts#L49)

## Interfaces

### `FixtureAppearanceControl`

Interface.

What the fixture recorded, and a way to change it from outside.

```ts
interface FixtureAppearanceControl
```

**Properties**

- `boot` (`() => BootSnapshot | null`): The last snapshot written, or `null`.
- `stored` (`() => string | null`): The stored blob, as the storage holds it.
- `storeExternally` (`(raw: string | null) => void`): Another window stored this blob (`null` clears it): the host adopts it and tells subscribers.
- `windowCalls` (`() => readonly FixtureWindowCall[]`): Every window call, in order.

Source: [ui/src/appearance/headless/fixture-host.ts:34](https://github.com/Tahul/zidane/blob/main/ui/src/appearance/headless/fixture-host.ts#L34)

### `FixtureAppearanceOptions`

Interface.

Options of [`createFixtureAppearanceHost`](https://zidane.si/docs/reference/ui-appearance-testing.md#createFixtureAppearanceHost).

```ts
interface FixtureAppearanceOptions
```

**Properties**

- `boot?` (`boolean`): Record the snapshot (`boot`). Default: true.
- `prefs?` (`Partial<AppearanceState>`): Preferences already stored (merged over the defaults). Default: none, a first run.
- `themes?` (`Readonly<Record<string, readonly Theme[]>>`): The extra themes per folder. Default: none (`themes` is left out).
- `window?` (`boolean`): Record window calls (`window`). Default: true.

Source: [ui/src/appearance/headless/fixture-host.ts:16](https://github.com/Tahul/zidane/blob/main/ui/src/appearance/headless/fixture-host.ts#L16)

## Types

### `FixtureAppearanceHost`

Type.

An in-memory [`AppearanceHost`](https://zidane.si/docs/reference/ui-appearance-headless.md#AppearanceHost) and its control.

```ts
type FixtureAppearanceHost = AppearanceHost & { control: FixtureAppearanceControl }
```

Source: [ui/src/appearance/headless/fixture-host.ts:46](https://github.com/Tahul/zidane/blob/main/ui/src/appearance/headless/fixture-host.ts#L46)

### `FixtureWindowCall`

Type.

A window call the fixture recorded.

```ts
type FixtureWindowCall =
  | { color: string; kind: 'background' }
  | { factor: number; kind: 'zoom' }
  | { kind: 'nativeTheme'; mode: AppearanceMode }
```

Source: [ui/src/appearance/headless/fixture-host.ts:28](https://github.com/Tahul/zidane/blob/main/ui/src/appearance/headless/fixture-host.ts#L28)
