all files / DEV/lib/commands/ addValue.js

93.33% Statements 28/30
62.5% Branches 10/16
0% Functions 0/2
50% Lines 2/4
23 statements, 10 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103                                                                                                                                                                                                           
/**
 *
 * Add a value to an object found by given selector. You can also use unicode
 * characters like Left arrow or Back space. WebdriverIO will take care of
 * translating them into unicode characters. You’ll find all supported characters
 * [here](https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/element/:id/value).
 * To do that, the value has to correspond to a key from the table.
 *
 * <example>
    :addValue-with-promises.js
    client
        .setValue('.input', 'test')
        .addValue('.input', '123')
        .getValue('.input').then(function(value) {
            assert(err === null);
            assert(value === 'test123'); // true
        });
 
    :addValue-with-callbacks.js
    client
        .setValue('.input', 'test')
        .addValue('.input', '123')
        .getValue('.input').then(function(value) {
            assert(err === null);
            assert(value === 'test123'); // true
        });
 * </example>
 *
 * @param {String}        selector   Input element
 * @param {String|Number} values     value to be added
 *
 * @uses protocol/elements, protocol/elementIdValue
 * @type action
 *
 */
 
'use strict';
 
Object.defineProperty(exports, '__esModule', {
    value: true
});
 
var _utilsErrorHandler = require('../utils/ErrorHandler');

var addValue = function addValue(selector, value) {
    // istanbul ignore next
 
    var _this = this;
 
    /*!
     * parameter check
     */
    if (typeof value === 'number') {
        value = '' + value;
    }
 
    if (typeof value !== 'string' && !Array.isArray(value)) {
        throw new _utilsErrorHandler.CommandError('number or type of arguments don\'t agree with addValue command');
    }
 
    return this.elements(selector).then(function (res) {
        if (!res.value || res.value.length === 0) {
            /*!
             * throw NoSuchElement error if no element was found
             */
            throw new _utilsErrorHandler.CommandError(7);
        }
 
        var self = _this;
        var elementIdValueCommands = [];
 
        var _iteratorNormalCompletion = true;
        var _didIteratorError = false;
        var _iteratorError = undefined;
 
        try {
            for (var _iterator = res.value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
                var elem = _step.value;
 
                elementIdValueCommands.push(self.elementIdValue(elem.ELEMENT, value));
            }
        } catch (err) {
            _didIteratorError = true;
            _iteratorError = err;
        } finally {
            try {
                if (!_iteratorNormalCompletion && _iterator['return']) {
                    _iterator['return']();
                }
            } finally {
                if (_didIteratorError) {
                    throw _iteratorError;
                }
            }
        }
 
        return _this.unify(elementIdValueCommands);
    });
};
 
