UNPKG

@shko.online/componentframework-mock

Version:

Mocking library to help with testing PowerApps Component Framework Components

80 lines (78 loc) 3.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ComponentFrameworkMockGeneratorReact = void 0; var _react = require("react"); var _sinon = require("sinon"); var _ComponentFrameworkMock = require("../ComponentFramework-Mock"); var _Metadata = require("./Metadata.db"); var _ReactResizeObserver = require("./ReactResizeObserver"); var _utils = require("../utils"); var _mockGetEntityMetadata = require("./mockGetEntityMetadata"); var _mockSetControlState = require("./mockSetControlState"); var _mockSetControlResource = require("./mockSetControlResource"); var _mockRefreshParameters = require("./mockRefreshParameters"); /* Copyright (c) 2022 Betim Beja and Shko Online LLC Licensed under the MIT license. */ class ComponentFrameworkMockGeneratorReact { constructor(control, inputs, outputs, overrides) { this._PendingUpdates = void 0; this.RefreshParameters = void 0; this.RefreshDatasets = void 0; this.UpdateValues = void 0; this.context = void 0; this.control = void 0; this.notifyOutputChanged = void 0; this.onOutputChanged = void 0; this.outputOnlyProperties = void 0; this.resizeObserver = void 0; this.state = void 0; this.SetControlResource = void 0; this.metadata = void 0; this.circuitBreaker = false; (0, _utils.showBanner)(control.name); this._PendingUpdates = []; this.state = {}; this.outputOnlyProperties = {}; this.control = (0, _sinon.spy)(new control()); this.metadata = overrides?.metadata ?? new _Metadata.MetadataDB(); this.context = new _ComponentFrameworkMock.ContextMock(inputs, this.metadata); const inputProperties = Object.getOwnPropertyNames(this.context._parameters); if (outputs) { Object.getOwnPropertyNames(outputs).forEach(p => { if (inputProperties.includes(p)) { return; } this.outputOnlyProperties[p] = outputs[p]; }); } (0, _mockGetEntityMetadata.mockGetEntityMetadata)(this); this.UpdateValues = (0, _sinon.stub)(); this.notifyOutputChanged = (0, _sinon.stub)(); // Mocked in ReactResizeObserver this.onOutputChanged = (0, _sinon.stub)(); this.resizeObserver = new ResizeObserver(() => undefined); // Defined in ReactResizeObserver this.RefreshParameters = (0, _sinon.stub)(); (0, _mockRefreshParameters.mockRefreshParameters)(this); this.RefreshDatasets = (0, _sinon.stub)(); this.SetControlResource = (0, _sinon.stub)(); (0, _mockSetControlResource.mockSetControlResource)(this); (0, _mockSetControlState.mockSetControlState)(this); } ExecuteInit() { this.RefreshParameters(); const state = this.state === undefined ? this.state : Object.assign({}, this.state); this.control.init(this.context, this.notifyOutputChanged, state); } ExecuteUpdateView() { this.RefreshParameters(); this.circuitBreaker = !this.circuitBreaker; return /*#__PURE__*/(0, _react.createElement)(_ReactResizeObserver.ReactResizeObserver, { componentFrameworkMockGeneratorReact: this, circuitBreaker: this.circuitBreaker }); } } exports.ComponentFrameworkMockGeneratorReact = ComponentFrameworkMockGeneratorReact;