From e1dac618a8b8929f601c7ec8aca3842c5ebf9d03 Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Mon, 13 Apr 2020 20:37:36 +0900 Subject: Use plugin:prettier/recommended --- test/shared/SettingData.test.ts | 156 +++++++++++------------- test/shared/operations.test.ts | 46 ++++--- test/shared/settings/Blacklist.test.ts | 210 +++++++++++++++++++------------- test/shared/settings/Key.test.ts | 120 ++++++++++-------- test/shared/settings/Keymaps.test.ts | 81 +++++++----- test/shared/settings/Properties.test.ts | 21 ++-- test/shared/settings/Search.test.ts | 90 +++++++------- test/shared/settings/Settings.test.ts | 40 +++--- test/shared/urls.test.ts | 108 +++++++++------- 9 files changed, 484 insertions(+), 388 deletions(-) (limited to 'test/shared') diff --git a/test/shared/SettingData.test.ts b/test/shared/SettingData.test.ts index 0632176..283daa5 100644 --- a/test/shared/SettingData.test.ts +++ b/test/shared/SettingData.test.ts @@ -1,46 +1,48 @@ import SettingData, { - FormKeymaps, JSONTextSettings, FormSettings, -} from '../../src/shared/SettingData'; -import Settings from '../../src/shared/settings/Settings'; -import { expect } from 'chai'; -import Keymaps from '../../src/shared/settings/Keymaps'; + FormKeymaps, + JSONTextSettings, + FormSettings, +} from "../../src/shared/SettingData"; +import Settings from "../../src/shared/settings/Settings"; +import { expect } from "chai"; +import Keymaps from "../../src/shared/settings/Keymaps"; -describe('shared/SettingData', () => { - describe('FormKeymaps', () => { - describe('#valueOF to #toKeymaps', () => { - it('parses form keymaps and convert to operations', () => { +describe("shared/SettingData", () => { + describe("FormKeymaps", () => { + describe("#valueOF to #toKeymaps", () => { + it("parses form keymaps and convert to operations", () => { const data = { - 'scroll.vertically?{"count":1}': 'j', - 'scroll.home': '0', + 'scroll.vertically?{"count":1}': "j", + "scroll.home": "0", }; const keymaps = FormKeymaps.fromJSON(data).toKeymaps().toJSON(); expect(keymaps).to.deep.equal({ - 'j': { type: 'scroll.vertically', count: 1 }, - '0': { type: 'scroll.home' }, + j: { type: "scroll.vertically", count: 1 }, + "0": { type: "scroll.home" }, }); }); }); - describe('#fromKeymaps to #toJSON', () => { - it('create from a Keymaps and create a JSON object', () => { + describe("#fromKeymaps to #toJSON", () => { + it("create from a Keymaps and create a JSON object", () => { const keymaps: Keymaps = Keymaps.fromJSON({ - 'j': { type: 'scroll.vertically', count: 1 }, - '0': { type: 'scroll.home' }, + j: { type: "scroll.vertically", count: 1 }, + "0": { type: "scroll.home" }, }); const form = FormKeymaps.fromKeymaps(keymaps).toJSON(); expect(form).to.deep.equal({ - 'scroll.vertically?{"count":1}': 'j', - 'scroll.home': '0', + 'scroll.vertically?{"count":1}': "j", + "scroll.home": "0", }); }); }); }); - describe('JSONSettings', () => { - describe('#valueOf to #toSettings', () => { - it('parse object and create a Settings', () => { + describe("JSONSettings", () => { + describe("#valueOf to #toSettings", () => { + it("parse object and create a Settings", () => { const o = `{ "keymaps": {}, "search": { @@ -62,8 +64,8 @@ describe('shared/SettingData', () => { }); }); - describe('#fromSettings to #toJSON', () => { - it('create from a Settings and create a JSON string', () => { + describe("#fromSettings to #toJSON", () => { + it("create from a Settings and create a JSON string", () => { const o = Settings.fromJSON({ keymaps: {}, search: { @@ -75,7 +77,7 @@ describe('shared/SettingData', () => { properties: { hintchars: "abcdefghijklmnopqrstuvwxyz", smoothscroll: false, - complete: "sbh" + complete: "sbh", }, blacklist: [], }); @@ -86,67 +88,65 @@ describe('shared/SettingData', () => { }); }); - describe('FormSettings', () => { - describe('#valueOf to #toSettings', () => { - it('parse object and create a Settings', () => { + describe("FormSettings", () => { + describe("#valueOf to #toSettings", () => { + it("parse object and create a Settings", () => { const data = { keymaps: { - 'scroll.vertically?{"count":1}': 'j', - 'scroll.home': '0', + 'scroll.vertically?{"count":1}': "j", + "scroll.home": "0", }, search: { default: "google", - engines: [ - ["google", "https://google.com/search?q={}"], - ] + engines: [["google", "https://google.com/search?q={}"]], }, properties: { hintchars: "abcdefghijklmnopqrstuvwxyz", smoothscroll: false, - complete: "sbh" + complete: "sbh", }, - blacklist: [] + blacklist: [], }; const settings = FormSettings.fromJSON(data).toSettings(); expect(settings.toJSON()).to.deep.equal({ keymaps: { - 'j': { type: 'scroll.vertically', count: 1 }, - '0': { type: 'scroll.home' }, + j: { type: "scroll.vertically", count: 1 }, + "0": { type: "scroll.home" }, }, search: { default: "google", engines: { - "google": "https://google.com/search?q={}" - } + google: "https://google.com/search?q={}", + }, }, properties: { hintchars: "abcdefghijklmnopqrstuvwxyz", smoothscroll: false, - complete: "sbh" + complete: "sbh", }, - blacklist: [] + blacklist: [], }); }); }); - describe('#fromSettings to #toJSON', () => { - it('create from a Settings and create a JSON string', () => { + describe("#fromSettings to #toJSON", () => { + it("create from a Settings and create a JSON string", () => { const data: Settings = Settings.fromJSON({ keymaps: { - 'j': { type: 'scroll.vertically', count: 1 }, - '0': { type: 'scroll.home' }, + j: { type: "scroll.vertically", count: 1 }, + "0": { type: "scroll.home" }, }, search: { default: "google", engines: { - "google": "https://google.com/search?q={}" - } + google: "https://google.com/search?q={}", + }, }, properties: { hintchars: "abcdefghijklmnopqrstuvwxyz", smoothscroll: false, - complete: "sbh" + complete: "sbh", }, blacklist: [], }); @@ -154,19 +154,17 @@ describe('shared/SettingData', () => { const json = FormSettings.fromSettings(data).toJSON(); expect(json).to.deep.equal({ keymaps: { - 'scroll.vertically?{"count":1}': 'j', - 'scroll.home': '0', + 'scroll.vertically?{"count":1}': "j", + "scroll.home": "0", }, search: { default: "google", - engines: [ - ["google", "https://google.com/search?q={}"], - ] + engines: [["google", "https://google.com/search?q={}"]], }, properties: { hintchars: "abcdefghijklmnopqrstuvwxyz", smoothscroll: false, - complete: "sbh" + complete: "sbh", }, blacklist: [], }); @@ -174,11 +172,11 @@ describe('shared/SettingData', () => { }); }); - describe('SettingData', () => { - describe('#valueOf to #toJSON', () => { - it('parse object from json source', () => { + describe("SettingData", () => { + describe("#valueOf to #toJSON", () => { + it("parse object from json source", () => { const data = { - source: 'json', + source: "json", json: `{ "keymaps": {}, "search": { @@ -197,54 +195,50 @@ describe('shared/SettingData', () => { }; const j = SettingData.fromJSON(data).toJSON(); - expect(j.source).to.equal('json'); - expect(j.json).to.be.a('string'); + expect(j.source).to.equal("json"); + expect(j.json).to.be.a("string"); }); - it('parse object from form source', () => { + it("parse object from form source", () => { const data = { - source: 'form', + source: "form", form: { keymaps: {}, search: { default: "yahoo", - engines: [ - ['yahoo', 'https://yahoo.com/search?q={}'], - ], + engines: [["yahoo", "https://yahoo.com/search?q={}"]], }, properties: { hintchars: "abcdefghijklmnopqrstuvwxyz", smoothscroll: false, - complete: "sbh" + complete: "sbh", }, blacklist: [], }, }; const j = SettingData.fromJSON(data).toJSON(); - expect(j.source).to.equal('form'); + expect(j.source).to.equal("form"); expect(j.form).to.deep.equal({ keymaps: {}, search: { default: "yahoo", - engines: [ - ['yahoo', 'https://yahoo.com/search?q={}'], - ], + engines: [["yahoo", "https://yahoo.com/search?q={}"]], }, properties: { hintchars: "abcdefghijklmnopqrstuvwxyz", smoothscroll: false, - complete: "sbh" + complete: "sbh", }, blacklist: [], }); }); }); - describe('#toSettings', () => { - it('parse object from json source', () => { + describe("#toSettings", () => { + it("parse object from json source", () => { const data = { - source: 'json', + source: "json", json: `{ "keymaps": {}, "search": { @@ -263,31 +257,29 @@ describe('shared/SettingData', () => { }; const settings = SettingData.fromJSON(data).toSettings(); - expect(settings.search.defaultEngine).to.equal('google'); + expect(settings.search.defaultEngine).to.equal("google"); }); - it('parse object from form source', () => { + it("parse object from form source", () => { const data = { - source: 'form', + source: "form", form: { keymaps: {}, search: { default: "yahoo", - engines: [ - ['yahoo', 'https://yahoo.com/search?q={}'], - ], + engines: [["yahoo", "https://yahoo.com/search?q={}"]], }, properties: { hintchars: "abcdefghijklmnopqrstuvwxyz", smoothscroll: false, - complete: "sbh" + complete: "sbh", }, blacklist: [], }, }; const settings = SettingData.fromJSON(data).toSettings(); - expect(settings.search.defaultEngine).to.equal('yahoo'); + expect(settings.search.defaultEngine).to.equal("yahoo"); }); }); }); diff --git a/test/shared/operations.test.ts b/test/shared/operations.test.ts index fbb6193..94986ac 100644 --- a/test/shared/operations.test.ts +++ b/test/shared/operations.test.ts @@ -1,8 +1,8 @@ -import * as operations from 'shared/operations'; +import * as operations from "shared/operations"; -describe('operations', () => { - describe('#valueOf', () => { - it('returns an Operation', () => { +describe("operations", () => { + describe("#valueOf", () => { + it("returns an Operation", () => { const op: operations.Operation = operations.valueOf({ type: operations.SCROLL_VERTICALLY, count: 10, @@ -11,31 +11,37 @@ describe('operations', () => { expect(op.count).to.equal(10); }); - it('throws an Error on missing required parameter', () => { - expect(() => operations.valueOf({ - type: operations.SCROLL_VERTICALLY, - })).to.throw(TypeError); + it("throws an Error on missing required parameter", () => { + expect(() => + operations.valueOf({ + type: operations.SCROLL_VERTICALLY, + }) + ).to.throw(TypeError); }); - it('fills default valus of optional parameter', () => { + it("fills default valus of optional parameter", () => { const op: operations.Operation = operations.valueOf({ type: operations.COMMAND_SHOW_OPEN, }); - expect(op.type).to.equal(operations.COMMAND_SHOW_OPEN) + expect(op.type).to.equal(operations.COMMAND_SHOW_OPEN); expect(op.alter).to.be.false; }); - it('throws an Error on mismatch of parameter', () => { - expect(() => operations.valueOf({ - type: operations.SCROLL_VERTICALLY, - count: '10', - })).to.throw(TypeError); + it("throws an Error on mismatch of parameter", () => { + expect(() => + operations.valueOf({ + type: operations.SCROLL_VERTICALLY, + count: "10", + }) + ).to.throw(TypeError); - expect(() => valueOf({ - type: operations.COMMAND_SHOW_OPEN, - alter: 'true', - })).to.throw(TypeError); + expect(() => + valueOf({ + type: operations.COMMAND_SHOW_OPEN, + alter: "true", + }) + ).to.throw(TypeError); }); }); -}) +}); diff --git a/test/shared/settings/Blacklist.test.ts b/test/shared/settings/Blacklist.test.ts index bcddf18..1ccb32a 100644 --- a/test/shared/settings/Blacklist.test.ts +++ b/test/shared/settings/Blacklist.test.ts @@ -1,140 +1,178 @@ -import Blacklist, { BlacklistItem } from '../../../src/shared/settings/Blacklist'; -import { expect } from 'chai'; -import Key from '../../../src/shared/settings/Key'; - -describe('BlacklistItem', () => { - describe('#fromJSON', () => { - it('parses string pattern', () => { - const item = BlacklistItem.fromJSON('example.com'); - expect(item.pattern).to.equal('example.com'); +import Blacklist, { + BlacklistItem, +} from "../../../src/shared/settings/Blacklist"; +import { expect } from "chai"; +import Key from "../../../src/shared/settings/Key"; + +describe("BlacklistItem", () => { + describe("#fromJSON", () => { + it("parses string pattern", () => { + const item = BlacklistItem.fromJSON("example.com"); + expect(item.pattern).to.equal("example.com"); expect(item.partial).to.be.false; }); - it('parses partial blacklist item', () => { - const item = BlacklistItem.fromJSON({ url: 'example.com', keys: ['j', 'k']}); - expect(item.pattern).to.equal('example.com'); + it("parses partial blacklist item", () => { + const item = BlacklistItem.fromJSON({ + url: "example.com", + keys: ["j", "k"], + }); + expect(item.pattern).to.equal("example.com"); expect(item.partial).to.be.true; - expect(item.keys).to.deep.equal(['j', 'k']); + expect(item.keys).to.deep.equal(["j", "k"]); }); }); - describe('#matches', () => { + describe("#matches", () => { it('matches by "*"', () => { - const item = BlacklistItem.fromJSON('*'); - expect(item.matches(new URL('https://github.com/abc'))).to.be.true; + const item = BlacklistItem.fromJSON("*"); + expect(item.matches(new URL("https://github.com/abc"))).to.be.true; }); - it('matches by hostname', () => { - const item = BlacklistItem.fromJSON('github.com'); - expect(item.matches(new URL('https://github.com'))).to.be.true; - expect(item.matches(new URL('https://gist.github.com'))).to.be.false; - expect(item.matches(new URL('https://github.com/ueokande'))).to.be.true; - expect(item.matches(new URL('https://github.org'))).to.be.false; - expect(item.matches(new URL('https://google.com/search?q=github.org'))).to.be.false; + it("matches by hostname", () => { + const item = BlacklistItem.fromJSON("github.com"); + expect(item.matches(new URL("https://github.com"))).to.be.true; + expect(item.matches(new URL("https://gist.github.com"))).to.be.false; + expect(item.matches(new URL("https://github.com/ueokande"))).to.be.true; + expect(item.matches(new URL("https://github.org"))).to.be.false; + expect(item.matches(new URL("https://google.com/search?q=github.org"))).to + .be.false; }); - it('matches by hostname with wildcard', () => { - const item = BlacklistItem.fromJSON('*.github.com'); + it("matches by hostname with wildcard", () => { + const item = BlacklistItem.fromJSON("*.github.com"); - expect(item.matches(new URL('https://github.com'))).to.be.false; - expect(item.matches(new URL('https://gist.github.com'))).to.be.true; + expect(item.matches(new URL("https://github.com"))).to.be.false; + expect(item.matches(new URL("https://gist.github.com"))).to.be.true; }); - it('matches by path', () => { - const item = BlacklistItem.fromJSON('github.com/abc'); + it("matches by path", () => { + const item = BlacklistItem.fromJSON("github.com/abc"); - expect(item.matches(new URL('https://github.com/abc'))).to.be.true; - expect(item.matches(new URL('https://github.com/abcdef'))).to.be.false; - expect(item.matches(new URL('https://gist.github.com/abc'))).to.be.false; + expect(item.matches(new URL("https://github.com/abc"))).to.be.true; + expect(item.matches(new URL("https://github.com/abcdef"))).to.be.false; + expect(item.matches(new URL("https://gist.github.com/abc"))).to.be.false; }); - it('matches by path with wildcard', () => { - const item = BlacklistItem.fromJSON('github.com/abc*'); + it("matches by path with wildcard", () => { + const item = BlacklistItem.fromJSON("github.com/abc*"); - expect(item.matches(new URL('https://github.com/abc'))).to.be.true; - expect(item.matches(new URL('https://github.com/abcdef'))).to.be.true; - expect(item.matches(new URL('https://gist.github.com/abc'))).to.be.false; + expect(item.matches(new URL("https://github.com/abc"))).to.be.true; + expect(item.matches(new URL("https://github.com/abcdef"))).to.be.true; + expect(item.matches(new URL("https://gist.github.com/abc"))).to.be.false; }); - it('matches address and port', () => { - const item = BlacklistItem.fromJSON('127.0.0.1:8888'); + it("matches address and port", () => { + const item = BlacklistItem.fromJSON("127.0.0.1:8888"); - expect(item.matches(new URL('http://127.0.0.1:8888/'))).to.be.true; - expect(item.matches(new URL('http://127.0.0.1:8888/hello'))).to.be.true; + expect(item.matches(new URL("http://127.0.0.1:8888/"))).to.be.true; + expect(item.matches(new URL("http://127.0.0.1:8888/hello"))).to.be.true; }); - it('matches with partial blacklist', () => { - const item = BlacklistItem.fromJSON({ url: 'google.com', keys: ['j', 'k'] }); + it("matches with partial blacklist", () => { + const item = BlacklistItem.fromJSON({ + url: "google.com", + keys: ["j", "k"], + }); - expect(item.matches(new URL('https://google.com'))).to.be.true; - expect(item.matches(new URL('https://yahoo.com'))).to.be.false; - }) + expect(item.matches(new URL("https://google.com"))).to.be.true; + expect(item.matches(new URL("https://yahoo.com"))).to.be.false; + }); }); - describe('#includesPartialKeys', () => { - it('matches with partial keys', () => { - const item = BlacklistItem.fromJSON({url: 'google.com', keys: ['j', 'k', '']}); - - expect(item.includeKey(new URL('http://google.com/maps'), Key.fromMapKey('j'))).to.be.true; - expect(item.includeKey(new URL('http://google.com/maps'), Key.fromMapKey(''))).to.be.true; - expect(item.includeKey(new URL('http://google.com/maps'), Key.fromMapKey('z'))).to.be.false; - expect(item.includeKey(new URL('http://google.com/maps'), Key.fromMapKey('u'))).to.be.false; - expect(item.includeKey(new URL('http://maps.google.com/'), Key.fromMapKey('j'))).to.be.false; - }) + describe("#includesPartialKeys", () => { + it("matches with partial keys", () => { + const item = BlacklistItem.fromJSON({ + url: "google.com", + keys: ["j", "k", ""], + }); + + expect( + item.includeKey(new URL("http://google.com/maps"), Key.fromMapKey("j")) + ).to.be.true; + expect( + item.includeKey( + new URL("http://google.com/maps"), + Key.fromMapKey("") + ) + ).to.be.true; + expect( + item.includeKey(new URL("http://google.com/maps"), Key.fromMapKey("z")) + ).to.be.false; + expect( + item.includeKey(new URL("http://google.com/maps"), Key.fromMapKey("u")) + ).to.be.false; + expect( + item.includeKey(new URL("http://maps.google.com/"), Key.fromMapKey("j")) + ).to.be.false; + }); }); }); -describe('Blacklist', () => { - describe('#fromJSON', () => { - it('parses string list', () => { - const blacklist = Blacklist.fromJSON(['example.com', 'example.org']); - expect(blacklist.toJSON()).to.deep.equals([ - 'example.com', 'example.org', - ]); +describe("Blacklist", () => { + describe("#fromJSON", () => { + it("parses string list", () => { + const blacklist = Blacklist.fromJSON(["example.com", "example.org"]); + expect(blacklist.toJSON()).to.deep.equals(["example.com", "example.org"]); }); - it('parses mixed blacklist', () => { + it("parses mixed blacklist", () => { const blacklist = Blacklist.fromJSON([ - { url: 'example.com', keys: ['j', 'k']}, - 'example.org', + { url: "example.com", keys: ["j", "k"] }, + "example.org", ]); expect(blacklist.toJSON()).to.deep.equals([ - { url: 'example.com', keys: ['j', 'k']}, - 'example.org', + { url: "example.com", keys: ["j", "k"] }, + "example.org", ]); }); - it('parses empty blacklist', () => { + it("parses empty blacklist", () => { const blacklist = Blacklist.fromJSON([]); expect(blacklist.toJSON()).to.deep.equals([]); }); }); - describe('#includesEntireBlacklist', () => { - it('matches a url with entire blacklist', () => { - const blacklist = Blacklist.fromJSON(['google.com', '*.github.com']); - expect(blacklist.includesEntireBlacklist(new URL('https://google.com'))).to.be.true; - expect(blacklist.includesEntireBlacklist(new URL('https://github.com'))).to.be.false; - expect(blacklist.includesEntireBlacklist(new URL('https://gist.github.com'))).to.be.true; + describe("#includesEntireBlacklist", () => { + it("matches a url with entire blacklist", () => { + const blacklist = Blacklist.fromJSON(["google.com", "*.github.com"]); + expect(blacklist.includesEntireBlacklist(new URL("https://google.com"))) + .to.be.true; + expect(blacklist.includesEntireBlacklist(new URL("https://github.com"))) + .to.be.false; + expect( + blacklist.includesEntireBlacklist(new URL("https://gist.github.com")) + ).to.be.true; }); - it('does not matches with partial blacklist', () => { - const blacklist = Blacklist.fromJSON(['google.com', { url: 'yahoo.com', keys: ['j', 'k'] }]); - expect(blacklist.includesEntireBlacklist(new URL('https://google.com'))).to.be.true; - expect(blacklist.includesEntireBlacklist(new URL('https://yahoo.com'))).to.be.false; + it("does not matches with partial blacklist", () => { + const blacklist = Blacklist.fromJSON([ + "google.com", + { url: "yahoo.com", keys: ["j", "k"] }, + ]); + expect(blacklist.includesEntireBlacklist(new URL("https://google.com"))) + .to.be.true; + expect(blacklist.includesEntireBlacklist(new URL("https://yahoo.com"))).to + .be.false; }); }); - describe('#includesKeys', () => { - it('matches with entire blacklist or keys in the partial blacklist', () => { + describe("#includesKeys", () => { + it("matches with entire blacklist or keys in the partial blacklist", () => { const blacklist = Blacklist.fromJSON([ - 'google.com', - { url: 'github.com', keys: ['j', 'k'] }, + "google.com", + { url: "github.com", keys: ["j", "k"] }, ]); - expect(blacklist.includeKey(new URL('https://google.com'), Key.fromMapKey('j'))).to.be.false; - expect(blacklist.includeKey(new URL('https://github.com'), Key.fromMapKey('j'))).to.be.true; - expect(blacklist.includeKey(new URL('https://github.com'), Key.fromMapKey('a'))).to.be.false; + expect( + blacklist.includeKey(new URL("https://google.com"), Key.fromMapKey("j")) + ).to.be.false; + expect( + blacklist.includeKey(new URL("https://github.com"), Key.fromMapKey("j")) + ).to.be.true; + expect( + blacklist.includeKey(new URL("https://github.com"), Key.fromMapKey("a")) + ).to.be.false; }); }); }); diff --git a/test/shared/settings/Key.test.ts b/test/shared/settings/Key.test.ts index b8538f8..47af1d9 100644 --- a/test/shared/settings/Key.test.ts +++ b/test/shared/settings/Key.test.ts @@ -1,74 +1,74 @@ -import { expect } from 'chai' -import Key from '../../../src/shared/settings/Key'; +import { expect } from "chai"; +import Key from "../../../src/shared/settings/Key"; describe("Key", () => { - describe('fromMapKey', () => { - it('return for X', () => { - const key = Key.fromMapKey('x'); - expect(key.key).to.equal('x'); + describe("fromMapKey", () => { + it("return for X", () => { + const key = Key.fromMapKey("x"); + expect(key.key).to.equal("x"); expect(key.shift).to.be.false; expect(key.ctrl).to.be.false; expect(key.alt).to.be.false; expect(key.meta).to.be.false; }); - it('return for Shift+X', () => { - const key = Key.fromMapKey('X'); - expect(key.key).to.equal('X'); + it("return for Shift+X", () => { + const key = Key.fromMapKey("X"); + expect(key.key).to.equal("X"); expect(key.shift).to.be.true; expect(key.ctrl).to.be.false; expect(key.alt).to.be.false; expect(key.meta).to.be.false; }); - it('return for Ctrl+X', () => { - const key = Key.fromMapKey(''); - expect(key.key).to.equal('x'); + it("return for Ctrl+X", () => { + const key = Key.fromMapKey(""); + expect(key.key).to.equal("x"); expect(key.shift).to.be.false; expect(key.ctrl).to.be.true; expect(key.alt).to.be.false; expect(key.meta).to.be.false; }); - it('returns for Ctrl+Meta+X', () => { - const key = Key.fromMapKey(''); - expect(key.key).to.equal('x'); + it("returns for Ctrl+Meta+X", () => { + const key = Key.fromMapKey(""); + expect(key.key).to.equal("x"); expect(key.shift).to.be.false; expect(key.ctrl).to.be.true; expect(key.alt).to.be.false; expect(key.meta).to.be.true; }); - it('returns for Ctrl+Shift+x', () => { - const key = Key.fromMapKey(''); - expect(key.key).to.equal('X'); + it("returns for Ctrl+Shift+x", () => { + const key = Key.fromMapKey(""); + expect(key.key).to.equal("X"); expect(key.shift).to.be.true; expect(key.ctrl).to.be.true; expect(key.alt).to.be.false; expect(key.meta).to.be.false; }); - it('returns for Shift+Esc', () => { - const key = Key.fromMapKey(''); - expect(key.key).to.equal('Esc'); + it("returns for Shift+Esc", () => { + const key = Key.fromMapKey(""); + expect(key.key).to.equal("Esc"); expect(key.shift).to.be.true; expect(key.ctrl).to.be.false; expect(key.alt).to.be.false; expect(key.meta).to.be.false; }); - it('returns for Ctrl+Esc', () => { - const key = Key.fromMapKey(''); - expect(key.key).to.equal('Esc'); + it("returns for Ctrl+Esc", () => { + const key = Key.fromMapKey(""); + expect(key.key).to.equal("Esc"); expect(key.shift).to.be.false; expect(key.ctrl).to.be.true; expect(key.alt).to.be.false; expect(key.meta).to.be.false; }); - it('returns for Ctrl+Esc', () => { - const key = Key.fromMapKey(''); - expect(key.key).to.equal('Space'); + it("returns for Ctrl+Esc", () => { + const key = Key.fromMapKey(""); + expect(key.key).to.equal("Space"); expect(key.shift).to.be.false; expect(key.ctrl).to.be.true; expect(key.alt).to.be.false; @@ -76,30 +76,54 @@ describe("Key", () => { }); }); - describe('idDigit', () => { - it('returns true if the key is a digit', () => { - expect(new Key({ key: '0' }).isDigit()).to.be.true; - expect(new Key({ key: '9' }).isDigit()).to.be.true; - expect(new Key({ key: '9', alt: true }).isDigit()).to.be.false; + describe("idDigit", () => { + it("returns true if the key is a digit", () => { + expect(new Key({ key: "0" }).isDigit()).to.be.true; + expect(new Key({ key: "9" }).isDigit()).to.be.true; + expect(new Key({ key: "9", alt: true }).isDigit()).to.be.false; - expect(new Key({ key: 'a' }).isDigit()).to.be.false; - expect(new Key({ key: '0' }).isDigit()).to.be.false; - }) + expect(new Key({ key: "a" }).isDigit()).to.be.false; + expect(new Key({ key: "0" }).isDigit()).to.be.false; + }); }); - describe('equals', () => { - it('returns true if the keys are equivalent', () => { - expect(new Key({ - key: 'x', shift: false, ctrl: true, alt: false, meta: false, - }).equals(new Key({ - key: 'x', shift: false, ctrl: true, alt: false, meta: false, - }))).to.be.true; + describe("equals", () => { + it("returns true if the keys are equivalent", () => { + expect( + new Key({ + key: "x", + shift: false, + ctrl: true, + alt: false, + meta: false, + }).equals( + new Key({ + key: "x", + shift: false, + ctrl: true, + alt: false, + meta: false, + }) + ) + ).to.be.true; - expect(new Key({ - key: 'x', shift: false, ctrl: false, alt: false, meta: false, - }).equals(new Key({ - key: 'X', shift: true, ctrl: false, alt: false, meta: false, - }))).to.be.false; - }) + expect( + new Key({ + key: "x", + shift: false, + ctrl: false, + alt: false, + meta: false, + }).equals( + new Key({ + key: "X", + shift: true, + ctrl: false, + alt: false, + meta: false, + }) + ) + ).to.be.false; + }); }); }); diff --git a/test/shared/settings/Keymaps.test.ts b/test/shared/settings/Keymaps.test.ts index dcea6e4..264684d 100644 --- a/test/shared/settings/Keymaps.test.ts +++ b/test/shared/settings/Keymaps.test.ts @@ -1,65 +1,80 @@ -import Keymaps from '../../../src/shared/settings/Keymaps'; -import { expect } from 'chai'; +import Keymaps from "../../../src/shared/settings/Keymaps"; +import { expect } from "chai"; -describe('Keymaps', () => { - describe('#valueOf', () => { - it('returns empty object by empty settings', () => { +describe("Keymaps", () => { + describe("#valueOf", () => { + it("returns empty object by empty settings", () => { const keymaps = Keymaps.fromJSON({}).toJSON(); expect(keymaps).to.be.empty; }); - it('returns keymaps by valid settings', () => { + it("returns keymaps by valid settings", () => { const keymaps = Keymaps.fromJSON({ k: { type: "scroll.vertically", count: -1 }, j: { type: "scroll.vertically", count: 1 }, }).toJSON(); - expect(keymaps['k']).to.deep.equal({ type: "scroll.vertically", count: -1 }); - expect(keymaps['j']).to.deep.equal({ type: "scroll.vertically", count: 1 }); + expect(keymaps["k"]).to.deep.equal({ + type: "scroll.vertically", + count: -1, + }); + expect(keymaps["j"]).to.deep.equal({ + type: "scroll.vertically", + count: 1, + }); }); - it('throws a TypeError by invalid settings', () => { - expect(() => Keymaps.fromJSON({ - k: { type: "invalid.operation" }, - })).to.throw(TypeError); + it("throws a TypeError by invalid settings", () => { + expect(() => + Keymaps.fromJSON({ + k: { type: "invalid.operation" }, + }) + ).to.throw(TypeError); }); }); - describe('#combine', () => { - it('returns combined keymaps', () => { + describe("#combine", () => { + it("returns combined keymaps", () => { const keymaps = Keymaps.fromJSON({ k: { type: "scroll.vertically", count: -1 }, j: { type: "scroll.vertically", count: 1 }, - }).combine(Keymaps.fromJSON({ - n: { type: "find.next" }, - N: { type: "find.prev" }, - })); + }).combine( + Keymaps.fromJSON({ + n: { type: "find.next" }, + N: { type: "find.prev" }, + }) + ); - const entries = keymaps.entries().sort(([name1], [name2]) => name1.localeCompare(name2)); + const entries = keymaps + .entries() + .sort(([name1], [name2]) => name1.localeCompare(name2)); expect(entries).deep.equals([ - ['j', { type: "scroll.vertically", count: 1 }], - ['k', { type: "scroll.vertically", count: -1 }], - ['n', { type: "find.next" }], - ['N', { type: "find.prev" }], + ["j", { type: "scroll.vertically", count: 1 }], + ["k", { type: "scroll.vertically", count: -1 }], + ["n", { type: "find.next" }], + ["N", { type: "find.prev" }], ]); }); - it('overrides current keymaps', () => { + it("overrides current keymaps", () => { const keymaps = Keymaps.fromJSON({ k: { type: "scroll.vertically", count: -1 }, j: { type: "scroll.vertically", count: 1 }, - }).combine(Keymaps.fromJSON({ - n: { type: "find.next" }, - j: { type: "find.prev" }, - })); + }).combine( + Keymaps.fromJSON({ + n: { type: "find.next" }, + j: { type: "find.prev" }, + }) + ); - const entries = keymaps.entries().sort(([name1], [name2]) => name1.localeCompare(name2)); + const entries = keymaps + .entries() + .sort(([name1], [name2]) => name1.localeCompare(name2)); expect(entries).deep.equals([ - ['j', { type: "find.prev" }], - ['k', { type: "scroll.vertically", count: -1 }], - ['n', { type: "find.next" }], + ["j", { type: "find.prev" }], + ["k", { type: "scroll.vertically", count: -1 }], + ["n", { type: "find.next" }], ]); }); }); }); - diff --git a/test/shared/settings/Properties.test.ts b/test/shared/settings/Properties.test.ts index 4639839..6007e84 100644 --- a/test/shared/settings/Properties.test.ts +++ b/test/shared/settings/Properties.test.ts @@ -1,30 +1,29 @@ -import Properties from '../../../src/shared/settings/Properties'; -import { expect } from 'chai'; +import Properties from "../../../src/shared/settings/Properties"; +import { expect } from "chai"; -describe('Properties', () => { - describe('#propertiesValueOf', () => { - it('returns with default properties by empty settings', () => { +describe("Properties", () => { + describe("#propertiesValueOf", () => { + it("returns with default properties by empty settings", () => { const props = Properties.fromJSON({}); expect(props).to.deep.equal({ hintchars: "abcdefghijklmnopqrstuvwxyz", smoothscroll: false, - complete: "sbh" - }) + complete: "sbh", + }); }); - it('returns properties by valid settings', () => { + it("returns properties by valid settings", () => { const props = Properties.fromJSON({ hintchars: "abcdefgh", smoothscroll: false, - complete: "sbh" + complete: "sbh", }); expect(props).to.deep.equal({ hintchars: "abcdefgh", smoothscroll: false, - complete: "sbh" + complete: "sbh", }); }); }); }); - diff --git a/test/shared/settings/Search.test.ts b/test/shared/settings/Search.test.ts index 8bd8d89..1feb14b 100644 --- a/test/shared/settings/Search.test.ts +++ b/test/shared/settings/Search.test.ts @@ -1,55 +1,63 @@ -import Search from '../../../src/shared/settings/Search'; -import { expect } from 'chai'; +import Search from "../../../src/shared/settings/Search"; +import { expect } from "chai"; -describe('Search', () => { - it('returns search settings by valid settings', () => { +describe("Search", () => { + it("returns search settings by valid settings", () => { const search = Search.fromJSON({ - default: 'google', + default: "google", engines: { - 'google': 'https://google.com/search?q={}', - 'yahoo': 'https://search.yahoo.com/search?p={}', - } + google: "https://google.com/search?q={}", + yahoo: "https://search.yahoo.com/search?p={}", + }, }); - expect(search.defaultEngine).to.equal('google') + expect(search.defaultEngine).to.equal("google"); expect(search.engines).to.deep.equals({ - 'google': 'https://google.com/search?q={}', - 'yahoo': 'https://search.yahoo.com/search?p={}', + google: "https://google.com/search?q={}", + yahoo: "https://search.yahoo.com/search?p={}", }); expect(search.toJSON()).to.deep.equal({ - default: 'google', + default: "google", engines: { - 'google': 'https://google.com/search?q={}', - 'yahoo': 'https://search.yahoo.com/search?p={}', - } + google: "https://google.com/search?q={}", + yahoo: "https://search.yahoo.com/search?p={}", + }, }); }); - it('throws a TypeError by invalid settings', () => { - expect(() => Search.fromJSON({ - default: 'wikipedia', - engines: { - 'google': 'https://google.com/search?q={}', - 'yahoo': 'https://search.yahoo.com/search?p={}', - } - })).to.throw(TypeError); - expect(() => Search.fromJSON({ - default: 'g o o g l e', - engines: { - 'g o o g l e': 'https://google.com/search?q={}', - } - })).to.throw(TypeError); - expect(() => Search.fromJSON({ - default: 'google', - engines: { - 'google': 'https://google.com/search', - } - })).to.throw(TypeError); - expect(() => Search.fromJSON({ - default: 'google', - engines: { - 'google': 'https://google.com/search?q={}&r={}', - } - })).to.throw(TypeError); + it("throws a TypeError by invalid settings", () => { + expect(() => + Search.fromJSON({ + default: "wikipedia", + engines: { + google: "https://google.com/search?q={}", + yahoo: "https://search.yahoo.com/search?p={}", + }, + }) + ).to.throw(TypeError); + expect(() => + Search.fromJSON({ + default: "g o o g l e", + engines: { + "g o o g l e": "https://google.com/search?q={}", + }, + }) + ).to.throw(TypeError); + expect(() => + Search.fromJSON({ + default: "google", + engines: { + google: "https://google.com/search", + }, + }) + ).to.throw(TypeError); + expect(() => + Search.fromJSON({ + default: "google", + engines: { + google: "https://google.com/search?q={}&r={}", + }, + }) + ).to.throw(TypeError); }); }); diff --git a/test/shared/settings/Settings.test.ts b/test/shared/settings/Settings.test.ts index 658132c..4ecfe77 100644 --- a/test/shared/settings/Settings.test.ts +++ b/test/shared/settings/Settings.test.ts @@ -1,19 +1,19 @@ -import Settings from '../../../src/shared/settings/Settings'; -import { expect } from 'chai'; +import Settings from "../../../src/shared/settings/Settings"; +import { expect } from "chai"; -describe('Settings', () => { - describe('#valueOf', () => { - it('returns settings by valid settings', () => { +describe("Settings", () => { + describe("#valueOf", () => { + it("returns settings by valid settings", () => { const x = Settings.fromJSON({ keymaps: {}, - "search": { - "default": "google", - "engines": { - "google": "https://google.com/search?q={}", - } + search: { + default: "google", + engines: { + google: "https://google.com/search?q={}", + }, }, - "properties": {}, - "blacklist": [] + properties: {}, + blacklist: [], }); expect({ @@ -27,28 +27,28 @@ describe('Settings', () => { default: "google", engines: { google: "https://google.com/search?q={}", - } + }, }, properties: { hintchars: "abcdefghijklmnopqrstuvwxyz", smoothscroll: false, - complete: "sbh" + complete: "sbh", }, - blacklist: [] + blacklist: [], }); }); - it('sets default settings', () => { + it("sets default settings", () => { const value = Settings.fromJSON({}); expect(value.keymaps.toJSON()).to.not.be.empty; expect(value.properties.toJSON()).to.not.be.empty; - expect(value.search.defaultEngine).to.be.a('string'); - expect(value.search.engines).to.be.an('object'); + expect(value.search.defaultEngine).to.be.a("string"); + expect(value.search.engines).to.be.an("object"); expect(value.blacklist.toJSON()).to.be.empty; }); - it('throws a TypeError with an unknown field', () => { - expect(() => Settings.fromJSON({ name: 'alice' })).to.throw(TypeError) + it("throws a TypeError with an unknown field", () => { + expect(() => Settings.fromJSON({ name: "alice" })).to.throw(TypeError); }); }); }); diff --git a/test/shared/urls.test.ts b/test/shared/urls.test.ts index 6206d03..f264ad9 100644 --- a/test/shared/urls.test.ts +++ b/test/shared/urls.test.ts @@ -1,64 +1,78 @@ -import * as parsers from '../../src/shared/urls'; -import { expect } from 'chai'; -import Search from '../../src/shared/settings/Search'; +import * as parsers from "../../src/shared/urls"; +import { expect } from "chai"; +import Search from "../../src/shared/settings/Search"; describe("shared/commands/parsers", () => { - describe('#searchUrl', () => { + describe("#searchUrl", () => { const config = Search.fromJSON({ - default: 'google', + default: "google", engines: { - google: 'https://google.com/search?q={}', - yahoo: 'https://yahoo.com/search?q={}', - } + google: "https://google.com/search?q={}", + yahoo: "https://yahoo.com/search?q={}", + }, }); - it('convertes search url', () => { - expect(parsers.searchUrl('google.com', config)) - .to.equal('http://google.com'); - expect(parsers.searchUrl('google apple', config)) - .to.equal('https://google.com/search?q=apple'); - expect(parsers.searchUrl('yahoo apple', config)) - .to.equal('https://yahoo.com/search?q=apple'); - expect(parsers.searchUrl('google apple banana', config)) - .to.equal('https://google.com/search?q=apple%20banana'); - expect(parsers.searchUrl('yahoo C++CLI', config)) - .to.equal('https://yahoo.com/search?q=C%2B%2BCLI'); + it("convertes search url", () => { + expect(parsers.searchUrl("google.com", config)).to.equal( + "http://google.com" + ); + expect(parsers.searchUrl("google apple", config)).to.equal( + "https://google.com/search?q=apple" + ); + expect(parsers.searchUrl("yahoo apple", config)).to.equal( + "https://yahoo.com/search?q=apple" + ); + expect(parsers.searchUrl("google apple banana", config)).to.equal( + "https://google.com/search?q=apple%20banana" + ); + expect(parsers.searchUrl("yahoo C++CLI", config)).to.equal( + "https://yahoo.com/search?q=C%2B%2BCLI" + ); }); - it('user default search engine', () => { - expect(parsers.searchUrl('apple banana', config)) - .to.equal('https://google.com/search?q=apple%20banana'); + it("user default search engine", () => { + expect(parsers.searchUrl("apple banana", config)).to.equal( + "https://google.com/search?q=apple%20banana" + ); }); - it('searches with a word containing a colon', () => { - expect(parsers.searchUrl('foo:', config)) - .to.equal('https://google.com/search?q=foo%3A'); - expect(parsers.searchUrl('std::vector', config)) - .to.equal('https://google.com/search?q=std%3A%3Avector'); + it("searches with a word containing a colon", () => { + expect(parsers.searchUrl("foo:", config)).to.equal( + "https://google.com/search?q=foo%3A" + ); + expect(parsers.searchUrl("std::vector", config)).to.equal( + "https://google.com/search?q=std%3A%3Avector" + ); }); - it('localhost urls', () => { - expect(parsers.searchUrl('localhost', config)) - .to.equal('http://localhost'); - expect(parsers.searchUrl('http://localhost', config)) - .to.equal('http://localhost/'); - expect(parsers.searchUrl('localhost:8080', config)) - .to.equal('http://localhost:8080'); - expect(parsers.searchUrl('localhost:80nan', config)) - .to.equal('https://google.com/search?q=localhost%3A80nan'); - expect(parsers.searchUrl('localhost 8080', config)) - .to.equal('https://google.com/search?q=localhost%208080'); - expect(parsers.searchUrl('localhost:80/build', config)) - .to.equal('http://localhost:80/build') - }) + it("localhost urls", () => { + expect(parsers.searchUrl("localhost", config)).to.equal( + "http://localhost" + ); + expect(parsers.searchUrl("http://localhost", config)).to.equal( + "http://localhost/" + ); + expect(parsers.searchUrl("localhost:8080", config)).to.equal( + "http://localhost:8080" + ); + expect(parsers.searchUrl("localhost:80nan", config)).to.equal( + "https://google.com/search?q=localhost%3A80nan" + ); + expect(parsers.searchUrl("localhost 8080", config)).to.equal( + "https://google.com/search?q=localhost%208080" + ); + expect(parsers.searchUrl("localhost:80/build", config)).to.equal( + "http://localhost:80/build" + ); + }); }); - describe('#normalizeUrl', () => { - it('normalize urls', () => { - expect(parsers.normalizeUrl('https://google.com/')) - .to.equal('https://google.com/'); - expect(parsers.normalizeUrl('google.com')) - .to.equal('http://google.com'); + describe("#normalizeUrl", () => { + it("normalize urls", () => { + expect(parsers.normalizeUrl("https://google.com/")).to.equal( + "https://google.com/" + ); + expect(parsers.normalizeUrl("google.com")).to.equal("http://google.com"); }); }); }); -- cgit v1.2.3 From b0fe06bc2e739cc252a559f666da65b27769959d Mon Sep 17 00:00:00 2001 From: Shin'ya Ueoka Date: Wed, 15 Apr 2020 19:35:15 +0900 Subject: Fix types in tests --- .../infrastructures/MemoryStorage.test.ts | 9 +-- test/background/repositories/Mark.test.ts | 9 +-- test/background/usecases/parsers.test.ts | 3 +- test/console/actions/console.test.ts | 8 +++ .../console/components/console/Completion.test.tsx | 50 ++++++++------ test/console/reducers/console.test.ts | 76 ++++++++++++++-------- test/content/InputDriver.test.ts | 2 - test/content/presenters/Hint.test.ts | 10 +-- .../content/presenters/NavigationPresenter.test.ts | 8 ++- test/content/usecases/SettingUseCaase.test.ts | 4 +- test/main.ts | 5 -- .../components/form/BlacklistForm.test.tsx | 38 +++++++---- test/settings/components/form/KeymapsForm.test.tsx | 9 +-- .../components/form/PropertiesForm.test.tsx | 18 +++-- .../components/form/SearchEngineForm.test.tsx | 24 ++++--- test/settings/components/ui/input.test.tsx | 32 ++++----- test/settings/reducers/setting.test.ts | 51 ++++++++------- test/shared/operations.test.ts | 13 ++-- 18 files changed, 221 insertions(+), 148 deletions(-) (limited to 'test/shared') diff --git a/test/background/infrastructures/MemoryStorage.test.ts b/test/background/infrastructures/MemoryStorage.test.ts index 5f8be2a..1c67b18 100644 --- a/test/background/infrastructures/MemoryStorage.test.ts +++ b/test/background/infrastructures/MemoryStorage.test.ts @@ -1,4 +1,5 @@ -import MemoryStorage from "background/infrastructures/MemoryStorage"; +import MemoryStorage from "../../../src/background/infrastructures/MemoryStorage"; +import { expect } from "chai"; describe("background/infrastructures/memory-storage", () => { it("stores values", () => { @@ -29,12 +30,12 @@ describe("background/infrastructures/memory-storage", () => { it("stored cloned objects", () => { const cache = new MemoryStorage(); - const recipe = { sugar: "300g" }; + const recipe = { sugar: "300g", salt: "10g" }; cache.set("recipe", recipe); recipe.salt = "20g"; - const got = cache.get("recipe", recipe); - expect(got).to.deep.equal({ sugar: "300g" }); + const got = cache.get("recipe"); + expect(got).to.deep.equal({ sugar: "300g", salt: "10g" }); }); it("throws an error with unserializable objects", () => { diff --git a/test/background/repositories/Mark.test.ts b/test/background/repositories/Mark.test.ts index b1bbcf1..5cee5b6 100644 --- a/test/background/repositories/Mark.test.ts +++ b/test/background/repositories/Mark.test.ts @@ -1,4 +1,5 @@ -import MarkRepository from "background/repositories/MarkRepository"; +import MarkRepository from "../../../src/background/repositories/MarkRepository"; +import { expect } from "chai"; describe("background/repositories/mark", () => { let repository: MarkRepository; @@ -10,15 +11,15 @@ describe("background/repositories/mark", () => { it("get and set", async () => { const mark = { tabId: 1, url: "http://example.com", x: 10, y: 30 }; - repository.setMark("A", mark); + await repository.setMark("A", mark); - let got = await repository.getMark("A"); + let got = (await repository.getMark("A"))!!; expect(got.tabId).to.equal(1); expect(got.url).to.equal("http://example.com"); expect(got.x).to.equal(10); expect(got.y).to.equal(30); - got = await repository.getMark("B"); + got = (await repository.getMark("B"))!!; expect(got).to.be.undefined; }); }); diff --git a/test/background/usecases/parsers.test.ts b/test/background/usecases/parsers.test.ts index bee0d07..019b56e 100644 --- a/test/background/usecases/parsers.test.ts +++ b/test/background/usecases/parsers.test.ts @@ -1,4 +1,5 @@ -import * as parsers from "background/usecases/parsers"; +import * as parsers from "../../../src/background/usecases/parsers"; +import { expect } from "chai"; describe("shared/commands/parsers", () => { describe("#parsers.parseSetOption", () => { diff --git a/test/console/actions/console.test.ts b/test/console/actions/console.test.ts index 5a531a6..3169c4b 100644 --- a/test/console/actions/console.test.ts +++ b/test/console/actions/console.test.ts @@ -2,7 +2,15 @@ import * as actions from "../../../src/console/actions"; import * as consoleActions from "../../../src/console/actions/console"; import { expect } from "chai"; +// eslint-disable-next-line @typescript-eslint/ban-ts-ignore +// @ts-ignore +import browserFake from "webextensions-api-fake"; + describe("console actions", () => { + beforeEach(() => { + (global as any).browser = browserFake(); + }); + describe("hide", () => { it("create CONSOLE_HIDE action", () => { const action = consoleActions.hide(); diff --git a/test/console/components/console/Completion.test.tsx b/test/console/components/console/Completion.test.tsx index 200bb1a..921720b 100644 --- a/test/console/components/console/Completion.test.tsx +++ b/test/console/components/console/Completion.test.tsx @@ -1,6 +1,9 @@ import React from "react"; -import Completion from "console/components/console/Completion"; -import ReactTestRenderer from "react-test-renderer"; +import Completion from "../../../../src/console/components/console/Completion"; +import ReactTestRenderer, { ReactTestInstance } from "react-test-renderer"; +import { expect } from "chai"; +import CompletionTitle from "../../../../src/console/components/console/CompletionTitle"; +import CompletionItem from "../../../../src/console/components/console/CompletionItem"; describe("console/components/console/completion", () => { const completions = [ @@ -24,13 +27,22 @@ describe("console/components/console/completion", () => { it("renders Completion component", () => { const root = ReactTestRenderer.create( - + ).root; - expect(root.children).to.have.lengthOf(1); - - const children = root.children[0].children; + // const children = root.findByType('ul').children as Array; + const children = root.findByType("ul").children as Array; expect(children).to.have.lengthOf(8); + expect(children.map((e) => e.type)).to.deep.equal([ + CompletionTitle, + CompletionItem, + CompletionItem, + CompletionItem, + CompletionTitle, + CompletionItem, + CompletionItem, + CompletionItem, + ]); expect(children[0].props.title).to.equal("Fruit"); expect(children[1].props.caption).to.equal("apple"); expect(children[2].props.caption).to.equal("banana"); @@ -46,7 +58,7 @@ describe("console/components/console/completion", () => { ).root; - const children = root.children[0].children; + const children = root.findByType("ul").children as Array; expect(children[5].props.highlight).to.be.true; }); @@ -55,10 +67,8 @@ describe("console/components/console/completion", () => { ).root; - const children = root.children[0].children; - for (const li of children[0].children) { - expect(li.props.highlight).not.to.be.ok; - } + const children = root.findByType("ul").findAllByType(CompletionItem); + expect(children.every((e) => e.props.highlight === false)).to.be.true; }); it("limits completion items", () => { @@ -66,7 +76,7 @@ describe("console/components/console/completion", () => { ).root; - let children = root.children[0].children; + let children = root.findByType("ul").children as Array; expect(children).to.have.lengthOf(3); expect(children[0].props.title).to.equal("Fruit"); @@ -77,7 +87,7 @@ describe("console/components/console/completion", () => { ).root; - children = root.children[0].children; + children = root.findByType("ul").children as Array; expect(children[1].props.highlight).to.be.true; }); @@ -87,7 +97,7 @@ describe("console/components/console/completion", () => { ); const root = component.root; - let children = root.children[0].children; + let children = root.findByType("ul").children as Array; expect(children).to.have.lengthOf(3); expect(children[0].props.title).to.equal("Fruit"); expect(children[1].props.caption).to.equal("apple"); @@ -97,7 +107,7 @@ describe("console/components/console/completion", () => { ); - children = root.children[0].children; + children = root.findByType("ul").children as Array; expect(children).to.have.lengthOf(3); expect(children[0].props.caption).to.equal("apple"); expect(children[1].props.caption).to.equal("banana"); @@ -108,7 +118,7 @@ describe("console/components/console/completion", () => { ); - children = root.children[0].children; + children = root.findByType("ul").children as Array; expect(children).to.have.lengthOf(3); expect(children[0].props.caption).to.equal("cherry"); expect(children[1].props.title).to.equal("Element"); @@ -122,7 +132,7 @@ describe("console/components/console/completion", () => { ); const root = component.root; - let children = root.children[0].children; + let children = root.findByType("ul").children as Array; expect(children).to.have.lengthOf(3); expect(children[0].props.caption).to.equal("argon"); expect(children[1].props.caption).to.equal("boron"); @@ -132,21 +142,21 @@ describe("console/components/console/completion", () => { ); - children = root.children[0].children; + children = root.findByType("ul").children as Array; expect(children[1].props.highlight).to.be.true; component.update( ); - children = root.children[0].children; + children = root.findByType("ul").children as Array; expect(children[0].props.highlight).to.be.true; component.update( ); - children = root.children[0].children; + children = root.findByType("ul").children as Array; expect(children[0].props.caption).to.equal("cherry"); expect(children[1].props.title).to.equal("Element"); expect(children[2].props.caption).to.equal("argon"); diff --git a/test/console/reducers/console.test.ts b/test/console/reducers/console.test.ts index e8432c5..64e8eb3 100644 --- a/test/console/reducers/console.test.ts +++ b/test/console/reducers/console.test.ts @@ -1,9 +1,12 @@ -import * as actions from "console/actions"; -import reducer from "console/reducers"; +import * as actions from "../../../src/console/actions"; +import reducer, { State } from "../../../src/console/reducers"; +import { expect } from "chai"; +import CompletionType from "../../../src/shared/CompletionType"; +import { ConsoleAction } from "../../../src/console/actions"; describe("console reducer", () => { it("return the initial state", () => { - const state = reducer(undefined, {}); + const state = reducer(undefined, {} as any); expect(state).to.have.property("mode", ""); expect(state).to.have.property("messageText", ""); expect(state).to.have.property("consoleText", ""); @@ -12,68 +15,85 @@ describe("console reducer", () => { }); it("return next state for CONSOLE_HIDE", () => { - const action = { type: actions.CONSOLE_HIDE }; - const state = reducer({ mode: "error" }, action); + const initialState = reducer(undefined, {} as any); + const action: actions.ConsoleAction = { type: actions.CONSOLE_HIDE }; + const state = reducer({ ...initialState, mode: "error" }, action); expect(state).to.have.property("mode", ""); }); it("return next state for CONSOLE_SHOW_COMMAND", () => { - const action = { type: actions.CONSOLE_SHOW_COMMAND, text: "open " }; - const state = reducer({}, action); + const action: actions.ConsoleAction = { + type: actions.CONSOLE_SHOW_COMMAND, + completionTypes: [CompletionType.SearchEngines, CompletionType.History], + text: "open ", + }; + const state = reducer(undefined, action); expect(state).to.have.property("mode", "command"); expect(state).to.have.property("consoleText", "open "); }); it("return next state for CONSOLE_SHOW_INFO", () => { - const action = { type: actions.CONSOLE_SHOW_INFO, text: "an info" }; - const state = reducer({}, action); + const action: actions.ConsoleAction = { + type: actions.CONSOLE_SHOW_INFO, + text: "an info", + }; + const state = reducer(undefined, action); expect(state).to.have.property("mode", "info"); expect(state).to.have.property("messageText", "an info"); }); it("return next state for CONSOLE_SHOW_ERROR", () => { - const action = { type: actions.CONSOLE_SHOW_ERROR, text: "an error" }; - const state = reducer({}, action); + const action: actions.ConsoleAction = { + type: actions.CONSOLE_SHOW_ERROR, + text: "an error", + }; + const state = reducer(undefined, action); expect(state).to.have.property("mode", "error"); expect(state).to.have.property("messageText", "an error"); }); it("return next state for CONSOLE_HIDE_COMMAND", () => { - const action = { type: actions.CONSOLE_HIDE_COMMAND }; - let state = reducer({ mode: "command" }, action); + const initialState = reducer(undefined, {} as any); + const action: actions.ConsoleAction = { + type: actions.CONSOLE_HIDE_COMMAND, + }; + let state = reducer({ ...initialState, mode: "command" }, action); expect(state).to.have.property("mode", ""); - state = reducer({ mode: "error" }, action); + state = reducer({ ...initialState, mode: "error" }, action); expect(state).to.have.property("mode", "error"); }); it("return next state for CONSOLE_SET_CONSOLE_TEXT", () => { - const action = { + const action: actions.ConsoleAction = { type: actions.CONSOLE_SET_CONSOLE_TEXT, consoleText: "hello world", }; - const state = reducer({}, action); + const state = reducer(undefined, action); expect(state).to.have.property("consoleText", "hello world"); }); it("return next state for CONSOLE_SET_COMPLETIONS", () => { - let state = { + const initialState = reducer(undefined, {} as any); + let state: State = { + ...initialState, select: 0, completions: [], }; - const action = { + const action: actions.ConsoleAction = { type: actions.CONSOLE_SET_COMPLETIONS, completions: [ { name: "Apple", - items: [1, 2, 3], + items: [{}, {}, {}], }, { name: "Banana", - items: [4, 5, 6], + items: [{}, {}, {}], }, ], + completionSource: "", }; state = reducer(state, action); expect(state).to.have.property("completions", action.completions); @@ -81,17 +101,19 @@ describe("console reducer", () => { }); it("return next state for CONSOLE_COMPLETION_NEXT", () => { - const action = { type: actions.CONSOLE_COMPLETION_NEXT }; + const initialState = reducer(undefined, {} as any); + const action: ConsoleAction = { type: actions.CONSOLE_COMPLETION_NEXT }; let state = { + ...initialState, select: -1, completions: [ { name: "Apple", - items: [1, 2], + items: [{}, {}], }, { name: "Banana", - items: [3], + items: [{}], }, ], }; @@ -110,17 +132,19 @@ describe("console reducer", () => { }); it("return next state for CONSOLE_COMPLETION_PREV", () => { - const action = { type: actions.CONSOLE_COMPLETION_PREV }; + const initialState = reducer(undefined, {} as any); + const action: ConsoleAction = { type: actions.CONSOLE_COMPLETION_PREV }; let state = { + ...initialState, select: -1, completions: [ { name: "Apple", - items: [1, 2], + items: [{}, {}], }, { name: "Banana", - items: [3], + items: [{}], }, ], }; diff --git a/test/content/InputDriver.test.ts b/test/content/InputDriver.test.ts index bfada87..f464dac 100644 --- a/test/content/InputDriver.test.ts +++ b/test/content/InputDriver.test.ts @@ -16,8 +16,6 @@ describe("InputDriver", () => { afterEach(() => { target.remove(); - target = null; - driver = null; }); it("register callbacks", (done) => { diff --git a/test/content/presenters/Hint.test.ts b/test/content/presenters/Hint.test.ts index e64c39f..f961f88 100644 --- a/test/content/presenters/Hint.test.ts +++ b/test/content/presenters/Hint.test.ts @@ -13,17 +13,17 @@ describe("Hint", () => { describe("#constructor", () => { it("creates a hint element with tag name", () => { - const link = document.getElementById("test-link"); + const link = document.getElementById("test-link")!!; new Hint(link, "abc"); const elem = document.querySelector(".vimvixen-hint"); - expect(elem.textContent.trim()).to.be.equal("abc"); + expect(elem!!.textContent!!.trim()).to.be.equal("abc"); }); }); describe("#show", () => { it("shows an element", () => { - const link = document.getElementById("test-link"); + const link = document.getElementById("test-link")!!; const hint = new Hint(link, "abc"); hint.hide(); hint.show(); @@ -46,10 +46,10 @@ describe("Hint", () => { describe("#remove", () => { it("removes an element", () => { - const link = document.getElementById("test-link"); + 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; diff --git a/test/content/presenters/NavigationPresenter.test.ts b/test/content/presenters/NavigationPresenter.test.ts index b362d8d..af3b487 100644 --- a/test/content/presenters/NavigationPresenter.test.ts +++ b/test/content/presenters/NavigationPresenter.test.ts @@ -4,7 +4,7 @@ import { expect } from "chai"; describe("NavigationPresenterImpl", () => { let sut: NavigationPresenterImpl; - const testRel = (done, rel, html) => { + const testRel = (done: () => void, rel: string, html: string) => { const method = rel === "prev" ? sut.openLinkPrev.bind(sut) : sut.openLinkNext.bind(sut); document.body.innerHTML = html; @@ -14,8 +14,10 @@ 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(); diff --git a/test/content/usecases/SettingUseCaase.test.ts b/test/content/usecases/SettingUseCaase.test.ts index 19a167a..1cc1e8a 100644 --- a/test/content/usecases/SettingUseCaase.test.ts +++ b/test/content/usecases/SettingUseCaase.test.ts @@ -40,7 +40,7 @@ describe("AddonEnabledUseCase", () => { let sut: SettingUseCase; beforeEach(() => { - const testSettings = { + const testSettings = Settings.fromJSON({ keymaps: {}, search: { default: "google", @@ -54,7 +54,7 @@ describe("AddonEnabledUseCase", () => { complete: "sbh", }, blacklist: [], - }; + }); repository = new MockSettingRepository(); client = new MockSettingClient(testSettings); diff --git a/test/main.ts b/test/main.ts index 8097975..fded23a 100644 --- a/test/main.ts +++ b/test/main.ts @@ -1,6 +1 @@ import "reflect-metadata"; -import { expect } from "chai"; -import browserFake from "webextensions-api-fake"; - -global.expect = expect; -global.browser = browserFake(); diff --git a/test/settings/components/form/BlacklistForm.test.tsx b/test/settings/components/form/BlacklistForm.test.tsx index 4d79383..e34802a 100644 --- a/test/settings/components/form/BlacklistForm.test.tsx +++ b/test/settings/components/form/BlacklistForm.test.tsx @@ -6,6 +6,7 @@ import { expect } from "chai"; import BlacklistForm from "../../../../src/settings/components/form/BlacklistForm"; import Blacklist from "../../../../src/shared/settings/Blacklist"; +import AddButton from "../../../../src/settings/components/ui/AddButton"; describe("settings/form/BlacklistForm", () => { describe("render", () => { @@ -16,26 +17,32 @@ describe("settings/form/BlacklistForm", () => { /> ).root; - const children = root.children[0].children; - expect(children).to.have.lengthOf(3); - expect(children[0].children[0].props.value).to.equal("*.slack.com"); - expect(children[1].children[0].props.value).to.equal( - "www.google.com/maps" - ); - expect(children[2].props.name).to.equal("add"); + const rows = root.findAllByProps({ + className: "form-blacklist-form-row", + }); + expect(rows).to.have.lengthOf(2); + expect( + rows[0].findByProps({ className: "column-url" }).props.value + ).to.equal("*.slack.com"); + expect( + rows[1].findByProps({ className: "column-url" }).props.value + ).to.equal("www.google.com/maps"); + + expect(() => root.findByType(AddButton)).not.throw(); }); it("renders blank value", () => { const root = ReactTestRenderer.create().root; - const children = root.children[0].children; - expect(children).to.have.lengthOf(1); - expect(children[0].props.name).to.equal("add"); + const rows = root.findAllByProps({ + className: "form-blacklist-form-row", + }); + expect(rows).to.be.empty; }); }); describe("onChange", () => { - let container; + let container: HTMLDivElement; beforeEach(() => { container = document.createElement("div"); @@ -44,7 +51,6 @@ describe("settings/form/BlacklistForm", () => { afterEach(() => { document.body.removeChild(container); - container = null; }); it("invokes onChange event on edit", (done) => { @@ -65,7 +71,9 @@ describe("settings/form/BlacklistForm", () => { ); }); - const input = document.querySelectorAll("input[type=text]")[0]; + const input = document.querySelectorAll( + "input[type=text]" + )[0] as HTMLInputElement; input.value = "gitter.im"; ReactTestUtils.Simulate.change(input); }); @@ -104,7 +112,9 @@ describe("settings/form/BlacklistForm", () => { ); }); - const button = document.querySelector("input[type=button].ui-add-button"); + const button = document.querySelector( + "input[type=button].ui-add-button" + ) as HTMLButtonElement; ReactTestUtils.Simulate.click(button); }); }); diff --git a/test/settings/components/form/KeymapsForm.test.tsx b/test/settings/components/form/KeymapsForm.test.tsx index 0a88db5..1cec889 100644 --- a/test/settings/components/form/KeymapsForm.test.tsx +++ b/test/settings/components/form/KeymapsForm.test.tsx @@ -3,7 +3,7 @@ import ReactDOM from "react-dom"; import ReactTestRenderer from "react-test-renderer"; import ReactTestUtils from "react-dom/test-utils"; import KeymapsForm from "../../../../src/settings/components/form/KeymapsForm"; -import { FormKeymaps } from "shared/SettingData"; +import { FormKeymaps } from "../../../../src/shared/SettingData"; import { expect } from "chai"; describe("settings/form/KeymapsForm", () => { @@ -37,7 +37,7 @@ describe("settings/form/KeymapsForm", () => { }); describe("onChange event", () => { - let container; + let container: HTMLDivElement; beforeEach(() => { container = document.createElement("div"); @@ -46,7 +46,6 @@ describe("settings/form/KeymapsForm", () => { afterEach(() => { document.body.removeChild(container); - container = null; }); it("invokes onChange event on edit", (done) => { @@ -68,7 +67,9 @@ describe("settings/form/KeymapsForm", () => { ); }); - const input = document.getElementById('scroll.vertically?{"count":1}'); + const input = document.getElementById( + 'scroll.vertically?{"count":1}' + ) as HTMLInputElement; input.value = "jjj"; ReactTestUtils.Simulate.change(input); }); diff --git a/test/settings/components/form/PropertiesForm.test.tsx b/test/settings/components/form/PropertiesForm.test.tsx index 4dc00a2..acf02b8 100644 --- a/test/settings/components/form/PropertiesForm.test.tsx +++ b/test/settings/components/form/PropertiesForm.test.tsx @@ -2,7 +2,8 @@ import React from "react"; import ReactDOM from "react-dom"; import ReactTestRenderer from "react-test-renderer"; import ReactTestUtils from "react-dom/test-utils"; -import PropertiesForm from "settings/components/form/PropertiesForm"; +import PropertiesForm from "../../../../src/settings/components/form/PropertiesForm"; +import { expect } from "chai"; describe("settings/form/PropertiesForm", () => { describe("render", () => { @@ -38,7 +39,7 @@ describe("settings/form/PropertiesForm", () => { }); describe("onChange", () => { - let container; + let container: HTMLDivElement; beforeEach(() => { container = document.createElement("div"); @@ -47,7 +48,6 @@ describe("settings/form/PropertiesForm", () => { afterEach(() => { document.body.removeChild(container); - container = null; }); it("invokes onChange event on text changed", (done) => { @@ -65,7 +65,9 @@ describe("settings/form/PropertiesForm", () => { ); }); - const input = document.querySelector("input[name=myvalue]"); + const input = document.querySelector( + "input[name=myvalue]" + ) as HTMLInputElement; input.value = "abcd"; ReactTestUtils.Simulate.change(input); }); @@ -85,7 +87,9 @@ describe("settings/form/PropertiesForm", () => { ); }); - const input = document.querySelector("input[name=myvalue]"); + const input = document.querySelector( + "input[name=myvalue]" + ) as HTMLInputElement; input.value = "1234"; ReactTestUtils.Simulate.change(input); }); @@ -105,7 +109,9 @@ describe("settings/form/PropertiesForm", () => { ); }); - const input = document.querySelector("input[name=myvalue]"); + const input = document.querySelector( + "input[name=myvalue]" + ) as HTMLInputElement; input.checked = true; ReactTestUtils.Simulate.change(input); }); diff --git a/test/settings/components/form/SearchEngineForm.test.tsx b/test/settings/components/form/SearchEngineForm.test.tsx index ccbd197..5f835cc 100644 --- a/test/settings/components/form/SearchEngineForm.test.tsx +++ b/test/settings/components/form/SearchEngineForm.test.tsx @@ -2,8 +2,9 @@ import React from "react"; import ReactDOM from "react-dom"; import ReactTestRenderer from "react-test-renderer"; import ReactTestUtils from "react-dom/test-utils"; -import SearchForm from "settings/components/form/SearchForm"; -import { FormSearch } from "shared/SettingData"; +import SearchForm from "../../../../src/settings/components/form/SearchForm"; +import { FormSearch } from "../../../../src/shared/SettingData"; +import { expect } from "chai"; describe("settings/form/SearchForm", () => { describe("render", () => { @@ -33,7 +34,7 @@ describe("settings/form/SearchForm", () => { }); describe("onChange event", () => { - let container; + let container: HTMLDivElement; beforeEach(() => { container = document.createElement("div"); @@ -42,7 +43,6 @@ describe("settings/form/SearchForm", () => { afterEach(() => { document.body.removeChild(container); - container = null; }); it("invokes onChange event on edit", (done) => { @@ -71,10 +71,14 @@ describe("settings/form/SearchForm", () => { ); }); - const radio = document.querySelectorAll("input[type=radio]"); + const radio = document.querySelector( + "input[type=radio]" + ) as HTMLInputElement; radio.checked = true; - const name = document.querySelector("input[name=name]"); + const name = document.querySelector( + "input[name=name]" + ) as HTMLInputElement; name.value = "louvre"; ReactTestUtils.Simulate.change(name); @@ -105,7 +109,9 @@ describe("settings/form/SearchForm", () => { ); }); - const button = document.querySelector("input[type=button]"); + const button = document.querySelector( + "input[type=button]" + ) as HTMLInputElement; ReactTestUtils.Simulate.click(button); }); @@ -132,7 +138,9 @@ describe("settings/form/SearchForm", () => { ); }); - const button = document.querySelector("input[type=button].ui-add-button"); + const button = document.querySelector( + "input[type=button].ui-add-button" + ) as HTMLInputElement; ReactTestUtils.Simulate.click(button); }); }); diff --git a/test/settings/components/ui/input.test.tsx b/test/settings/components/ui/input.test.tsx index 2f2b075..191bfed 100644 --- a/test/settings/components/ui/input.test.tsx +++ b/test/settings/components/ui/input.test.tsx @@ -1,10 +1,11 @@ import React from "react"; import ReactDOM from "react-dom"; import ReactTestUtils from "react-dom/test-utils"; -import Input from "settings/components/ui/Input"; +import Input from "../../../../src/settings/components/ui/Input"; +import { expect } from "chai"; describe("settings/ui/Input", () => { - let container; + let container: HTMLDivElement; beforeEach(() => { container = document.createElement("div"); @@ -13,7 +14,6 @@ describe("settings/ui/Input", () => { afterEach(() => { document.body.removeChild(container); - container = null; }); context("type=text", () => { @@ -25,8 +25,8 @@ describe("settings/ui/Input", () => { ); }); - const label = document.querySelector("label"); - const input = document.querySelector("input"); + const label = document.querySelector("label")!!; + const input = document.querySelector("input")!!; expect(label.textContent).to.contain("myfield"); expect(input.type).to.contain("text"); expect(input.name).to.contain("myname"); @@ -42,7 +42,7 @@ describe("settings/ui/Input", () => { label="myfield" value="myvalue" onChange={(e) => { - expect(e.target.value).to.equal("newvalue"); + expect((e.target as HTMLInputElement).value).to.equal("newvalue"); done(); }} />, @@ -50,7 +50,7 @@ describe("settings/ui/Input", () => { ); }); - const input = document.querySelector("input"); + const input = document.querySelector("input")!!; input.value = "newvalue"; ReactTestUtils.Simulate.change(input); }); @@ -65,8 +65,8 @@ describe("settings/ui/Input", () => { ); }); - const label = document.querySelector("label"); - const input = document.querySelector("input"); + const label = document.querySelector("label")!!; + const input = document.querySelector("input")!!; expect(label.textContent).to.contain("myfield"); expect(input.type).to.contain("radio"); expect(input.name).to.contain("myname"); @@ -82,7 +82,7 @@ describe("settings/ui/Input", () => { label="myfield" value="myvalue" onChange={(e) => { - expect(e.target.checked).to.be.true; + expect((e.target as HTMLInputElement).checked).to.be.true; done(); }} />, @@ -90,7 +90,7 @@ describe("settings/ui/Input", () => { ); }); - const input = document.querySelector("input"); + const input = document.querySelector("input") as HTMLInputElement; input.checked = true; ReactTestUtils.Simulate.change(input); }); @@ -111,9 +111,9 @@ describe("settings/ui/Input", () => { ); }); - const label = document.querySelector("label"); - const textarea = document.querySelector("textarea"); - const error = document.querySelector(".settings-ui-input-error"); + const label = document.querySelector("label")!!; + const textarea = document.querySelector("textarea")!!; + const error = document.querySelector(".settings-ui-input-error")!!; expect(label.textContent).to.contain("myfield"); expect(textarea.nodeName).to.contain("TEXTAREA"); expect(textarea.name).to.contain("myname"); @@ -130,7 +130,7 @@ describe("settings/ui/Input", () => { label="myfield" value="myvalue" onChange={(e) => { - expect(e.target.value).to.equal("newvalue"); + expect((e.target as HTMLInputElement).value).to.equal("newvalue"); done(); }} />, @@ -138,7 +138,7 @@ describe("settings/ui/Input", () => { ); }); - const input = document.querySelector("textarea"); + const input = document.querySelector("textarea")!!; input.value = "newvalue"; ReactTestUtils.Simulate.change(input); }); diff --git a/test/settings/reducers/setting.test.ts b/test/settings/reducers/setting.test.ts index bb5cfa5..99c4c80 100644 --- a/test/settings/reducers/setting.test.ts +++ b/test/settings/reducers/setting.test.ts @@ -1,54 +1,61 @@ -import * as actions from "settings/actions"; -import settingReducer from "settings/reducers/setting"; +import * as actions from "../../../src/settings/actions"; +import settingReducer from "../../../src/settings/reducers/setting"; +import { expect } from "chai"; +import { + FormSettings, + JSONTextSettings, + SettingSource, +} from "../../../src/shared/SettingData"; +import { DefaultSetting } from "../../../src/shared/settings/Settings"; describe("settings setting reducer", () => { it("return the initial state", () => { - const state = settingReducer(undefined, {}); + const state = settingReducer(undefined, {} as any); expect(state).to.have.deep.property("source", "json"); expect(state).to.have.deep.property("error", ""); }); it("return next state for SETTING_SET_SETTINGS", () => { - const action = { + const action: actions.SettingAction = { type: actions.SETTING_SET_SETTINGS, - source: "json", - json: '{ "key": "value" }', - form: {}, + source: SettingSource.JSON, + json: JSONTextSettings.fromText('{ "key": "value" }'), + form: FormSettings.fromSettings(DefaultSetting), }; const state = settingReducer(undefined, action); - expect(state).to.have.deep.property("source", "json"); - expect(state).to.have.deep.property("json", '{ "key": "value" }'); - expect(state).to.have.deep.property("form", {}); + expect(state.source).to.equal("json"); + expect(state.json!!.toJSONText()).to.equal('{ "key": "value" }'); + expect(state.form).to.deep.equal(action.form); }); it("return next state for SETTING_SHOW_ERROR", () => { - const action = { + const action: actions.SettingAction = { type: actions.SETTING_SHOW_ERROR, error: "bad value", - json: "{}", + json: JSONTextSettings.fromText("{}"), }; const state = settingReducer(undefined, action); - expect(state).to.have.deep.property("error", "bad value"); - expect(state).to.have.deep.property("json", "{}"); + expect(state.error).to.equal("bad value"); + expect(state.json!!.toJSONText()).to.equal("{}"); }); it("return next state for SETTING_SWITCH_TO_FORM", () => { - const action = { + const action: actions.SettingAction = { type: actions.SETTING_SWITCH_TO_FORM, - form: {}, + form: FormSettings.fromSettings(DefaultSetting), }; const state = settingReducer(undefined, action); - expect(state).to.have.deep.property("form", {}); - expect(state).to.have.deep.property("source", "form"); + expect(state.form).to.deep.equal(action.form); + expect(state.source).to.equal("form"); }); it("return next state for SETTING_SWITCH_TO_JSON", () => { - const action = { + const action: actions.SettingAction = { type: actions.SETTING_SWITCH_TO_JSON, - json: "{}", + json: JSONTextSettings.fromText("{}"), }; const state = settingReducer(undefined, action); - expect(state).to.have.deep.property("json", "{}"); - expect(state).to.have.deep.property("source", "json"); + expect(state.json!!.toJSONText()).to.equal("{}"); + expect(state.source).to.equal(SettingSource.JSON); }); }); diff --git a/test/shared/operations.test.ts b/test/shared/operations.test.ts index 94986ac..449b25e 100644 --- a/test/shared/operations.test.ts +++ b/test/shared/operations.test.ts @@ -1,12 +1,13 @@ -import * as operations from "shared/operations"; +import * as operations from "../../src/shared/operations"; +import { expect } from "chai"; describe("operations", () => { describe("#valueOf", () => { it("returns an Operation", () => { - const op: operations.Operation = operations.valueOf({ + const op = operations.valueOf({ type: operations.SCROLL_VERTICALLY, count: 10, - }); + }) as operations.ScrollVerticallyOperation; expect(op.type).to.equal(operations.SCROLL_VERTICALLY); expect(op.count).to.equal(10); }); @@ -20,9 +21,9 @@ describe("operations", () => { }); it("fills default valus of optional parameter", () => { - const op: operations.Operation = operations.valueOf({ + const op = operations.valueOf({ type: operations.COMMAND_SHOW_OPEN, - }); + }) as operations.CommandShowOpenOperation; expect(op.type).to.equal(operations.COMMAND_SHOW_OPEN); expect(op.alter).to.be.false; @@ -37,7 +38,7 @@ describe("operations", () => { ).to.throw(TypeError); expect(() => - valueOf({ + operations.valueOf({ type: operations.COMMAND_SHOW_OPEN, alter: "true", }) -- cgit v1.2.3