add follow tests
This commit is contained in:
parent
d4d54ca496
commit
c50f463bc1
3 changed files with 35 additions and 1 deletions
|
@ -105,6 +105,20 @@ export default class Follow {
|
||||||
}
|
}
|
||||||
|
|
||||||
static getTargetElements(doc) {
|
static getTargetElements(doc) {
|
||||||
return doc.querySelectorAll('a')
|
let all = doc.querySelectorAll('a');
|
||||||
|
let filtered = Array.prototype.filter.call(all, (e) => {
|
||||||
|
return Follow.isVisibleElement(e);
|
||||||
|
});
|
||||||
|
return filtered;
|
||||||
|
}
|
||||||
|
|
||||||
|
static isVisibleElement(element) {
|
||||||
|
var style = window.getComputedStyle(element);
|
||||||
|
if (style.display === 'none') {
|
||||||
|
return false;
|
||||||
|
} else if (style.visibility === 'hidden') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
9
test/content/follow.html
Normal file
9
test/content/follow.html
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<body>
|
||||||
|
<a href='#' >link</a>
|
||||||
|
<a href='#' style='display:none'>invisible 1</a>
|
||||||
|
<a href='#' style='visibility:hidden'>invisible 2</a>
|
||||||
|
<i>not link<i>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -11,4 +11,15 @@ describe('Follow class', () => {
|
||||||
expect(Follow.codeChars([])).to.be.equal('');
|
expect(Follow.codeChars([])).to.be.equal('');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('#getTargetElements', () => {
|
||||||
|
beforeEach(() => {
|
||||||
|
document.body.innerHTML = __html__['test/content/follow.html'];
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns visible links', () => {
|
||||||
|
let links = Follow.getTargetElements(window.document);
|
||||||
|
expect(links).to.have.lengthOf(1);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Reference in a new issue