From 5062c4267f1d63d6f962f312a22f798c5835c6d2 Mon Sep 17 00:00:00 2001 From: Michael Solati Date: Fri, 28 Jan 2022 08:24:01 -0800 Subject: [PATCH] test(feature-query): add test for `feature-query.js` --- tests/lib/feature-query.js | 71 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 tests/lib/feature-query.js diff --git a/tests/lib/feature-query.js b/tests/lib/feature-query.js new file mode 100644 index 0000000..7d69430 --- /dev/null +++ b/tests/lib/feature-query.js @@ -0,0 +1,71 @@ +/** + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import test from 'ava'; +import { FeatureQuery } from '../../tools/lib/feature-query.js'; + +test('FeatureQuery.mergeComplexFeature', (t) => { + const fq = new FeatureQuery({}); + let mcf; + + // If all dependencie match, then super.mergeComplexFeature returns dependencies + mcf = fq.mergeComplexFeature([{}, {}]); + t.deepEqual(mcf, { dependencies: [] }); + + // If all dependencie don't equal the first, then super.mergeComplexFeature returns undefined + mcf = fq.mergeComplexFeature([ + { disallow_for_service_workers: false }, + { disallow_for_service_workers: true }, + ]); + t.deepEqual(mcf, undefined); +}); + +test('FeatureQuery.filter', (t) => { + const fq = new FeatureQuery({}); + let f; + + // If `allowlist` length is greater than `0` return `false` + f = fq.filter({ allowlist: ['allowed'] }); + t.is(f, false); + + // If `command_line_switch` is defined return `false` + f = fq.filter({ command_line_switch: 'switch' }); + t.is(f, false); + + // If `session_types` length is greater than `0` don't return `false` (currently this is a passthrough) + f = fq.filter({ session_types: ['kiosk'] }); + t.is(f, true); + + // If `session_types` exists and includes `'regular'` don't return `false` (currently this is a passthrough) + f = fq.filter({ session_types: ['regular'] }); + t.is(f, true); + + // If `matches` length is greater than `0` return `false` + f = fq.filter({ matches: [''] }); + t.is(f, false); + + // If `matches` exists and includes `''` don't return `false` + f = fq.filter({ matches: [''] }); + t.is(f, true); + + // If `extension_types` exists and includes `'extension'` or `'platform_app'` return `true` + f = fq.filter({ extension_types: ['extension', 'platform_app'] }); + t.is(f, true); + + // If `extension_types` exists and does not include `'extension'` or `'platform_app'` return `false` + f = fq.filter({ extension_types: ['hosted_app'] }); + t.is(f, false); +}); \ No newline at end of file