aboutsummaryrefslogtreecommitdiff
path: root/test/content/presenters
diff options
context:
space:
mode:
Diffstat (limited to 'test/content/presenters')
-rw-r--r--test/content/presenters/Hint.test.ts134
-rw-r--r--test/content/presenters/NavigationPresenter.test.ts276
2 files changed, 233 insertions, 177 deletions
diff --git a/test/content/presenters/Hint.test.ts b/test/content/presenters/Hint.test.ts
index 7daa63d..f961f88 100644
--- a/test/content/presenters/Hint.test.ts
+++ b/test/content/presenters/Hint.test.ts
@@ -1,53 +1,55 @@
-import AbstractHint, { LinkHint, InputHint } from '../../../src/content/presenters/Hint';
-import { expect } from 'chai';
+import AbstractHint, {
+ LinkHint,
+ InputHint,
+} from "../../../src/content/presenters/Hint";
+import { expect } from "chai";
-class Hint extends AbstractHint {
-}
+class Hint extends AbstractHint {}
-describe('Hint', () => {
+describe("Hint", () => {
beforeEach(() => {
document.body.innerHTML = `<a id='test-link' href='#'>link</a>`;
});
- describe('#constructor', () => {
- it('creates a hint element with tag name', () => {
- const link = document.getElementById('test-link');
- new Hint(link, 'abc');
+ describe("#constructor", () => {
+ it("creates a hint element with tag name", () => {
+ const link = document.getElementById("test-link")!!;
+ new Hint(link, "abc");
- const elem = document.querySelector('.vimvixen-hint');
- expect(elem.textContent.trim()).to.be.equal('abc');
+ const elem = document.querySelector(".vimvixen-hint");
+ expect(elem!!.textContent!!.trim()).to.be.equal("abc");
});
});
- describe('#show', () => {
- it('shows an element', () => {
- const link = document.getElementById('test-link');
- const hint = new Hint(link, 'abc');
+ describe("#show", () => {
+ it("shows an element", () => {
+ const link = document.getElementById("test-link")!!;
+ const hint = new Hint(link, "abc");
hint.hide();
hint.show();
- const elem = document.querySelector('.vimvixen-hint') as HTMLElement;
- expect(elem.style.display).to.not.equal('none');
+ const elem = document.querySelector(".vimvixen-hint") as HTMLElement;
+ expect(elem.style.display).to.not.equal("none");
});
});
- describe('#hide', () => {
- it('hides an element', () => {
- const link = document.getElementById('test-link') as HTMLElement;
- const hint = new Hint(link, 'abc');
+ describe("#hide", () => {
+ it("hides an element", () => {
+ const link = document.getElementById("test-link") as HTMLElement;
+ const hint = new Hint(link, "abc");
hint.hide();
- const elem = document.querySelector('.vimvixen-hint') as HTMLElement;
- expect(elem.style.display).to.equal('none');
+ const elem = document.querySelector(".vimvixen-hint") as HTMLElement;
+ expect(elem.style.display).to.equal("none");
});
});
- describe('#remove', () => {
- it('removes an element', () => {
- const link = document.getElementById('test-link');
- const hint = new Hint(link, 'abc');
+ describe("#remove", () => {
+ it("removes an element", () => {
+ const link = document.getElementById("test-link")!!;
+ const hint = new Hint(link, "abc");
- const elem = document.querySelector('.vimvixen-hint');
+ const elem = document.querySelector(".vimvixen-hint")!!;
expect(elem.parentElement).to.not.be.null;
hint.remove();
expect(elem.parentElement).to.be.null;
@@ -55,7 +57,7 @@ describe('Hint', () => {
});
});
-describe('LinkHint', () => {
+describe("LinkHint", () => {
beforeEach(() => {
document.body.innerHTML = `
<a id='test-link1' href='https://google.com/'>link</a>
@@ -64,50 +66,52 @@ describe('LinkHint', () => {
`;
});
- describe('#getLink()', () => {
+ describe("#getLink()", () => {
it('returns value of "href" attribute', () => {
- const link = document.getElementById('test-link1') as HTMLAnchorElement;
- const hint = new LinkHint(link, 'abc');
+ const link = document.getElementById("test-link1") as HTMLAnchorElement;
+ const hint = new LinkHint(link, "abc");
- expect(hint.getLink()).to.equal('https://google.com/');
+ expect(hint.getLink()).to.equal("https://google.com/");
});
});
- describe('#getLinkTarget()', () => {
+ describe("#getLinkTarget()", () => {
it('returns value of "target" attribute', () => {
- let link = document.getElementById('test-link1') as HTMLAnchorElement;
- let hint = new LinkHint(link, 'abc');
+ let link = document.getElementById("test-link1") as HTMLAnchorElement;
+ let hint = new LinkHint(link, "abc");
expect(hint.getLinkTarget()).to.be.null;
- link = document.getElementById('test-link2') as HTMLAnchorElement;
- hint = new LinkHint(link, 'abc');
+ link = document.getElementById("test-link2") as HTMLAnchorElement;
+ hint = new LinkHint(link, "abc");
- expect(hint.getLinkTarget()).to.equal('_blank');
+ expect(hint.getLinkTarget()).to.equal("_blank");
});
});
- describe('#click()', () => {
- it('clicks a element', (done) => {
- const link = document.getElementById('test-link3') as HTMLAnchorElement;
- const hint = new LinkHint(link, 'abc');
- link.onclick = () => { done() };
+ describe("#click()", () => {
+ it("clicks a element", (done) => {
+ const link = document.getElementById("test-link3") as HTMLAnchorElement;
+ const hint = new LinkHint(link, "abc");
+ link.onclick = () => {
+ done();
+ };
hint.click();
});
});
});
-describe('InputHint', () => {
- describe('#activate()', () => {
- context('<input>', () => {
+describe("InputHint", () => {
+ describe("#activate()", () => {
+ context("<input>", () => {
beforeEach(() => {
document.body.innerHTML = `<input id='test-input'></input>`;
});
- it('focuses to the input', () => {
- const input = document.getElementById('test-input') as HTMLInputElement;
- const hint = new InputHint(input, 'abc');
+ it("focuses to the input", () => {
+ const input = document.getElementById("test-input") as HTMLInputElement;
+ const hint = new InputHint(input, "abc");
hint.activate();
expect(document.activeElement).to.equal(input);
@@ -119,38 +123,44 @@ describe('InputHint', () => {
document.body.innerHTML = `<input type="checkbox" id='test-input'></input>`;
});
- it('checks and focuses to the input', () => {
- const input = document.getElementById('test-input') as HTMLInputElement;
- const hint = new InputHint(input, 'abc');
+ it("checks and focuses to the input", () => {
+ const input = document.getElementById("test-input") as HTMLInputElement;
+ const hint = new InputHint(input, "abc");
hint.activate();
expect(input.checked).to.be.true;
});
});
- context('<textarea>', () => {
+ context("<textarea>", () => {
beforeEach(() => {
document.body.innerHTML = `<textarea id='test-textarea'></textarea>`;
});
- it('focuses to the textarea', () => {
- const textarea = document.getElementById('test-textarea') as HTMLTextAreaElement;
- const hint = new InputHint(textarea, 'abc');
+ it("focuses to the textarea", () => {
+ const textarea = document.getElementById(
+ "test-textarea"
+ ) as HTMLTextAreaElement;
+ const hint = new InputHint(textarea, "abc");
hint.activate();
expect(document.activeElement).to.equal(textarea);
});
});
- context('<button>', () => {
+ context("<button>", () => {
beforeEach(() => {
document.body.innerHTML = `<button id='test-button'></button>`;
});
- it('clicks the button', (done) => {
- const button = document.getElementById('test-button') as HTMLButtonElement;
- button.onclick = () => { done() };
+ it("clicks the button", (done) => {
+ const button = document.getElementById(
+ "test-button"
+ ) as HTMLButtonElement;
+ button.onclick = () => {
+ done();
+ };
- const hint = new InputHint(button, 'abc');
+ const hint = new InputHint(button, "abc");
hint.activate();
});
});
diff --git a/test/content/presenters/NavigationPresenter.test.ts b/test/content/presenters/NavigationPresenter.test.ts
index 6aa057b..af3b487 100644
--- a/test/content/presenters/NavigationPresenter.test.ts
+++ b/test/content/presenters/NavigationPresenter.test.ts
@@ -1,11 +1,12 @@
-import { NavigationPresenterImpl } from '../../../src/content/presenters/NavigationPresenter';
-import { expect } from 'chai';
+import { NavigationPresenterImpl } from "../../../src/content/presenters/NavigationPresenter";
+import { expect } from "chai";
-describe('NavigationPresenterImpl', () => {
+describe("NavigationPresenterImpl", () => {
let sut: NavigationPresenterImpl;
- const testRel = (done, rel, html) => {
- const method = rel === 'prev' ? sut.openLinkPrev.bind(sut) : sut.openLinkNext.bind(sut);
+ const testRel = (done: () => void, rel: string, html: string) => {
+ const method =
+ rel === "prev" ? sut.openLinkPrev.bind(sut) : sut.openLinkNext.bind(sut);
document.body.innerHTML = html;
method();
setTimeout(() => {
@@ -13,122 +14,167 @@ describe('NavigationPresenterImpl', () => {
done();
}, 0);
};
- const testPrev = html => done => testRel(done, 'prev', html);
- const testNext = html => done => testRel(done, 'next', html);
+ const testPrev = (html: string) => (done: () => void) =>
+ testRel(done, "prev", html);
+ const testNext = (html: string) => (done: () => void) =>
+ testRel(done, "next", html);
before(() => {
sut = new NavigationPresenterImpl();
});
- describe('#linkPrev', () => {
- it('navigates to <link> elements whose rel attribute is "prev"', testPrev(
- '<link rel="prev" href="#prev" />'
- ));
-
- it('navigates to <link> elements whose rel attribute starts with "prev"', testPrev(
- '<link rel="prev bar" href="#prev" />'
- ));
-
- it('navigates to <link> elements whose rel attribute ends with "prev"', testPrev(
- '<link rel="foo prev" href="#prev" />'
- ));
-
- it('navigates to <link> elements whose rel attribute contains "prev"', testPrev(
- '<link rel="foo prev bar" href="#prev" />'
- ));
-
- it('navigates to <a> elements whose rel attribute is "prev"', testPrev(
- '<a rel="prev" href="#prev">click me</a>'
- ));
-
- it('navigates to <a> elements whose rel attribute starts with "prev"', testPrev(
- '<a rel="prev bar" href="#prev">click me</a>'
- ));
-
- it('navigates to <a> elements whose rel attribute ends with "prev"', testPrev(
- '<a rel="foo prev" href="#prev">click me</a>'
- ));
-
- it('navigates to <a> elements whose rel attribute contains "prev"', testPrev(
- '<a rel="foo prev bar" href="#prev">click me</a>'
- ));
-
- it('navigates to <a> elements whose text matches "prev"', testPrev(
- '<a href="#dummy">preview</a><a href="#prev">go to prev</a>'
- ));
-
- it('navigates to <a> elements whose text matches "previous"', testPrev(
- '<a href="#dummy">previously</a><a href="#prev">previous page</a>'
- ));
-
- it('navigates to <a> elements whose decoded text matches "<<"', testPrev(
- '<a href="#dummy">click me</a><a href="#prev">&lt;&lt;</a>'
- ));
-
- it('navigates to matching <a> elements by clicking', testPrev(
- `<a rel="prev" href="#dummy" onclick="return location = '#prev', false">go to prev</a>`
- ));
-
- it('prefers link[rel~=prev] to a[rel~=prev]', testPrev(
- '<a rel="prev" href="#dummy">click me</a><link rel="prev" href="#prev" />'
- ));
-
- it('prefers a[rel~=prev] to a::text(pattern)', testPrev(
- '<a href="#dummy">go to prev</a><a rel="prev" href="#prev">click me</a>'
- ));
+ describe("#linkPrev", () => {
+ it(
+ 'navigates to <link> elements whose rel attribute is "prev"',
+ testPrev('<link rel="prev" href="#prev" />')
+ );
+
+ it(
+ 'navigates to <link> elements whose rel attribute starts with "prev"',
+ testPrev('<link rel="prev bar" href="#prev" />')
+ );
+
+ it(
+ 'navigates to <link> elements whose rel attribute ends with "prev"',
+ testPrev('<link rel="foo prev" href="#prev" />')
+ );
+
+ it(
+ 'navigates to <link> elements whose rel attribute contains "prev"',
+ testPrev('<link rel="foo prev bar" href="#prev" />')
+ );
+
+ it(
+ 'navigates to <a> elements whose rel attribute is "prev"',
+ testPrev('<a rel="prev" href="#prev">click me</a>')
+ );
+
+ it(
+ 'navigates to <a> elements whose rel attribute starts with "prev"',
+ testPrev('<a rel="prev bar" href="#prev">click me</a>')
+ );
+
+ it(
+ 'navigates to <a> elements whose rel attribute ends with "prev"',
+ testPrev('<a rel="foo prev" href="#prev">click me</a>')
+ );
+
+ it(
+ 'navigates to <a> elements whose rel attribute contains "prev"',
+ testPrev('<a rel="foo prev bar" href="#prev">click me</a>')
+ );
+
+ it(
+ 'navigates to <a> elements whose text matches "prev"',
+ testPrev('<a href="#dummy">preview</a><a href="#prev">go to prev</a>')
+ );
+
+ it(
+ 'navigates to <a> elements whose text matches "previous"',
+ testPrev(
+ '<a href="#dummy">previously</a><a href="#prev">previous page</a>'
+ )
+ );
+
+ it(
+ 'navigates to <a> elements whose decoded text matches "<<"',
+ testPrev('<a href="#dummy">click me</a><a href="#prev">&lt;&lt;</a>')
+ );
+
+ it(
+ "navigates to matching <a> elements by clicking",
+ testPrev(
+ `<a rel="prev" href="#dummy" onclick="return location = '#prev', false">go to prev</a>`
+ )
+ );
+
+ it(
+ "prefers link[rel~=prev] to a[rel~=prev]",
+ testPrev(
+ '<a rel="prev" href="#dummy">click me</a><link rel="prev" href="#prev" />'
+ )
+ );
+
+ it(
+ "prefers a[rel~=prev] to a::text(pattern)",
+ testPrev(
+ '<a href="#dummy">go to prev</a><a rel="prev" href="#prev">click me</a>'
+ )
+ );
});
- describe('#linkNext', () => {
- it('navigates to <link> elements whose rel attribute is "next"', testNext(
- '<link rel="next" href="#next" />'
- ));
-
- it('navigates to <link> elements whose rel attribute starts with "next"', testNext(
- '<link rel="next bar" href="#next" />'
- ));
-
- it('navigates to <link> elements whose rel attribute ends with "next"', testNext(
- '<link rel="foo next" href="#next" />'
- ));
-
- it('navigates to <link> elements whose rel attribute contains "next"', testNext(
- '<link rel="foo next bar" href="#next" />'
- ));
-
- it('navigates to <a> elements whose rel attribute is "next"', testNext(
- '<a rel="next" href="#next">click me</a>'
- ));
-
- it('navigates to <a> elements whose rel attribute starts with "next"', testNext(
- '<a rel="next bar" href="#next">click me</a>'
- ));
-
- it('navigates to <a> elements whose rel attribute ends with "next"', testNext(
- '<a rel="foo next" href="#next">click me</a>'
- ));
-
- it('navigates to <a> elements whose rel attribute contains "next"', testNext(
- '<a rel="foo next bar" href="#next">click me</a>'
- ));
-
- it('navigates to <a> elements whose text matches "next"', testNext(
- '<a href="#dummy">inextricable</a><a href="#next">go to next</a>'
- ));
-
- it('navigates to <a> elements whose decoded text matches ">>"', testNext(
- '<a href="#dummy">click me</a><a href="#next">&gt;&gt;</a>'
- ));
-
- it('navigates to matching <a> elements by clicking', testNext(
- `<a rel="next" href="#dummy" onclick="return location = '#next', false">go to next</a>`
- ));
-
- it('prefers link[rel~=next] to a[rel~=next]', testNext(
- '<a rel="next" href="#dummy">click me</a><link rel="next" href="#next" />'
- ));
-
- it('prefers a[rel~=next] to a::text(pattern)', testNext(
- '<a href="#dummy">next page</a><a rel="next" href="#next">click me</a>'
- ));
+ describe("#linkNext", () => {
+ it(
+ 'navigates to <link> elements whose rel attribute is "next"',
+ testNext('<link rel="next" href="#next" />')
+ );
+
+ it(
+ 'navigates to <link> elements whose rel attribute starts with "next"',
+ testNext('<link rel="next bar" href="#next" />')
+ );
+
+ it(
+ 'navigates to <link> elements whose rel attribute ends with "next"',
+ testNext('<link rel="foo next" href="#next" />')
+ );
+
+ it(
+ 'navigates to <link> elements whose rel attribute contains "next"',
+ testNext('<link rel="foo next bar" href="#next" />')
+ );
+
+ it(
+ 'navigates to <a> elements whose rel attribute is "next"',
+ testNext('<a rel="next" href="#next">click me</a>')
+ );
+
+ it(
+ 'navigates to <a> elements whose rel attribute starts with "next"',
+ testNext('<a rel="next bar" href="#next">click me</a>')
+ );
+
+ it(
+ 'navigates to <a> elements whose rel attribute ends with "next"',
+ testNext('<a rel="foo next" href="#next">click me</a>')
+ );
+
+ it(
+ 'navigates to <a> elements whose rel attribute contains "next"',
+ testNext('<a rel="foo next bar" href="#next">click me</a>')
+ );
+
+ it(
+ 'navigates to <a> elements whose text matches "next"',
+ testNext(
+ '<a href="#dummy">inextricable</a><a href="#next">go to next</a>'
+ )
+ );
+
+ it(
+ 'navigates to <a> elements whose decoded text matches ">>"',
+ testNext('<a href="#dummy">click me</a><a href="#next">&gt;&gt;</a>')
+ );
+
+ it(
+ "navigates to matching <a> elements by clicking",
+ testNext(
+ `<a rel="next" href="#dummy" onclick="return location = '#next', false">go to next</a>`
+ )
+ );
+
+ it(
+ "prefers link[rel~=next] to a[rel~=next]",
+ testNext(
+ '<a rel="next" href="#dummy">click me</a><link rel="next" href="#next" />'
+ )
+ );
+
+ it(
+ "prefers a[rel~=next] to a::text(pattern)",
+ testNext(
+ '<a href="#dummy">next page</a><a rel="next" href="#next">click me</a>'
+ )
+ );
});
});