A fork of https://github.com/ueokande/vim-vixen
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
194 lines
5.7 KiB
194 lines
5.7 KiB
import * as settings from '../../src/shared/Settings'; |
|
import { expect } from 'chai'; |
|
|
|
describe('Settings', () => { |
|
describe('#keymapsValueOf', () => { |
|
it('returns empty object by empty settings', () => { |
|
let keymaps = settings.keymapsValueOf({}); |
|
expect(keymaps).to.be.empty; |
|
}); |
|
|
|
it('returns keymaps by valid settings', () => { |
|
let keymaps = settings.keymapsValueOf({ |
|
k: { type: "scroll.vertically", count: -1 }, |
|
j: { 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(() => settings.keymapsValueOf(null)).to.throw(TypeError); |
|
expect(() => settings.keymapsValueOf({ |
|
k: { type: "invalid.operation" }, |
|
})).to.throw(TypeError); |
|
}); |
|
}); |
|
|
|
describe('#searchValueOf', () => { |
|
it('returns search settings by valid settings', () => { |
|
let search = settings.searchValueOf({ |
|
default: "google", |
|
engines: { |
|
"google": "https://google.com/search?q={}", |
|
"yahoo": "https://search.yahoo.com/search?p={}", |
|
} |
|
}); |
|
|
|
expect(search).to.deep.equal({ |
|
default: "google", |
|
engines: { |
|
"google": "https://google.com/search?q={}", |
|
"yahoo": "https://search.yahoo.com/search?p={}", |
|
} |
|
}); |
|
}); |
|
|
|
it('throws a TypeError by invalid settings', () => { |
|
expect(() => settings.searchValueOf(null)).to.throw(TypeError); |
|
expect(() => settings.searchValueOf({})).to.throw(TypeError); |
|
expect(() => settings.searchValueOf([])).to.throw(TypeError); |
|
expect(() => settings.searchValueOf({ |
|
default: 123, |
|
engines: {} |
|
})).to.throw(TypeError); |
|
expect(() => settings.searchValueOf({ |
|
default: "google", |
|
engines: { |
|
"google": 123456, |
|
} |
|
})).to.throw(TypeError); |
|
expect(() => settings.searchValueOf({ |
|
default: "wikipedia", |
|
engines: { |
|
"google": "https://google.com/search?q={}", |
|
"yahoo": "https://search.yahoo.com/search?p={}", |
|
} |
|
})).to.throw(TypeError); |
|
expect(() => settings.searchValueOf({ |
|
default: "g o o g l e", |
|
engines: { |
|
"g o o g l e": "https://google.com/search?q={}", |
|
} |
|
})).to.throw(TypeError); |
|
expect(() => settings.searchValueOf({ |
|
default: "google", |
|
engines: { |
|
"google": "https://google.com/search", |
|
} |
|
})).to.throw(TypeError); |
|
expect(() => settings.searchValueOf({ |
|
default: "google", |
|
engines: { |
|
"google": "https://google.com/search?q={}&r={}", |
|
} |
|
})).to.throw(TypeError); |
|
}); |
|
}); |
|
|
|
describe('#propertiesValueOf', () => { |
|
it('returns with default properties by empty settings', () => { |
|
let props = settings.propertiesValueOf({}); |
|
expect(props).to.deep.equal({ |
|
hintchars: "abcdefghijklmnopqrstuvwxyz", |
|
smoothscroll: false, |
|
complete: "sbh" |
|
}) |
|
}); |
|
|
|
it('returns properties by valid settings', () => { |
|
let props = settings.propertiesValueOf({ |
|
hintchars: "abcdefgh", |
|
smoothscroll: false, |
|
complete: "sbh" |
|
}); |
|
|
|
expect(props).to.deep.equal({ |
|
hintchars: "abcdefgh", |
|
smoothscroll: false, |
|
complete: "sbh" |
|
}); |
|
}); |
|
|
|
it('throws a TypeError by invalid settings', () => { |
|
expect(() => settings.keymapsValueOf(null)).to.throw(TypeError); |
|
expect(() => settings.keymapsValueOf({ |
|
smoothscroll: 'false', |
|
})).to.throw(TypeError); |
|
expect(() => settings.keymapsValueOf({ |
|
unknown: 'xyz' |
|
})).to.throw(TypeError); |
|
}); |
|
}); |
|
|
|
describe('#blacklistValueOf', () => { |
|
it('returns empty array by empty settings', () => { |
|
let blacklist = settings.blacklistValueOf([]); |
|
expect(blacklist).to.be.empty; |
|
}); |
|
|
|
it('returns blacklist by valid settings', () => { |
|
let blacklist = settings.blacklistValueOf([ |
|
"github.com", |
|
"circleci.com", |
|
]); |
|
|
|
expect(blacklist).to.deep.equal([ |
|
"github.com", |
|
"circleci.com", |
|
]); |
|
}); |
|
|
|
it('throws a TypeError by invalid settings', () => { |
|
expect(() => settings.blacklistValueOf(null)).to.throw(TypeError); |
|
expect(() => settings.blacklistValueOf({})).to.throw(TypeError); |
|
expect(() => settings.blacklistValueOf([1,2,3])).to.throw(TypeError); |
|
}); |
|
}); |
|
|
|
describe('#valueOf', () => { |
|
it('returns settings by valid settings', () => { |
|
let x = settings.valueOf({ |
|
keymaps: {}, |
|
"search": { |
|
"default": "google", |
|
"engines": { |
|
"google": "https://google.com/search?q={}", |
|
} |
|
}, |
|
"properties": {}, |
|
"blacklist": [] |
|
}); |
|
|
|
expect(x).to.deep.equal({ |
|
keymaps: {}, |
|
search: { |
|
default: "google", |
|
engines: { |
|
google: "https://google.com/search?q={}", |
|
} |
|
}, |
|
properties: { |
|
hintchars: "abcdefghijklmnopqrstuvwxyz", |
|
smoothscroll: false, |
|
complete: "sbh" |
|
}, |
|
blacklist: [] |
|
}); |
|
}); |
|
|
|
it('sets default settings', () => { |
|
let value = settings.valueOf({}); |
|
expect(value.keymaps).to.not.be.empty; |
|
expect(value.properties).to.not.be.empty; |
|
expect(value.search.default).to.be.a('string'); |
|
expect(value.search.engines).to.be.an('object'); |
|
expect(value.blacklist).to.be.empty; |
|
}); |
|
|
|
it('throws a TypeError with an unknown field', () => { |
|
expect(() => settings.valueOf({ name: 'alice' })).to.throw(TypeError) |
|
}); |
|
}); |
|
});
|
|
|