@shko.online/componentframework-mock
Version:
Mocking library to help with testing PowerApps Component Framework Components
83 lines (82 loc) • 3.16 kB
TypeScript
/// <reference types="powerapps-component-framework" />
import type { SinonStub } from 'sinon';
import type { ShkoOnline } from '../ShkoOnline';
import type { ContextMock, MockToRaw, PropertyToMock } from '../ComponentFramework-Mock';
import type { MetadataDB } from './Metadata.db';
export type ComponentValues<TInputs extends ShkoOnline.PropertyTypes<TInputs>> = Partial<MockToRaw<TInputs, PropertyToMock<TInputs>>>[Extract<keyof MockToRaw<TInputs, PropertyToMock<TInputs>>, string>];
export interface MockGeneratorOverrides {
metadata?: MetadataDB;
}
export interface MockGenerator<TInputs extends ShkoOnline.PropertyTypes<TInputs>, TOutputs extends ShkoOnline.KnownTypes<TOutputs>> {
_PendingUpdates: {
value: ComponentFramework.LookupValue | ComponentValues<TInputs>;
table: string;
column: string;
row?: string;
}[];
/**
* This method triggers the controls init method
*/
ExecuteInit: () => void;
/**
* Used to refresh the context parameters values from the bound columns in the in-memory database.
*
* This is called internally by the framework at each UpdateView.
*/
RefreshParameters: SinonStub<[
], void>;
/**
* Used to refresh the dataset parameters that might be still loading
*
* This is called internally by the framework at each UpdateView.
*/
RefreshDatasets: SinonStub<[
], void>;
/**
* Sets the Control resource to a specific ResX that will be used to respond
* to {@link ComponentFramework.Resources.getString context.resources.getString() }
*/
SetControlResource: SinonStub<[
/*resource*/ string
], void>;
UpdateValues: SinonStub<[
/*items*/ Partial<MockToRaw<TInputs, PropertyToMock<TInputs>>>
], void>;
/**
* Mocked context that will be passed to the component in the init or update calls.
*/
context: ContextMock<TInputs>;
/**
* In-Memory database for data and metadata
*/
metadata: MetadataDB;
/**
* Mocked notifyOutputChanged that will be passed to the component on init
* and that informs the framework that the component changed the outputs.
*
* Can be used in tests to assert if this method was called.
*/
notifyOutputChanged: SinonStub<[
], void>;
/**
* Will be called by the platform after the output has changed.
*
* You can use this method to be notified by the platform that the outputs have changed.
*/
onOutputChanged: SinonStub<[
/*updates*/ Partial<TOutputs>
], void>;
/**
* Properties defined as output only. Specific any type allowed.
*/
outputOnlyProperties: ShkoOnline.OutputOnlyTypes<TInputs, TOutputs>;
/**
* Will be used by the track container when asked by {@link ComponentFramework.Mode.trackContainerResize}
*/
resizeObserver: ResizeObserver;
/**
* the state object that is passed to the component
*/
state: ComponentFramework.Dictionary;
}
//# sourceMappingURL=MockGenerator.d.ts.map