exports['default'] = addValue;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvYWRkVmFsdWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lDQW9DNkIsdUJBQXVCOztBQUVwRCxJQUFJLFFBQVEsR0FBRyxTQUFYLFFBQVEsQ0FBYSxRQUFRLEVBQUUsS0FBSyxFQUFFOzs7Ozs7OztBQUl0QyxRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUMzQixhQUFLLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQTtLQUNyQjs7QUFFRCxRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDcEQsY0FBTSxvQ0FBaUIsZ0VBQWdFLENBQUMsQ0FBQTtLQUMzRjs7QUFFRCxXQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUMsR0FBRyxFQUFLO0FBQ3pDLFlBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTs7OztBQUl0QyxrQkFBTSxvQ0FBaUIsQ0FBQyxDQUFDLENBQUE7U0FDNUI7O0FBRUQsWUFBSSxJQUFJLFFBQU8sQ0FBQTtBQUNmLFlBQUksc0JBQXNCLEdBQUcsRUFBRSxDQUFBOzs7Ozs7O0FBRS9CLGlDQUFpQixHQUFHLENBQUMsS0FBSyw4SEFBRTtvQkFBbkIsSUFBSTs7QUFDVCxzQ0FBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUE7YUFDeEU7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFRCxlQUFPLE1BQUssS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUE7S0FDNUMsQ0FBQyxDQUFBO0NBQ0wsQ0FBQTs7cUJBRWMsUUFBUSIsImZpbGUiOiIvVXNlcnMvY2hyaXN0aWFuYnJvbWFubi9TaXRlcy9XZWJwcm9qZWt0ZS93ZWJkcml2ZXJqcy9ERVYvbGliL2NvbW1hbmRzL2FkZFZhbHVlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKlxuICogQWRkIGEgdmFsdWUgdG8gYW4gb2JqZWN0IGZvdW5kIGJ5IGdpdmVuIHNlbGVjdG9yLiBZb3UgY2FuIGFsc28gdXNlIHVuaWNvZGVcbiAqIGNoYXJhY3RlcnMgbGlrZSBMZWZ0IGFycm93IG9yIEJhY2sgc3BhY2UuIFdlYmRyaXZlcklPIHdpbGwgdGFrZSBjYXJlIG9mXG4gKiB0cmFuc2xhdGluZyB0aGVtIGludG8gdW5pY29kZSBjaGFyYWN0ZXJzLiBZb3XigJlsbCBmaW5kIGFsbCBzdXBwb3J0ZWQgY2hhcmFjdGVyc1xuICogW2hlcmVdKGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3Avc2VsZW5pdW0vd2lraS9Kc29uV2lyZVByb3RvY29sIy9zZXNzaW9uLzpzZXNzaW9uSWQvZWxlbWVudC86aWQvdmFsdWUpLlxuICogVG8gZG8gdGhhdCwgdGhlIHZhbHVlIGhhcyB0byBjb3JyZXNwb25kIHRvIGEga2V5IGZyb20gdGhlIHRhYmxlLlxuICpcbiAqIDxleGFtcGxlPlxuICAgIDphZGRWYWx1ZS13aXRoLXByb21pc2VzLmpzXG4gICAgY2xpZW50XG4gICAgICAgIC5zZXRWYWx1ZSgnLmlucHV0JywgJ3Rlc3QnKVxuICAgICAgICAuYWRkVmFsdWUoJy5pbnB1dCcsICcxMjMnKVxuICAgICAgICAuZ2V0VmFsdWUoJy5pbnB1dCcpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGFzc2VydChlcnIgPT09IG51bGwpO1xuICAgICAgICAgICAgYXNzZXJ0KHZhbHVlID09PSAndGVzdDEyMycpOyAvLyB0cnVlXG4gICAgICAgIH0pO1xuXG4gICAgOmFkZFZhbHVlLXdpdGgtY2FsbGJhY2tzLmpzXG4gICAgY2xpZW50XG4gICAgICAgIC5zZXRWYWx1ZSgnLmlucHV0JywgJ3Rlc3QnKVxuICAgICAgICAuYWRkVmFsdWUoJy5pbnB1dCcsICcxMjMnKVxuICAgICAgICAuZ2V0VmFsdWUoJy5pbnB1dCcpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGFzc2VydChlcnIgPT09IG51bGwpO1xuICAgICAgICAgICAgYXNzZXJ0KHZhbHVlID09PSAndGVzdDEyMycpOyAvLyB0cnVlXG4gICAgICAgIH0pO1xuICogPC9leGFtcGxlPlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSAgICAgICAgc2VsZWN0b3IgICBJbnB1dCBlbGVtZW50XG4gKiBAcGFyYW0ge1N0cmluZ3xOdW1iZXJ9IHZhbHVlcyAgICAgdmFsdWUgdG8gYmUgYWRkZWRcbiAqXG4gKiBAdXNlcyBwcm90b2NvbC9lbGVtZW50cywgcHJvdG9jb2wvZWxlbWVudElkVmFsdWVcbiAqIEB0eXBlIGFjdGlvblxuICpcbiAqL1xuXG5pbXBvcnQgeyBDb21tYW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXInXG5cbmxldCBhZGRWYWx1ZSA9IGZ1bmN0aW9uIChzZWxlY3RvciwgdmFsdWUpIHtcbiAgICAvKiFcbiAgICAgKiBwYXJhbWV0ZXIgY2hlY2tcbiAgICAgKi9cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgICAgICB2YWx1ZSA9ICcnICsgdmFsdWVcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbW1hbmRFcnJvcignbnVtYmVyIG9yIHR5cGUgb2YgYXJndW1lbnRzIGRvblxcJ3QgYWdyZWUgd2l0aCBhZGRWYWx1ZSBjb21tYW5kJylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5lbGVtZW50cyhzZWxlY3RvcikudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGlmICghcmVzLnZhbHVlIHx8IHJlcy52YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIC8qIVxuICAgICAgICAgICAgICogdGhyb3cgTm9TdWNoRWxlbWVudCBlcnJvciBpZiBubyBlbGVtZW50IHdhcyBmb3VuZFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aHJvdyBuZXcgQ29tbWFuZEVycm9yKDcpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgc2VsZiA9IHRoaXNcbiAgICAgICAgbGV0IGVsZW1lbnRJZFZhbHVlQ29tbWFuZHMgPSBbXVxuXG4gICAgICAgIGZvciAobGV0IGVsZW0gb2YgcmVzLnZhbHVlKSB7XG4gICAgICAgICAgICBlbGVtZW50SWRWYWx1ZUNvbW1hbmRzLnB1c2goc2VsZi5lbGVtZW50SWRWYWx1ZShlbGVtLkVMRU1FTlQsIHZhbHVlKSlcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnVuaWZ5KGVsZW1lbnRJZFZhbHVlQ29tbWFuZHMpXG4gICAgfSlcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWRkVmFsdWVcbiJdfQ==