UNPKG

scriptable-testlab

Version:

A lightweight, efficient tool designed to manage and update scripts for Scriptable.

109 lines (85 loc) 2.43 kB
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}); } }