diff options
Diffstat (limited to 'test/test-profile-conditions-util.js')
| -rw-r--r-- | test/test-profile-conditions-util.js | 1136 | 
1 files changed, 0 insertions, 1136 deletions
diff --git a/test/test-profile-conditions-util.js b/test/test-profile-conditions-util.js deleted file mode 100644 index 2e6f751f..00000000 --- a/test/test-profile-conditions-util.js +++ /dev/null @@ -1,1136 +0,0 @@ -/* - * Copyright (C) 2023  Yomitan Authors - * Copyright (C) 2020-2022  Yomichan Authors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program.  If not, see <https://www.gnu.org/licenses/>. - */ - -const assert = require('assert'); -const {testMain} = require('../dev/util'); -const {VM} = require('../dev/vm'); - - -const vm = new VM({}); -vm.execute([ -    'js/core.js', -    'js/core/extension-error.js', -    'js/general/cache-map.js', -    'js/data/json-schema.js', -    'js/background/profile-conditions-util.js' -]); -/** @type {typeof ProfileConditionsUtil} */ -const ProfileConditionsUtil2 = vm.getSingle('ProfileConditionsUtil'); - - -/** */ -function testNormalizeContext() { -    /** @type {{context: import('settings').OptionsContext, expected: import('profile-conditions-util').NormalizedOptionsContext}[]} */ -    const data = [ -        // Empty -        { -            context: {index: 0}, -            expected: {index: 0, flags: []} -        }, - -        // Domain normalization -        { -            context: {depth: 0, url: ''}, -            expected: {depth: 0, url: '', flags: []} -        }, -        { -            context: {depth: 0, url: 'http://example.com/'}, -            expected: {depth: 0, url: 'http://example.com/', domain: 'example.com', flags: []} -        }, -        { -            context: {depth: 0, url: 'http://example.com:1234/'}, -            expected: {depth: 0, url: 'http://example.com:1234/', domain: 'example.com', flags: []} -        }, -        { -            context: {depth: 0, url: 'http://user@example.com:1234/'}, -            expected: {depth: 0, url: 'http://user@example.com:1234/', domain: 'example.com', flags: []} -        } -    ]; - -    for (const {context, expected} of data) { -        const profileConditionsUtil = new ProfileConditionsUtil2(); -        const actual = profileConditionsUtil.normalizeContext(context); -        vm.assert.deepStrictEqual(actual, expected); -    } -} - -/** */ -function testSchemas() { -    /** @type {{conditionGroups: import('settings').ProfileConditionGroup[], expectedSchema?: import('json-schema').Schema, inputs?: {expected: boolean, context: import('settings').OptionsContext}[]}[]} */ -    const data = [ -        // Empty -        { -            conditionGroups: [], -            expectedSchema: {}, -            inputs: [ -                {expected: true, context: {depth: 0, url: 'http://example.com/'}} -            ] -        }, -        { -            conditionGroups: [ -                {conditions: []} -            ], -            expectedSchema: {}, -            inputs: [ -                {expected: true, context: {depth: 0, url: 'http://example.com/'}} -            ] -        }, -        { -            conditionGroups: [ -                {conditions: []}, -                {conditions: []} -            ], -            expectedSchema: {}, -            inputs: [ -                {expected: true, context: {depth: 0, url: 'http://example.com/'}} -            ] -        }, - -        // popupLevel tests -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'equal', -                            value: '0' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    depth: {const: 0} -                }, -                required: ['depth'] -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/'}}, -                {expected: false, context: {depth: 1, url: 'http://example.com/'}}, -                {expected: false, context: {depth: -1, url: 'http://example.com/'}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'notEqual', -                            value: '0' -                        } -                    ] -                } -            ], -            expectedSchema: { -                not: { -                    anyOf: [ -                        { -                            properties: { -                                depth: {const: 0} -                            }, -                            required: ['depth'] -                        } -                    ] -                } -            }, -            inputs: [ -                {expected: false, context: {depth: 0, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 1, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: -1, url: 'http://example.com/'}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'lessThan', -                            value: '0' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    depth: { -                        type: 'number', -                        exclusiveMaximum: 0 -                    } -                }, -                required: ['depth'] -            }, -            inputs: [ -                {expected: false, context: {depth: 0, url: 'http://example.com/'}}, -                {expected: false, context: {depth: 1, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: -1, url: 'http://example.com/'}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'greaterThan', -                            value: '0' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    depth: { -                        type: 'number', -                        exclusiveMinimum: 0 -                    } -                }, -                required: ['depth'] -            }, -            inputs: [ -                {expected: false, context: {depth: 0, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 1, url: 'http://example.com/'}}, -                {expected: false, context: {depth: -1, url: 'http://example.com/'}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'lessThanOrEqual', -                            value: '0' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    depth: { -                        type: 'number', -                        maximum: 0 -                    } -                }, -                required: ['depth'] -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/'}}, -                {expected: false, context: {depth: 1, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: -1, url: 'http://example.com/'}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'greaterThanOrEqual', -                            value: '0' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    depth: { -                        type: 'number', -                        minimum: 0 -                    } -                }, -                required: ['depth'] -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 1, url: 'http://example.com/'}}, -                {expected: false, context: {depth: -1, url: 'http://example.com/'}} -            ] -        }, - -        // url tests -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'url', -                            operator: 'matchDomain', -                            value: 'example.com' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    domain: { -                        oneOf: [ -                            {const: 'example.com'} -                        ] -                    } -                }, -                required: ['domain'] -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/'}}, -                {expected: false, context: {depth: 0, url: 'http://example1.com/'}}, -                {expected: false, context: {depth: 0, url: 'http://example2.com/'}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com:1234/'}}, -                {expected: true,  context: {depth: 0, url: 'http://user@example.com:1234/'}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'url', -                            operator: 'matchDomain', -                            value: 'example.com, example1.com, example2.com' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    domain: { -                        oneOf: [ -                            {const: 'example.com'}, -                            {const: 'example1.com'}, -                            {const: 'example2.com'} -                        ] -                    } -                }, -                required: ['domain'] -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 0, url: 'http://example1.com/'}}, -                {expected: true,  context: {depth: 0, url: 'http://example2.com/'}}, -                {expected: false, context: {depth: 0, url: 'http://example3.com/'}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com:1234/'}}, -                {expected: true,  context: {depth: 0, url: 'http://user@example.com:1234/'}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'url', -                            operator: 'matchRegExp', -                            value: '^http://example\\d?\\.com/[\\w\\W]*$' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    url: { -                        type: 'string', -                        pattern: '^http://example\\d?\\.com/[\\w\\W]*$', -                        patternFlags: 'i' -                    } -                }, -                required: ['url'] -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 0, url: 'http://example1.com/'}}, -                {expected: true,  context: {depth: 0, url: 'http://example2.com/'}}, -                {expected: true,  context: {depth: 0, url: 'http://example3.com/'}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/example'}}, -                {expected: false, context: {depth: 0, url: 'http://example.com:1234/'}}, -                {expected: false, context: {depth: 0, url: 'http://user@example.com:1234/'}}, -                {expected: false, context: {depth: 0, url: 'http://example-1.com/'}} -            ] -        }, - -        // modifierKeys tests -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'modifierKeys', -                            operator: 'are', -                            value: '' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    modifierKeys: { -                        type: 'array', -                        maxItems: 0, -                        minItems: 0 -                    } -                }, -                required: ['modifierKeys'] -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: []}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt']}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift']}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift', 'ctrl']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'modifierKeys', -                            operator: 'are', -                            value: 'alt, shift' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    modifierKeys: { -                        type: 'array', -                        maxItems: 2, -                        minItems: 2, -                        allOf: [ -                            {contains: {const: 'alt'}}, -                            {contains: {const: 'shift'}} -                        ] -                    } -                }, -                required: ['modifierKeys'] -            }, -            inputs: [ -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: []}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt']}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift']}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift', 'ctrl']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'modifierKeys', -                            operator: 'areNot', -                            value: '' -                        } -                    ] -                } -            ], -            expectedSchema: { -                not: { -                    anyOf: [ -                        { -                            properties: { -                                modifierKeys: { -                                    type: 'array', -                                    maxItems: 0, -                                    minItems: 0 -                                } -                            }, -                            required: ['modifierKeys'] -                        } -                    ] -                } -            }, -            inputs: [ -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: []}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt']}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift']}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift', 'ctrl']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'modifierKeys', -                            operator: 'areNot', -                            value: 'alt, shift' -                        } -                    ] -                } -            ], -            expectedSchema: { -                not: { -                    anyOf: [ -                        { -                            properties: { -                                modifierKeys: { -                                    type: 'array', -                                    maxItems: 2, -                                    minItems: 2, -                                    allOf: [ -                                        {contains: {const: 'alt'}}, -                                        {contains: {const: 'shift'}} -                                    ] -                                } -                            }, -                            required: ['modifierKeys'] -                        } -                    ] -                } -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: []}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt']}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift']}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift', 'ctrl']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'modifierKeys', -                            operator: 'include', -                            value: '' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    modifierKeys: { -                        type: 'array', -                        minItems: 0 -                    } -                }, -                required: ['modifierKeys'] -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: []}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt']}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift']}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift', 'ctrl']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'modifierKeys', -                            operator: 'include', -                            value: 'alt, shift' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    modifierKeys: { -                        type: 'array', -                        minItems: 2, -                        allOf: [ -                            {contains: {const: 'alt'}}, -                            {contains: {const: 'shift'}} -                        ] -                    } -                }, -                required: ['modifierKeys'] -            }, -            inputs: [ -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: []}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt']}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift']}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift', 'ctrl']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'modifierKeys', -                            operator: 'notInclude', -                            value: '' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    modifierKeys: { -                        type: 'array' -                    } -                }, -                required: ['modifierKeys'] -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: []}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt']}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift']}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift', 'ctrl']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'modifierKeys', -                            operator: 'notInclude', -                            value: 'alt, shift' -                        } -                    ] -                } -            ], -            expectedSchema: { -                properties: { -                    modifierKeys: { -                        type: 'array', -                        not: { -                            anyOf: [ -                                {contains: {const: 'alt'}}, -                                {contains: {const: 'shift'}} -                            ] -                        } -                    } -                }, -                required: ['modifierKeys'] -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: 'http://example.com/', modifierKeys: []}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt']}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift']}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/', modifierKeys: ['alt', 'shift', 'ctrl']}} -            ] -        }, - -        // flags tests -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'flags', -                            operator: 'are', -                            value: '' -                        } -                    ] -                } -            ], -            expectedSchema: { -                required: ['flags'], -                properties: { -                    flags: { -                        type: 'array', -                        maxItems: 0, -                        minItems: 0 -                    } -                } -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: ''}}, -                {expected: true,  context: {depth: 0, url: '', flags: []}}, -                {expected: false, context: {depth: 0, url: '', flags: ['clipboard']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: false, context: {depth: 0, url: '', flags: ['clipboard', 'test2']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: false, context: {depth: 0, url: '', flags: ['clipboard', 'test2', 'test3']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'flags', -                            operator: 'are', -                            value: 'clipboard, test2' -                        } -                    ] -                } -            ], -            expectedSchema: { -                required: ['flags'], -                properties: { -                    flags: { -                        type: 'array', -                        maxItems: 2, -                        minItems: 2, -                        allOf: [ -                            {contains: {const: 'clipboard'}}, -                            {contains: {const: 'test2'}} -                        ] -                    } -                } -            }, -            inputs: [ -                {expected: false, context: {depth: 0, url: ''}}, -                {expected: false, context: {depth: 0, url: '', flags: []}}, -                {expected: false, context: {depth: 0, url: '', flags: ['clipboard']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard', 'test2']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: false, context: {depth: 0, url: '', flags: ['clipboard', 'test2', 'test3']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'flags', -                            operator: 'areNot', -                            value: '' -                        } -                    ] -                } -            ], -            expectedSchema: { -                not: { -                    anyOf: [ -                        { -                            required: ['flags'], -                            properties: { -                                flags: { -                                    type: 'array', -                                    maxItems: 0, -                                    minItems: 0 -                                } -                            } -                        } -                    ] -                } -            }, -            inputs: [ -                {expected: false, context: {depth: 0, url: ''}}, -                {expected: false, context: {depth: 0, url: '', flags: []}}, -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard', 'test2']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard', 'test2', 'test3']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'flags', -                            operator: 'areNot', -                            value: 'clipboard, test2' -                        } -                    ] -                } -            ], -            expectedSchema: { -                not: { -                    anyOf: [ -                        { -                            required: ['flags'], -                            properties: { -                                flags: { -                                    type: 'array', -                                    maxItems: 2, -                                    minItems: 2, -                                    allOf: [ -                                        {contains: {const: 'clipboard'}}, -                                        {contains: {const: 'test2'}} -                                    ] -                                } -                            } -                        } -                    ] -                } -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: ''}}, -                {expected: true,  context: {depth: 0, url: '', flags: []}}, -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: false, context: {depth: 0, url: '', flags: ['clipboard', 'test2']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard', 'test2', 'test3']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'flags', -                            operator: 'include', -                            value: '' -                        } -                    ] -                } -            ], -            expectedSchema: { -                required: ['flags'], -                properties: { -                    flags: { -                        type: 'array', -                        minItems: 0 -                    } -                } -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: ''}}, -                {expected: true,  context: {depth: 0, url: '', flags: []}}, -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard', 'test2']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard', 'test2', 'test3']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'flags', -                            operator: 'include', -                            value: 'clipboard, test2' -                        } -                    ] -                } -            ], -            expectedSchema: { -                required: ['flags'], -                properties: { -                    flags: { -                        type: 'array', -                        minItems: 2, -                        allOf: [ -                            {contains: {const: 'clipboard'}}, -                            {contains: {const: 'test2'}} -                        ] -                    } -                } -            }, -            inputs: [ -                {expected: false, context: {depth: 0, url: ''}}, -                {expected: false, context: {depth: 0, url: '', flags: []}}, -                {expected: false, context: {depth: 0, url: '', flags: ['clipboard']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard', 'test2']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard', 'test2', 'test3']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'flags', -                            operator: 'notInclude', -                            value: '' -                        } -                    ] -                } -            ], -            expectedSchema: { -                required: ['flags'], -                properties: { -                    flags: { -                        type: 'array' -                    } -                } -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: ''}}, -                {expected: true,  context: {depth: 0, url: '', flags: []}}, -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard', 'test2']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: true,  context: {depth: 0, url: '', flags: ['clipboard', 'test2', 'test3']}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'flags', -                            operator: 'notInclude', -                            value: 'clipboard, test2' -                        } -                    ] -                } -            ], -            expectedSchema: { -                required: ['flags'], -                properties: { -                    flags: { -                        type: 'array', -                        not: { -                            anyOf: [ -                                {contains: {const: 'clipboard'}}, -                                {contains: {const: 'test2'}} -                            ] -                        } -                    } -                } -            }, -            inputs: [ -                {expected: true,  context: {depth: 0, url: ''}}, -                {expected: true,  context: {depth: 0, url: '', flags: []}}, -                {expected: false, context: {depth: 0, url: '', flags: ['clipboard']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: false, context: {depth: 0, url: '', flags: ['clipboard', 'test2']}}, -                // @ts-ignore - Ignore type for string flag for testing purposes -                {expected: false, context: {depth: 0, url: '', flags: ['clipboard', 'test2', 'test3']}} -            ] -        }, - -        // Multiple conditions tests -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'greaterThan', -                            value: '0' -                        }, -                        { -                            type: 'popupLevel', -                            operator: 'lessThan', -                            value: '3' -                        } -                    ] -                } -            ], -            expectedSchema: { -                allOf: [ -                    { -                        properties: { -                            depth: { -                                type: 'number', -                                exclusiveMinimum: 0 -                            } -                        }, -                        required: ['depth'] -                    }, -                    { -                        properties: { -                            depth: { -                                type: 'number', -                                exclusiveMaximum: 3 -                            } -                        }, -                        required: ['depth'] -                    } -                ] -            }, -            inputs: [ -                {expected: false, context: {depth: -2, url: 'http://example.com/'}}, -                {expected: false, context: {depth: -1, url: 'http://example.com/'}}, -                {expected: false, context: {depth: 0, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 1, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 2, url: 'http://example.com/'}}, -                {expected: false, context: {depth: 3, url: 'http://example.com/'}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'greaterThan', -                            value: '0' -                        }, -                        { -                            type: 'popupLevel', -                            operator: 'lessThan', -                            value: '3' -                        } -                    ] -                }, -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'equal', -                            value: '0' -                        } -                    ] -                } -            ], -            expectedSchema: { -                anyOf: [ -                    { -                        allOf: [ -                            { -                                properties: { -                                    depth: { -                                        type: 'number', -                                        exclusiveMinimum: 0 -                                    } -                                }, -                                required: ['depth'] -                            }, -                            { -                                properties: { -                                    depth: { -                                        type: 'number', -                                        exclusiveMaximum: 3 -                                    } -                                }, -                                required: ['depth'] -                            } -                        ] -                    }, -                    { -                        properties: { -                            depth: {const: 0} -                        }, -                        required: ['depth'] -                    } -                ] -            }, -            inputs: [ -                {expected: false, context: {depth: -2, url: 'http://example.com/'}}, -                {expected: false, context: {depth: -1, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 1, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 2, url: 'http://example.com/'}}, -                {expected: false, context: {depth: 3, url: 'http://example.com/'}} -            ] -        }, -        { -            conditionGroups: [ -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'greaterThan', -                            value: '0' -                        }, -                        { -                            type: 'popupLevel', -                            operator: 'lessThan', -                            value: '3' -                        } -                    ] -                }, -                { -                    conditions: [ -                        { -                            type: 'popupLevel', -                            operator: 'lessThanOrEqual', -                            value: '0' -                        }, -                        { -                            type: 'popupLevel', -                            operator: 'greaterThanOrEqual', -                            value: '-1' -                        } -                    ] -                } -            ], -            expectedSchema: { -                anyOf: [ -                    { -                        allOf: [ -                            { -                                properties: { -                                    depth: { -                                        type: 'number', -                                        exclusiveMinimum: 0 -                                    } -                                }, -                                required: ['depth'] -                            }, -                            { -                                properties: { -                                    depth: { -                                        type: 'number', -                                        exclusiveMaximum: 3 -                                    } -                                }, -                                required: ['depth'] -                            } -                        ] -                    }, -                    { -                        allOf: [ -                            { -                                properties: { -                                    depth: { -                                        type: 'number', -                                        maximum: 0 -                                    } -                                }, -                                required: ['depth'] -                            }, -                            { -                                properties: { -                                    depth: { -                                        type: 'number', -                                        minimum: -1 -                                    } -                                }, -                                required: ['depth'] -                            } -                        ] -                    } -                ] -            }, -            inputs: [ -                {expected: false, context: {depth: -2, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: -1, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 0, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 1, url: 'http://example.com/'}}, -                {expected: true,  context: {depth: 2, url: 'http://example.com/'}}, -                {expected: false, context: {depth: 3, url: 'http://example.com/'}} -            ] -        } -    ]; - -    for (const {conditionGroups, expectedSchema, inputs} of data) { -        const profileConditionsUtil = new ProfileConditionsUtil2(); -        const schema = profileConditionsUtil.createSchema(conditionGroups); -        if (typeof expectedSchema !== 'undefined') { -            vm.assert.deepStrictEqual(schema.schema, expectedSchema); -        } -        if (Array.isArray(inputs)) { -            for (const {expected, context} of inputs) { -                const normalizedContext = profileConditionsUtil.normalizeContext(context); -                const actual = schema.isValid(normalizedContext); -                assert.strictEqual(actual, expected); -            } -        } -    } -} - - -/** */ -function main() { -    testNormalizeContext(); -    testSchemas(); -} - - -if (require.main === module) { testMain(main); }  |