scriptable-testlab
Version:
A lightweight, efficient tool designed to manage and update scripts for Scriptable.
109 lines (85 loc) • 2.43 kB
text/typescript
import {AbsConfig} from 'scriptable-abstract';
import type {WidgetFamily} from '../../types';
export interface ConfigMockState {
widgetFamily: WidgetFamily;
runsInWidget: boolean;
runsInApp: boolean;
runsWithSiri: boolean;
runsInActionExtension: boolean;
runsInNotification: boolean;
runsFromHomeScreen: boolean;
runsInAccessoryWidget: boolean;
}
const DEFAULT_STATE: ConfigMockState = {
widgetFamily: 'small',
runsInWidget: false,
runsInApp: true,
runsWithSiri: false,
runsInActionExtension: false,
runsInNotification: false,
runsFromHomeScreen: false,
runsInAccessoryWidget: false,
};
export class MockConfig extends AbsConfig<ConfigMockState> {
protected static _instance: MockConfig | undefined;
static get instance(): MockConfig {
return super.instance as MockConfig;
}
static reset(): void {
if (this._instance) {
this._instance.setState(DEFAULT_STATE);
}
}
protected constructor() {
super(DEFAULT_STATE);
}
get widgetFamily(): WidgetFamily {
return this.state.widgetFamily;
}
get runsInWidget(): boolean {
return this.state.runsInWidget;
}
get runsInApp(): boolean {
return this.state.runsInApp;
}
get runsWithSiri(): boolean {
return this.state.runsWithSiri;
}
get runsInActionExtension(): boolean {
return this.state.runsInActionExtension;
}
get runsInNotification(): boolean {
return this.state.runsInNotification;
}
get runsFromHomeScreen(): boolean {
return this.state.runsFromHomeScreen;
}
get runsInAccessoryWidget(): boolean {
return this.state.runsInAccessoryWidget;
}
// Testing helpers
setWidgetFamily(family: WidgetFamily): void {
this.setState({widgetFamily: family});
}
setRunsInWidget(value: boolean): void {
this.setState({runsInWidget: value});
}
setRunsInApp(value: boolean): void {
this.setState({runsInApp: value});
}
setRunsWithSiri(value: boolean): void {
this.setState({runsWithSiri: value});
}
setRunsInActionExtension(value: boolean): void {
this.setState({runsInActionExtension: value});
}
setRunsInNotification(value: boolean): void {
this.setState({runsInNotification: value});
}
setRunsFromHomeScreen(value: boolean): void {
this.setState({runsFromHomeScreen: value});
}
setRunsInAccessoryWidget(value: boolean): void {
this.setState({runsInAccessoryWidget: value});
}
}