Files
starface-outlook-sync-addin/node_modules/@fluentui/utilities/lib-commonjs/customizations/Customizer.test.js
T
Stefan Hacker 37ad745546 first commit
2026-04-03 09:38:48 +02:00

156 lines
8.5 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
/* eslint-disable @typescript-eslint/no-deprecated */
var React = require("react");
var react_1 = require("@testing-library/react");
var customizable_1 = require("./customizable");
var Customizer_1 = require("./Customizer");
var Customizations_1 = require("./Customizations");
var Foo = /** @class */ (function (_super) {
tslib_1.__extends(Foo, _super);
function Foo() {
return _super !== null && _super.apply(this, arguments) || this;
}
Foo.prototype.render = function () {
return React.createElement("div", null, this.props.field);
};
Foo = tslib_1.__decorate([
(0, customizable_1.customizable)('Foo', ['field'])
], Foo);
return Foo;
}(React.Component));
var Bar = /** @class */ (function (_super) {
tslib_1.__extends(Bar, _super);
function Bar() {
return _super !== null && _super.apply(this, arguments) || this;
}
Bar.prototype.render = function () {
return (React.createElement("div", null,
this.props.field,
this.props.field2,
this.props.field3));
};
Bar = tslib_1.__decorate([
(0, customizable_1.customizable)('Bar', ['field', 'field2', 'field3'])
], Bar);
return Bar;
}(React.Component));
describe('Customizer', function () {
beforeEach(function () {
Customizations_1.Customizations.reset();
});
it('can provide new defaults', function () {
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { settings: { field: 'customName' } },
React.createElement(Foo, null)));
expect(react_1.screen.getByText('customName')).toBeInTheDocument();
});
it('can pass through global settings', function () {
Customizations_1.Customizations.applySettings({ field: 'globalName' });
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { settings: { nonMatch: 'customName' } },
React.createElement(Foo, null)));
expect(react_1.screen.getByText('globalName')).toBeInTheDocument();
});
it('can override global settings', function () {
Customizations_1.Customizations.applySettings({ field: 'globalName' });
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { settings: { field: 'customName' } },
React.createElement(Foo, null)));
expect(react_1.screen.getByText('customName')).toBeInTheDocument();
});
it('can scope settings to specific components', function () {
var scopedSettings = {
Foo: { field: 'scopedToFoo' },
Bar: { field: 'scopedToBar' },
};
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { scopedSettings: scopedSettings },
React.createElement("div", null,
React.createElement(Foo, null),
React.createElement(Bar, null))));
expect(react_1.screen.getByText('scopedToFoo')).toBeInTheDocument();
expect(react_1.screen.getByText('scopedToBar')).toBeInTheDocument();
});
it('can layer global settings', function () {
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { settings: { field: 'field' } },
React.createElement(Customizer_1.Customizer, { settings: { field2: 'field2' } },
React.createElement(Bar, null))));
expect(react_1.screen.getByText('fieldfield2')).toBeInTheDocument();
});
it('can layer scoped settings', function () {
Customizations_1.Customizations.applySettings({ field3: 'field3' });
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { scopedSettings: { Bar: { field: 'field', field2: 'oldfield2' } } },
React.createElement(Customizer_1.Customizer, { scopedSettings: { Bar: { field2: 'field2' } } },
React.createElement(Bar, null))));
expect(react_1.screen.getByText('fieldfield2field3')).toBeInTheDocument();
});
it('can layer scoped settings with scopedSettingsFunction', function () {
Customizations_1.Customizations.applySettings({ field3: 'field3' });
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { scopedSettings: { Bar: { field: 'field' } } },
React.createElement(Customizer_1.Customizer, { scopedSettings: function (scopedSettings) { return ({
Bar: tslib_1.__assign(tslib_1.__assign({}, scopedSettings.Bar), { field2: 'field2' }),
}); } },
React.createElement(Bar, null))));
expect(react_1.screen.getByText('fieldfield2field3')).toBeInTheDocument();
});
it('it allows scopedSettings to be merged when a function is passed', function () {
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { scopedSettings: { Foo: { field: 'scopedToFoo' } } },
React.createElement(Customizer_1.Customizer, { scopedSettings: function (settings) { return (tslib_1.__assign(tslib_1.__assign({}, settings), { Bar: { field: 'scopedToBar' } })); } },
React.createElement("div", null,
React.createElement(Foo, null),
React.createElement(Bar, null)))));
expect(react_1.screen.getByText('scopedToFoo')).toBeInTheDocument();
expect(react_1.screen.getByText('scopedToBar')).toBeInTheDocument();
});
it('overrides previously set settings', function () {
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { settings: { field: 'field1' } },
React.createElement(Customizer_1.Customizer, { settings: { field: 'field2' } },
React.createElement(Bar, null))));
expect(react_1.screen.getByText('field2')).toBeInTheDocument();
});
it('overrides the old settings when the parameter is ignored', function () {
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { settings: { field: 'field1' } },
React.createElement(Customizer_1.Customizer, { settings: function (settings) { return ({ field: 'field2' }); } },
React.createElement(Bar, null))));
expect(react_1.screen.getByText('field2')).toBeInTheDocument();
});
it('can use a function to merge settings', function () {
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { settings: { field: 'field1' } },
React.createElement(Customizer_1.Customizer, { settings: function (settings) { return ({ field: settings.field + 'field2' }); } },
React.createElement(Bar, null))));
expect(react_1.screen.getByText('field1field2')).toBeInTheDocument();
});
it('can suppress updates', function () {
Customizations_1.Customizations.applySettings({ field: 'globalName' });
(0, react_1.render)(React.createElement(Customizer_1.Customizer, { settings: { nonMatch: 'customName' } },
React.createElement(Bar, null)));
// verify base state
expect(react_1.screen.getByText('globalName')).toBeInTheDocument();
(0, react_1.act)(function () {
// verify it doesn't update during suppressUpdates(), and it works through errors, and it updates after
Customizations_1.Customizations.applyBatchedUpdates(function () {
Customizations_1.Customizations.applySettings({ field: 'notGlobalName' });
// it should not update inside
expect(react_1.screen.getByText('globalName')).toBeInTheDocument();
throw new Error();
});
});
// afterwards it should have updated
expect(react_1.screen.getByText('notGlobalName')).toBeInTheDocument();
(0, react_1.act)(function () {
// verify it doesn't update during suppressUpdates(), works through errors, and can suppress final update
Customizations_1.Customizations.applyBatchedUpdates(function () {
Customizations_1.Customizations.applySettings({ field: 'notUpdated' });
// it should not update inside
expect(react_1.screen.getByText('notGlobalName')).toBeInTheDocument();
throw new Error();
}, true);
});
// afterwards, it should still be on the old value
expect(react_1.screen.getByText('notGlobalName')).toBeInTheDocument();
// verify it updates after suppressUpdates()
(0, react_1.act)(function () {
Customizations_1.Customizations.applySettings({ field2: 'lastGlobalName' });
});
expect(react_1.screen.getByText('notUpdatedlastGlobalName')).toBeInTheDocument();
});
});
//# sourceMappingURL=Customizer.test.js.map