UNPKG

@shko.online/componentframework-mock

Version:

Mocking library to help with testing PowerApps Component Framework Components

81 lines (80 loc) 3.14 kB
/* 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); } }