UNPKG

@openveo/test

Version:
101 lines (89 loc) 2.85 kB
'use strict'; /** * @module e2e/fields/AutoCompleteField */ var util = require('util'); var browserExt = process.requireTest('lib/e2e/browser.js'); var TextField = process.requireTest('lib/e2e/fields/TextField.js'); /** * Defines a form auto complete field. * * Use [Field.get]{@link module:e2e/fields/Field~Field.get} method to get an instance of AutoCompleteField. * * @example * var Field = require('@openveo/test').e2e.fields.Field; * * var AutoCompleteField = Field.get({ * type: 'autoComplete', * name: 'My field', * baseElement: element(by.css('form')) * }); * * @class AutoCompleteField * @extends module:e2e/fields/TextField~TextField * @constructor * @param {Object} conf A field configuration object */ function AutoCompleteField(conf) { AutoCompleteField.super_.call(this, conf); } module.exports = AutoCompleteField; util.inherits(AutoCompleteField, TextField); /** * Validates a suggestion from the list of suggestions. * * @param {String} suggestion The name of the suggestion in the list of suggestions * @return {Promise} Promise resolving when given suggestion has been validated */ AutoCompleteField.prototype.validateSuggestion = function(suggestion) { var deferred = protractor.promise.defer(); var promises = []; var getSuggestion = function(suggestionElement) { return suggestionElement.getText().then(function(text) { return protractor.promise.fulfilled({ element: suggestionElement, text: text }); }); }; this.getElement().then(function(elementFinder) { elementFinder.all(by.css('li > div')).each(function(suggestionElement) { promises.push(getSuggestion(suggestionElement)); }).then(function() { return protractor.promise.all(promises); }).then(function(suggestions) { for (var i = 0; i < suggestions.length; i++) { if (suggestions[i].text === suggestion) { browserExt.click(suggestions[i].element); return deferred.fulfill(); } } deferred.reject(new Error('Suggestion "' + suggestion + '" not found')); }); }); return deferred.promise; }; /** * Gets the list of suggestions. * * @example * myField.getSuggestions().then(function(suggestions) { * console.log(suggestions); * }); * * @return {Promise} Promise resolving to the list of suggestions */ AutoCompleteField.prototype.getSuggestions = function() { var deferred = protractor.promise.defer(); var promises = []; this.getElement().then(function(elementFinder) { elementFinder.all(by.css('li > div')).each(function(suggestionElement) { promises.push(suggestionElement.getText()); }).then(function() { return protractor.promise.all(promises); }).then(function(suggestions) { deferred.fulfill(suggestions); }); }); return deferred.promise; };