import * as path from "path"; import * as assert from "assert"; import { Builder, Lanthan } from "lanthan"; import OptionPage from "./lib/OptionPage"; describe("options form page", () => { let lanthan: Lanthan; let browser: any; beforeEach(async () => { lanthan = await Builder.forBrowser("firefox") .spyAddon(path.join(__dirname, "..")) .build(); browser = lanthan.getWebExtBrowser(); const tabs = await browser.tabs.query({}); for (const tab of tabs.slice(1)) { await browser.tabs.remove(tab.id); } }); afterEach(async () => { if (lanthan) { await lanthan.quit(); } }); it("switch to form settings", async () => { const page = await OptionPage.open(lanthan); await page.switchToForm(); const { settings } = await browser.storage.local.get("settings"); assert.strictEqual(settings.source, "form"); }); it("add blacklist item", async () => { const page = await OptionPage.open(lanthan); const forms = await page.switchToForm(); // assert default let settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.blacklist, []); // add blacklist items await forms.addBlacklist(); await forms.setBlacklist(0, "google.com"); settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.blacklist, ["google.com"]); await forms.addBlacklist(); await forms.setBlacklist(1, "yahoo.com"); settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.blacklist, [ "google.com", "yahoo.com", ]); // delete first item await forms.removeBlackList(0); settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.blacklist, ["yahoo.com"]); }); it("add a partial blacklist item", async () => { const page = await OptionPage.open(lanthan); const forms = await page.switchToForm(); // assert default let settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.blacklist, []); // add blacklist items await forms.addPartialBlacklist(); await forms.setPartialBlacklist(0, "google.com", "j,k,"); settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.blacklist, [ { url: "google.com", keys: ["j", "k", ""] }, ]); await forms.addPartialBlacklist(); await forms.setPartialBlacklist(1, "yahoo.com", "g,G"); settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.blacklist, [ { url: "google.com", keys: ["j", "k", ""] }, { url: "yahoo.com", keys: ["g", "G"] }, ]); await forms.addBlacklist(); await forms.setBlacklist(0, "bing.com"); settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.blacklist, [ { url: "google.com", keys: ["j", "k", ""] }, { url: "yahoo.com", keys: ["g", "G"] }, "bing.com", ]); // delete first item await forms.removePartialBlackList(0); settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.blacklist, [ { url: "yahoo.com", keys: ["g", "G"] }, "bing.com", ]); }); it("add search engines", async () => { const page = await OptionPage.open(lanthan); const forms = await page.switchToForm(); // assert default let settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.search.default, "google"); // change default await forms.setDefaultSearchEngine(2); settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.search.default, "bing"); await forms.addSearchEngine(); await forms.setSearchEngine( 6, "yippy", "https://www.yippy.com/search?query={}" ); settings = (await browser.storage.local.get("settings")).settings; assert.deepStrictEqual(settings.form.search.engines[6], [ "yippy", "https://www.yippy.com/search?query={}", ]); }); });