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

100% Statements 17/17
60% Branches 6/10
0% Functions 0/3
100% Lines 2/2
12 statements, 6 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                                                                                                                                                                 
/**
 *
 * Select option with a specific index.
 *
 * <example>
    :example.html
    <select id="selectbox">
        <option value="someValue0">uno</option>
        <option value="someValue1">dos</option>
        <option value="someValue2">tres</option>
        <option value="someValue3">cuatro</option>
        <option value="someValue4">cinco</option>
        <option value="someValue5">seis</option>
    </select>
 
    :selectByIndex.js
    client
        .getValue('#selectbox')
        .then(function(value) {
            console.log(value);
            // returns "someValue0"
        })
        .selectByIndex('#selectbox', 4)
        .getValue('#selectbox')
        .then(function(value) {
            console.log(value);
            // returns "someValue4"
        });
 * </example>
 *
 * @param {String} selectElem select element that contains the options
 * @param {Number} index      option index
 *
 * @uses protocol/element, protocol/elementIdElements, protocol/elementIdClick
 * @type action
 *
 */
 
'use strict';
 
Object.defineProperty(exports, '__esModule', {
    value: true
});
 
var _utilsErrorHandler = require('../utils/ErrorHandler');
 
var selectByIndex = function selectByIndex(selectElem, index) {
    // istanbul ignore next
 
    var _this = this;
 
    /*!
     * parameter check
     */
    if (typeof selectElem !== 'string' || typeof index !== 'number') {
        throw new _utilsErrorHandler.CommandError('number or type of arguments don\'t agree with selectByIndex command');
    }

    /*!
     * negative index check
     */
    if (index < 0) {
        throw new _utilsErrorHandler.CommandError('index needs to be 0 or any other positive number');
    }
 
    return this.element(selectElem).then(function (element) {
        return _this.elementIdElements(element.value.ELEMENT, '<option>');
    }).then(function (elements) {
        if (elements.value.length === 0) {
            throw new _utilsErrorHandler.CommandError('select element (' + selectElem + ') doesn\'t contain any option element');
        }
        if (elements.value.length - 1 < index) {
            throw new _utilsErrorHandler.CommandError('option with index "' + index + '" not found. Select element (' + selectElem + ') only contains ' + elements.value.length + ' option elements');
        }
 
        return _this.elementIdClick(elements.value[index].ELEMENT);
    });
};
 
