mockCondition
Stable · since 0.1.0
A method on the TestRuntime returned by createTestRuntime. Registers a condition for a trigger, accepting either a static value or a zero-argument getter.
mockCondition is the test-time equivalent of useCondition — same registration mechanism, no React.
Import
Section titled “Import”import { createTestRuntime } from '@triggery/testing';
const rt = createTestRuntime();
rt.mockCondition(/* ... */);Signature
Section titled “Signature”mockCondition<S extends TriggerSchema, K extends ConditionKey<S>>(
trigger: Trigger<S>,
name: K,
valueOrGetter: ConditionMap<S>[K] | (() => ConditionMap<S>[K]),
): RegistrationToken;Parameters
Section titled “Parameters”| Param | Type | Description |
|---|---|---|
trigger | Trigger<S> | The trigger whose condition you’re stubbing. |
name | K extends ConditionKey<S> | A condition declared in the trigger’s schema. |
valueOrGetter | T | (() => T) | Either a static value (closed over) or a zero-arity getter. |
Returns
Section titled “Returns”A RegistrationToken with { unregister(): void }. Call unregister() to drop the mock — useful for mid-test condition changes.
Examples
Section titled “Examples”Static value
Section titled “Static value”import { createTrigger function createTrigger<S extends TriggerSchema>(config: CreateTriggerConfig<S>, runtime?: Runtime): Trigger<S>Create a trigger and register it in a runtime (the default runtime if none is passed). } from '@triggery/core';
import { createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime } from '@triggery/testing';
const rt const rt: TestRuntime = createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime ();
const t const t: Trigger<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>
= createTrigger createTrigger<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>(config: CreateTriggerConfig<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>, runtime?: Runtime): Trigger<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>
Create a trigger and register it in a runtime (the default runtime if none is passed). <{
events events: {
ping: void;
}
: { ping ping: void : void };
conditions conditions: {
user: {
id: string;
} | null;
}
: { user user: {
id: string;
} | null
: { id id: string : string } | null };
}>(
{
id id: string : 'demo',
events events: readonly "ping"[] : ['ping'],
handler handler: TriggerHandler<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}, never>
() {},
},
rt const rt: TestRuntime ,
);
rt const rt: TestRuntime .mockCondition mockCondition<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}, "user">(trigger: Trigger<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>, name: "user", valueOrGetter: {
id: string;
} | (() => {
id: string;
} | null) | null): RegistrationToken
Register a condition for a trigger.
Accepts either a static value or a zero-argument getter. When the
condition's value type is itself a zero-argument function, pass an
explicit getter so the runtime knows which one you mean — otherwise the
heuristic below would call your value as if it were the getter. (t const t: Trigger<{
events: {
ping: void;
};
conditions: {
user: {
id: string;
} | null;
};
}>
, 'user', { id id: string : 'u-1' });Dynamic getter (read fresh state each fire)
Section titled “Dynamic getter (read fresh state each fire)”import { createTrigger function createTrigger<S extends TriggerSchema>(config: CreateTriggerConfig<S>, runtime?: Runtime): Trigger<S>Create a trigger and register it in a runtime (the default runtime if none is passed). } from '@triggery/core';
import { createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime } from '@triggery/testing';
const rt const rt: TestRuntime = createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime ();
const t const t: Trigger<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>
= createTrigger createTrigger<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>(config: CreateTriggerConfig<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>, runtime?: Runtime): Trigger<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>
Create a trigger and register it in a runtime (the default runtime if none is passed). <{
events events: {
tick: void;
}
: { tick tick: void : void };
conditions conditions: {
counter: number;
}
: { counter counter: number : number };
}>(
{
id id: string : 'demo',
events events: readonly "tick"[] : ['tick'],
handler handler: TriggerHandler<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}, never>
() {},
},
rt const rt: TestRuntime ,
);
let counter let counter: number = 0;
rt const rt: TestRuntime .mockCondition mockCondition<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}, "counter">(trigger: Trigger<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>, name: "counter", valueOrGetter: number | (() => number)): RegistrationToken
Register a condition for a trigger.
Accepts either a static value or a zero-argument getter. When the
condition's value type is itself a zero-argument function, pass an
explicit getter so the runtime knows which one you mean — otherwise the
heuristic below would call your value as if it were the getter. (t const t: Trigger<{
events: {
tick: void;
};
conditions: {
counter: number;
};
}>
, 'counter', () => counter let counter: number );
rt const rt: TestRuntime .fireSync function fireSync(eventName: string, payload?: unknown): voidRun dispatch synchronously (for tests and benchmarks). ('tick'); // handler sees counter=0
counter let counter: number = 5;
rt const rt: TestRuntime .fireSync function fireSync(eventName: string, payload?: unknown): voidRun dispatch synchronously (for tests and benchmarks). ('tick'); // handler sees counter=5Mid-test swap
Section titled “Mid-test swap”import { createTrigger function createTrigger<S extends TriggerSchema>(config: CreateTriggerConfig<S>, runtime?: Runtime): Trigger<S>Create a trigger and register it in a runtime (the default runtime if none is passed). } from '@triggery/core';
import { createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime } from '@triggery/testing';
const rt const rt: TestRuntime = createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime ();
const t const t: Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>
= createTrigger createTrigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>(config: CreateTriggerConfig<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>, runtime?: Runtime): Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>
Create a trigger and register it in a runtime (the default runtime if none is passed). <{
events events: {
ping: void;
}
: { ping ping: void : void };
conditions conditions: {
flag: boolean;
}
: { flag flag: boolean : boolean };
}>(
{ id id: string : 'demo', events events: readonly "ping"[] : ['ping'], handler handler: TriggerHandler<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}, never>
() {} },
rt const rt: TestRuntime ,
);
const off const off: RegistrationToken = rt const rt: TestRuntime .mockCondition mockCondition<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}, "flag">(trigger: Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>, name: "flag", valueOrGetter: boolean | (() => boolean)): RegistrationToken
Register a condition for a trigger.
Accepts either a static value or a zero-argument getter. When the
condition's value type is itself a zero-argument function, pass an
explicit getter so the runtime knows which one you mean — otherwise the
heuristic below would call your value as if it were the getter. (t const t: Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>
, 'flag', true);
rt const rt: TestRuntime .fireSync function fireSync(eventName: string, payload?: unknown): voidRun dispatch synchronously (for tests and benchmarks). ('ping'); // handler sees flag=true
off const off: RegistrationToken .unregister function unregister(): voidIdempotent unregister. ();
rt const rt: TestRuntime .mockCondition mockCondition<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}, "flag">(trigger: Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>, name: "flag", valueOrGetter: boolean | (() => boolean)): RegistrationToken
Register a condition for a trigger.
Accepts either a static value or a zero-argument getter. When the
condition's value type is itself a zero-argument function, pass an
explicit getter so the runtime knows which one you mean — otherwise the
heuristic below would call your value as if it were the getter. (t const t: Trigger<{
events: {
ping: void;
};
conditions: {
flag: boolean;
};
}>
, 'flag', false);
rt const rt: TestRuntime .fireSync function fireSync(eventName: string, payload?: unknown): voidRun dispatch synchronously (for tests and benchmarks). ('ping'); // handler sees flag=falseFunction-typed condition needs explicit getter
Section titled “Function-typed condition needs explicit getter”When the condition value is itself a function with zero arguments, the heuristic can mis-detect it as a getter. Pass an explicit getter:
import { createTrigger function createTrigger<S extends TriggerSchema>(config: CreateTriggerConfig<S>, runtime?: Runtime): Trigger<S>Create a trigger and register it in a runtime (the default runtime if none is passed). } from '@triggery/core';
import { createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime } from '@triggery/testing';
const rt const rt: TestRuntime = createTestRuntime function createTestRuntime(options?: TestRuntimeOptions): TestRuntime ();
type Callback type Callback = () => void = () => void;
const t const t: Trigger<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>
= createTrigger createTrigger<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>(config: CreateTriggerConfig<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>, runtime?: Runtime): Trigger<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>
Create a trigger and register it in a runtime (the default runtime if none is passed). <{
events events: {
ping: void;
}
: { ping ping: void : void };
conditions conditions: {
onTick: Callback;
}
: { onTick onTick: Callback : Callback type Callback = () => void };
}>(
{ id id: string : 'demo', events events: readonly "ping"[] : ['ping'], handler handler: TriggerHandler<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}, never>
() {} },
rt const rt: TestRuntime ,
);
const cb const cb: Callback : Callback type Callback = () => void = () => console var console: Console .log Console.log(...data: any[]): voidThe **`console.log()`** static method outputs a message to the console.
[MDN Reference](https://developer.mozilla.org/docs/Web/API/console/log_static) ('tick');
// Wrap in a getter so the runtime stores `cb`, not the result of calling cb.
rt const rt: TestRuntime .mockCondition mockCondition<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}, "onTick">(trigger: Trigger<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>, name: "onTick", valueOrGetter: Callback | (() => Callback)): RegistrationToken
Register a condition for a trigger.
Accepts either a static value or a zero-argument getter. When the
condition's value type is itself a zero-argument function, pass an
explicit getter so the runtime knows which one you mean — otherwise the
heuristic below would call your value as if it were the getter. (t const t: Trigger<{
events: {
ping: void;
};
conditions: {
onTick: Callback;
};
}>
, 'onTick', () => cb const cb: Callback );Related
Section titled “Related” createTestRuntime The runtime that exposes this method.
mockAction Stub an action — the other half of test wiring.
useCondition Runtime equivalent in React.
Testing guide Trigger-first test patterns.