diff options
Diffstat (limited to 'test/content/presenters')
-rw-r--r-- | test/content/presenters/Hint.test.ts | 134 | ||||
-rw-r--r-- | test/content/presenters/NavigationPresenter.test.ts | 276 |
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"><<</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"><<</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">>></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">>></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>' + ) + ); }); }); |