exports['default'] = selectByIndex;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvc2VsZWN0QnlJbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQ0FzQzZCLHVCQUF1Qjs7QUFFcEQsSUFBSSxhQUFhLEdBQUcsU0FBaEIsYUFBYSxDQUFhLFVBQVUsRUFBRSxLQUFLLEVBQUU7Ozs7Ozs7O0FBSTdDLFFBQUksT0FBTyxVQUFVLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3RCxjQUFNLG9DQUFpQixxRUFBcUUsQ0FBQyxDQUFBO0tBQ2hHOzs7OztBQUtELFFBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtBQUNYLGNBQU0sb0NBQWlCLGtEQUFrRCxDQUFDLENBQUE7S0FDN0U7O0FBRUQsV0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUMxQixJQUFJLENBQUMsVUFBQyxPQUFPO2VBQUssTUFBSyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUM7S0FBQSxDQUFDLENBQzVFLElBQUksQ0FBQyxVQUFDLFFBQVEsRUFBSztBQUNoQixZQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUM3QixrQkFBTSx5REFBb0MsVUFBVSwyQ0FBdUMsQ0FBQTtTQUM5RjtBQUNELFlBQUksUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxHQUFHLEtBQUssRUFBRTtBQUNuQyxrQkFBTSw0REFBdUMsS0FBSyxxQ0FBZ0MsVUFBVSx3QkFBbUIsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLHNCQUFtQixDQUFBO1NBQzFKOztBQUVELGVBQU8sTUFBSyxjQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtLQUM1RCxDQUFDLENBQUE7Q0FDVCxDQUFBOztxQkFFYyxhQUFhIiwiZmlsZSI6Ii9Vc2Vycy9jaHJpc3RpYW5icm9tYW5uL1NpdGVzL1dlYnByb2pla3RlL3dlYmRyaXZlcmpzL0RFVi9saWIvY29tbWFuZHMvc2VsZWN0QnlJbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICpcbiAqIFNlbGVjdCBvcHRpb24gd2l0aCBhIHNwZWNpZmljIGluZGV4LlxuICpcbiAqIDxleGFtcGxlPlxuICAgIDpleGFtcGxlLmh0bWxcbiAgICA8c2VsZWN0IGlkPVwic2VsZWN0Ym94XCI+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzb21lVmFsdWUwXCI+dW5vPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzb21lVmFsdWUxXCI+ZG9zPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzb21lVmFsdWUyXCI+dHJlczwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic29tZVZhbHVlM1wiPmN1YXRybzwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uIHZhbHVlPVwic29tZVZhbHVlNFwiPmNpbmNvPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gdmFsdWU9XCJzb21lVmFsdWU1XCI+c2Vpczwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuXG4gICAgOnNlbGVjdEJ5SW5kZXguanNcbiAgICBjbGllbnRcbiAgICAgICAgLmdldFZhbHVlKCcjc2VsZWN0Ym94JylcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgICAgICAgIC8vIHJldHVybnMgXCJzb21lVmFsdWUwXCJcbiAgICAgICAgfSlcbiAgICAgICAgLnNlbGVjdEJ5SW5kZXgoJyNzZWxlY3Rib3gnLCA0KVxuICAgICAgICAuZ2V0VmFsdWUoJyNzZWxlY3Rib3gnKVxuICAgICAgICAudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAgICAgICAgLy8gcmV0dXJucyBcInNvbWVWYWx1ZTRcIlxuICAgICAgICB9KTtcbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VsZWN0RWxlbSBzZWxlY3QgZWxlbWVudCB0aGF0IGNvbnRhaW5zIHRoZSBvcHRpb25zXG4gKiBAcGFyYW0ge051bWJlcn0gaW5kZXggICAgICBvcHRpb24gaW5kZXhcbiAqXG4gKiBAdXNlcyBwcm90b2NvbC9lbGVtZW50LCBwcm90b2NvbC9lbGVtZW50SWRFbGVtZW50cywgcHJvdG9jb2wvZWxlbWVudElkQ2xpY2tcbiAqIEB0eXBlIGFjdGlvblxuICpcbiAqL1xuXG5pbXBvcnQgeyBDb21tYW5kRXJyb3IgfSBmcm9tICcuLi91dGlscy9FcnJvckhhbmRsZXInXG5cbmxldCBzZWxlY3RCeUluZGV4ID0gZnVuY3Rpb24gKHNlbGVjdEVsZW0sIGluZGV4KSB7XG4gICAgLyohXG4gICAgICogcGFyYW1ldGVyIGNoZWNrXG4gICAgICovXG4gICAgaWYgKHR5cGVvZiBzZWxlY3RFbGVtICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgaW5kZXggIT09ICdudW1iZXInKSB7XG4gICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoJ251bWJlciBvciB0eXBlIG9mIGFyZ3VtZW50cyBkb25cXCd0IGFncmVlIHdpdGggc2VsZWN0QnlJbmRleCBjb21tYW5kJylcbiAgICB9XG5cbiAgICAvKiFcbiAgICAgKiBuZWdhdGl2ZSBpbmRleCBjaGVja1xuICAgICAqL1xuICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IENvbW1hbmRFcnJvcignaW5kZXggbmVlZHMgdG8gYmUgMCBvciBhbnkgb3RoZXIgcG9zaXRpdmUgbnVtYmVyJylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5lbGVtZW50KHNlbGVjdEVsZW0pXG4gICAgICAgIC50aGVuKChlbGVtZW50KSA9PiB0aGlzLmVsZW1lbnRJZEVsZW1lbnRzKGVsZW1lbnQudmFsdWUuRUxFTUVOVCwgJzxvcHRpb24+JykpXG4gICAgICAgIC50aGVuKChlbGVtZW50cykgPT4ge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRzLnZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb21tYW5kRXJyb3IoYHNlbGVjdCBlbGVtZW50ICgke3NlbGVjdEVsZW19KSBkb2Vzbid0IGNvbnRhaW4gYW55IG9wdGlvbiBlbGVtZW50YClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbGVtZW50cy52YWx1ZS5sZW5ndGggLSAxIDwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29tbWFuZEVycm9yKGBvcHRpb24gd2l0aCBpbmRleCBcIiR7aW5kZXh9XCIgbm90IGZvdW5kLiBTZWxlY3QgZWxlbWVudCAoJHtzZWxlY3RFbGVtfSkgb25seSBjb250YWlucyAke2VsZW1lbnRzLnZhbHVlLmxlbmd0aH0gb3B0aW9uIGVsZW1lbnRzYClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudElkQ2xpY2soZWxlbWVudHMudmFsdWVbaW5kZXhdLkVMRU1FTlQpXG4gICAgICAgIH0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IHNlbGVjdEJ5SW5kZXhcbiJdfQ==