@shko.online/componentframework-mock
Version:
Mocking library to help with testing PowerApps Component Framework Components
81 lines (80 loc) • 3.14 kB
JavaScript
/*
Copyright (c) 2022 Betim Beja and Shko Online LLC
Licensed under the MIT license.
*/
import { stub } from 'sinon';
import { MetadataDB } from '../ComponentFramework-Mock-Generator';
import { ClientMock } from './Client.mock';
import { CopilotMock } from './Copilot.mock';
import { DeviceMock } from './Device.mock';
import { FactoryMock } from './Factory.mocks';
import { FluentDesignStateMock } from './FluentDesignState.mock';
import { FormattingMock } from './Formatting.mock';
import { ModeMock } from './Mode.mock';
import { NavigationMock } from './Navigation.mock';
import { ResourcesMock } from './Resources.mock';
import { UserSettingsMock } from './UserSettings.mock';
import { UtilityMock } from './Utility.mock';
import { WebApiMock } from './WebApi.mock';
import { EventsBagMock } from './EventsBag.mock';
export class ContextMock {
constructor(inputs, db) {
var _db$getTableMetadata;
this.client = void 0;
this.copilot = void 0;
this.device = void 0;
this.factory = void 0;
this.formatting = void 0;
this.mode = void 0;
this.navigation = void 0;
this.parameters = void 0;
this._parameters = void 0;
this._SetCanvasItems = void 0;
this.resources = void 0;
this.userSettings = void 0;
this.utils = void 0;
this.webAPI = void 0;
this.updatedProperties = void 0;
this.fluentDesignLanguage = void 0;
this.events = void 0;
this.updatedProperties = [];
this.events = new EventsBagMock();
this.client = new ClientMock();
this.copilot = new CopilotMock();
this.device = new DeviceMock();
this.factory = new FactoryMock();
this.formatting = new FormattingMock();
this.fluentDesignLanguage = new FluentDesignStateMock();
this.mode = new ModeMock();
this.navigation = new NavigationMock();
this.parameters = {};
this._parameters = {};
this._SetCanvasItems = stub();
this._SetCanvasItems.callsFake(parameters => {
const mappedParameters = {};
Object.getOwnPropertyNames(this._parameters).forEach(propertyName => {
const parameter = this._parameters[propertyName];
if (propertyName in parameters) {
mappedParameters[parameter._boundColumn] = parameters[propertyName];
}
});
db.initCanvasItems([mappedParameters]);
});
const CanvasEntity = (_db$getTableMetadata = db.getTableMetadata(MetadataDB.CanvasLogicalName)) !== null && _db$getTableMetadata !== void 0 ? _db$getTableMetadata : {
LogicalName: MetadataDB.CanvasLogicalName,
EntitySetName: MetadataDB.CanvasLogicalName,
Attributes: []
};
Object.getOwnPropertyNames(inputs).forEach(propertyName => {
const parameterClass = inputs[propertyName];
const parameter = new parameterClass(propertyName, db, CanvasEntity);
this._parameters[propertyName] = parameter;
this.parameters[propertyName] = parameter;
});
db.initMetadata([CanvasEntity]);
this.resources = new ResourcesMock();
this.userSettings = new UserSettingsMock();
this.utils = new UtilityMock();
this.webAPI = new WebApiMock(db, this.formatting);
}
}