use the test-subj-selector module

This commit is contained in:
spalger 2015-11-25 12:43:58 -06:00
parent bcea0bb600
commit 95ab8a3e2a
2 changed files with 7 additions and 19 deletions

View file

@ -130,6 +130,7 @@
"whatwg-fetch": "0.9.0"
},
"devDependencies": {
"@spalger/test-subj-selector": "0.2.0",
"Nonsense": "0.1.2",
"angular-mocks": "1.4.7",
"auto-release-sinon": "1.0.3",

View file

@ -1,3 +1,5 @@
var testSubjSelector = require('@spalger/test-subj-selector');
module.exports = function bindToJquery($) {
/**
@ -41,28 +43,13 @@ module.exports = function bindToJquery($) {
*/
$.fn.findTestSubject = findTestSubject;
function findTestSubject(/* ...subjectSelectors */) {
var subjectSelectors = [].slice.apply(arguments);
function findTestSubject(...subjectSelectors) {
var $els = $();
var $context = this;
subjectSelectors.forEach(function (subjectSelector) {
var cssSelectors = [];
var terms = subjectSelector
.replace(/\s*&\s*/g, '&') // remove all whitespace around joins
.split(/\s+/);
function termToCssSelector(term) {
return term ? '[data-test-subj~="' + term + '"]' : '';
}
while (terms.length) {
var term = terms.shift();
// split each term by joins/& and map to css selectors
cssSelectors.push(term.split('&').map(termToCssSelector).join(''));
}
$els = $els.add($context.find(cssSelectors.join(' ')));
testSubjSelector(...subjectSelectors)
.forEach(function (cssSelector) {
$els = $els.add($context.find(cssSelector));
});
return $els;