import AbstractHint, {
LinkHint,
InputHint,
} from "../../../src/content/presenters/Hint";
import { expect } from "chai";
class Hint extends AbstractHint {}
describe("Hint", () => {
beforeEach(() => {
document.body.innerHTML = `link`;
});
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");
});
});
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");
});
});
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");
});
});
describe("#remove", () => {
it("removes an element", () => {
const link = document.getElementById("test-link")!!;
const hint = new Hint(link, "abc");
const elem = document.querySelector(".vimvixen-hint")!!;
expect(elem.parentElement).to.not.be.null;
hint.remove();
expect(elem.parentElement).to.be.null;
});
});
});
describe("LinkHint", () => {
beforeEach(() => {
document.body.innerHTML = `
link
link
link
`;
});
describe("#getLink()", () => {
it('returns value of "href" attribute', () => {
const link = document.getElementById("test-link1") as HTMLAnchorElement;
const hint = new LinkHint(link, "abc");
expect(hint.getLink()).to.equal("https://google.com/");
});
});
describe("#getLinkTarget()", () => {
it('returns value of "target" attribute', () => {
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");
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();
};
hint.click();
});
});
});
describe("InputHint", () => {
describe("#activate()", () => {
context("", () => {
beforeEach(() => {
document.body.innerHTML = ``;
});
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);
});
});
context('', () => {
beforeEach(() => {
document.body.innerHTML = ``;
});
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("