aboutsummaryrefslogtreecommitdiff
path: root/node_modules/selenium-webdriver/test/lib/capabilities_test.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/selenium-webdriver/test/lib/capabilities_test.js')
-rw-r--r--node_modules/selenium-webdriver/test/lib/capabilities_test.js111
1 files changed, 111 insertions, 0 deletions
diff --git a/node_modules/selenium-webdriver/test/lib/capabilities_test.js b/node_modules/selenium-webdriver/test/lib/capabilities_test.js
new file mode 100644
index 000000000..0d0c67c9a
--- /dev/null
+++ b/node_modules/selenium-webdriver/test/lib/capabilities_test.js
@@ -0,0 +1,111 @@
+// Licensed to the Software Freedom Conservancy (SFC) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The SFC licenses this file
+// to you 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.
+
+'use strict';
+
+const Capabilities = require('../../lib/capabilities').Capabilities;
+const Symbols = require('../../lib/symbols');
+
+const assert = require('assert');
+
+describe('Capabilities', function() {
+ it('can set and unset a capability', function() {
+ let caps = new Capabilities();
+ assert.equal(undefined, caps.get('foo'));
+ assert.ok(!caps.has('foo'));
+
+ caps.set('foo', 'bar');
+ assert.equal('bar', caps.get('foo'));
+ assert.ok(caps.has('foo'));
+
+ caps.set('foo', null);
+ assert.equal(null, caps.get('foo'));
+ assert.ok(caps.has('foo'));
+ });
+
+ it('requires string capability keys', function() {
+ let caps = new Capabilities();
+ assert.throws(() => caps.set({}, 'hi'));
+ });
+
+ it('can merge capabilities', function() {
+ let caps1 = new Capabilities()
+ .set('foo', 'bar')
+ .set('color', 'red');
+
+ let caps2 = new Capabilities()
+ .set('color', 'green');
+
+ assert.equal('bar', caps1.get('foo'));
+ assert.equal('red', caps1.get('color'));
+ assert.equal('green', caps2.get('color'));
+ assert.equal(undefined, caps2.get('foo'));
+
+ caps2.merge(caps1);
+ assert.equal('bar', caps1.get('foo'));
+ assert.equal('red', caps1.get('color'));
+ assert.equal('red', caps2.get('color'));
+ assert.equal('bar', caps2.get('foo'));
+ });
+
+ it('can be initialized from a hash object', function() {
+ let caps = new Capabilities({'one': 123, 'abc': 'def'});
+ assert.equal(123, caps.get('one'));
+ assert.equal('def', caps.get('abc'));
+ });
+
+ it('can be initialized from a map', function() {
+ let m = new Map([['one', 123], ['abc', 'def']]);
+
+ let caps = new Capabilities(m);
+ assert.equal(123, caps.get('one'));
+ assert.equal('def', caps.get('abc'));
+ });
+
+ describe('serialize', function() {
+ it('works for simple capabilities', function() {
+ let m = new Map([['one', 123], ['abc', 'def']]);
+ let caps = new Capabilities(m);
+ assert.deepEqual({one: 123, abc: 'def'}, caps[Symbols.serialize]());
+ });
+
+ it('does not omit capabilities set to a false-like value', function() {
+ let caps = new Capabilities;
+ caps.set('bool', false);
+ caps.set('number', 0);
+ caps.set('string', '');
+
+ assert.deepEqual(
+ {bool: false, number: 0, string: ''},
+ caps[Symbols.serialize]());
+ });
+
+ it('omits capabilities with a null value', function() {
+ let caps = new Capabilities;
+ caps.set('foo', null);
+ caps.set('bar', 123);
+ assert.deepEqual({bar: 123}, caps[Symbols.serialize]());
+ });
+
+ it('omits capabilities with an undefined value', function() {
+ let caps = new Capabilities;
+ caps.set('foo', undefined);
+ caps.set('bar', 123);
+ assert.deepEqual({bar: 123}, caps[Symbols.serialize]());
+ });
+ });
+});