aboutsummaryrefslogtreecommitdiff
path: root/test/content/components/common
diff options
context:
space:
mode:
Diffstat (limited to 'test/content/components/common')
-rw-r--r--test/content/components/common/follow.html12
-rw-r--r--test/content/components/common/follow.test.js21
-rw-r--r--test/content/components/common/hint.html1
-rw-r--r--test/content/components/common/hint.test.js58
4 files changed, 92 insertions, 0 deletions
diff --git a/test/content/components/common/follow.html b/test/content/components/common/follow.html
new file mode 100644
index 0000000..eb0decd
--- /dev/null
+++ b/test/content/components/common/follow.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+ <body>
+ <a id='visible_a' href='#' >link</a>
+ <a href='#' style='display:none'>invisible 1</a>
+ <a href='#' style='visibility:hidden'>invisible 2</a>
+ <i>not link<i>
+ <div id='editable_div_1' contenteditable>link</div>
+ <div id='editable_div_2' contenteditable='true'>link</div>
+ <div id='x' contenteditable='false'>link</div>
+ </body>
+</html>
diff --git a/test/content/components/common/follow.test.js b/test/content/components/common/follow.test.js
new file mode 100644
index 0000000..1fc935e
--- /dev/null
+++ b/test/content/components/common/follow.test.js
@@ -0,0 +1,21 @@
+import { expect } from "chai";
+import FollowComponent from 'content/components/common/follow';
+
+describe('FollowComponent', () => {
+ describe('#getTargetElements', () => {
+ beforeEach(() => {
+ document.body.innerHTML = __html__['test/content/components/common/follow.html'];
+ });
+
+ it('returns visible links', () => {
+ let targets = FollowComponent.getTargetElements(
+ window,
+ { width: window.innerWidth, height: window.innerHeight },
+ { x: 0, y: 0 });
+ expect(targets).to.have.lengthOf(3);
+
+ let ids = Array.prototype.map.call(targets, (e) => e.id);
+ expect(ids).to.include.members(['visible_a', 'editable_div_1', 'editable_div_2']);
+ });
+ });
+});
diff --git a/test/content/components/common/hint.html b/test/content/components/common/hint.html
new file mode 100644
index 0000000..b50c5fe
--- /dev/null
+++ b/test/content/components/common/hint.html
@@ -0,0 +1 @@
+<a id='test-link' href='javascript:window.vimvixenTest="hello"' >link</a>
diff --git a/test/content/components/common/hint.test.js b/test/content/components/common/hint.test.js
new file mode 100644
index 0000000..ced2fde
--- /dev/null
+++ b/test/content/components/common/hint.test.js
@@ -0,0 +1,58 @@
+import { expect } from "chai";
+import Hint from 'content/components/common/hint';
+
+describe('Hint class', () => {
+ beforeEach(() => {
+ document.body.innerHTML = __html__['test/content/components/common/hint.html'];
+ });
+
+ describe('#constructor', () => {
+ it('creates a hint element with tag name', () => {
+ let link = document.getElementById('test-link');
+ let hint = new Hint(link, 'abc');
+ expect(hint.element.textContent.trim()).to.be.equal('abc');
+ });
+
+ it('throws an exception when non-element given', () => {
+ expect(() => new Hint(window, 'abc')).to.throw(TypeError);
+ });
+ });
+
+ describe('#show', () => {
+ it('shows an element', () => {
+ let link = document.getElementById('test-link');
+ let hint = new Hint(link, 'abc');
+ hint.hide();
+ hint.show();
+
+ expect(hint.element.style.display).to.not.equal('none');
+ });
+ });
+
+ describe('#hide', () => {
+ it('hides an element', () => {
+ let link = document.getElementById('test-link');
+ let hint = new Hint(link, 'abc');
+ hint.hide();
+
+ expect(hint.element.style.display).to.equal('none');
+ });
+ });
+
+ describe('#remove', () => {
+ it('removes an element', () => {
+ let link = document.getElementById('test-link');
+ let hint = new Hint(link, 'abc');
+
+ expect(hint.element.parentElement).to.not.be.null;
+ hint.remove();
+ expect(hint.element.parentElement).to.be.null;
+ });
+ });
+
+ describe('#activate', () => {
+ // TODO test activations
+ });
+});
+
+