69 lines
2 KiB
JavaScript
69 lines
2 KiB
JavaScript
import { expect } from '@open-wc/testing';
|
|
import { isEqualConfig } from '../../src/utils/is-equal-config.js';
|
|
|
|
function TestConfig() {
|
|
return {
|
|
placementMode: /** @type {'local'|'global'} */ ('local'),
|
|
hidesOnOutsideClick: true,
|
|
popperConfig: {
|
|
modifiers: [
|
|
{
|
|
name: 'offset',
|
|
enabled: false,
|
|
},
|
|
],
|
|
},
|
|
};
|
|
}
|
|
|
|
/** Used for detecting if it's safe to disregard OverlayConfig changes with equal value. */
|
|
describe('isEqualConfig()', () => {
|
|
it('returns true for same reference', () => {
|
|
const config = TestConfig();
|
|
expect(isEqualConfig(config, config)).eql(true);
|
|
});
|
|
|
|
it('compares shallow props', () => {
|
|
const config = TestConfig();
|
|
expect(isEqualConfig(config, { ...config })).eql(true);
|
|
const differentConfig = { ...config, hidesOnOutsideClick: !config.hidesOnOutsideClick };
|
|
expect(isEqualConfig(config, differentConfig)).eql(false);
|
|
});
|
|
|
|
it('compares prop count', () => {
|
|
const config = TestConfig();
|
|
expect(isEqualConfig(config, { ...config, isBlocking: true })).eql(false);
|
|
expect(isEqualConfig({ ...config, isBlocking: true }, config)).eql(false);
|
|
});
|
|
|
|
it('regards missing props different from ones with undefined value', () => {
|
|
const config = TestConfig();
|
|
expect(isEqualConfig(config, { ...config, referenceNode: undefined })).eql(false);
|
|
});
|
|
|
|
it('compares nested props', () => {
|
|
const config = TestConfig();
|
|
const sameConfig = {
|
|
...config,
|
|
popperConfig: {
|
|
...config.popperConfig,
|
|
modifiers: [...config.popperConfig.modifiers],
|
|
},
|
|
};
|
|
expect(isEqualConfig(config, sameConfig)).eql(true);
|
|
const differentConfig = {
|
|
...config,
|
|
popperConfig: {
|
|
...config.popperConfig,
|
|
modifiers: [
|
|
...config.popperConfig.modifiers,
|
|
{
|
|
name: 'offset',
|
|
enabled: !config.popperConfig.modifiers.find(mod => mod.name === 'offset')?.enabled,
|
|
},
|
|
],
|
|
},
|
|
};
|
|
expect(isEqualConfig(config, differentConfig)).eql(false);
|
|
});
|
|
});
|