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.
294 lines
8.0 KiB
294 lines
8.0 KiB
6 years ago
|
import SettingData, {
|
||
|
FormKeymaps, JSONSettings, FormSettings,
|
||
|
} from '../../src/shared/SettingData';
|
||
|
import Settings, { Keymaps } from '../../src/shared/Settings';
|
||
|
import { expect } from 'chai';
|
||
|
|
||
|
describe('shared/SettingData', () => {
|
||
|
describe('FormKeymaps', () => {
|
||
|
describe('#valueOF to #toKeymaps', () => {
|
||
|
it('parses form keymaps and convert to operations', () => {
|
||
|
let data = {
|
||
|
'scroll.vertically?{"count":1}': 'j',
|
||
|
'scroll.home': '0',
|
||
|
}
|
||
|
|
||
|
let keymaps = FormKeymaps.valueOf(data).toKeymaps();
|
||
|
expect(keymaps).to.deep.equal({
|
||
|
'j': { type: 'scroll.vertically', count: 1 },
|
||
|
'0': { type: 'scroll.home' },
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('#fromKeymaps to #toJSON', () => {
|
||
|
it('create from a Keymaps and create a JSON object', () => {
|
||
|
let data: Keymaps = {
|
||
|
'j': { type: 'scroll.vertically', count: 1 },
|
||
|
'0': { type: 'scroll.home' },
|
||
|
}
|
||
|
|
||
|
let keymaps = FormKeymaps.fromKeymaps(data).toJSON();
|
||
|
expect(keymaps).to.deep.equal({
|
||
|
'scroll.vertically?{"count":1}': 'j',
|
||
|
'scroll.home': '0',
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('JSONSettings', () => {
|
||
|
describe('#valueOf to #toSettings', () => {
|
||
|
it('parse object and create a Settings', () => {
|
||
|
let o = `{
|
||
|
"keymaps": {},
|
||
|
"search": {
|
||
|
"default": "google",
|
||
|
"engines": {
|
||
|
"google": "https://google.com/search?q={}"
|
||
|
}
|
||
|
},
|
||
|
"properties": {
|
||
|
"hintchars": "abcdefghijklmnopqrstuvwxyz",
|
||
|
"smoothscroll": false,
|
||
|
"complete": "sbh"
|
||
|
},
|
||
|
"blacklist": []
|
||
|
}`;
|
||
|
|
||
|
let settings = JSONSettings.valueOf(o).toSettings();
|
||
|
expect(settings).to.deep.equal(JSON.parse(o));
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('#fromSettings to #toJSON', () => {
|
||
|
it('create from a Settings and create a JSON string', () => {
|
||
|
let o = {
|
||
|
keymaps: {},
|
||
|
search: {
|
||
|
default: "google",
|
||
|
engines: {
|
||
|
google: "https://google.com/search?q={}",
|
||
|
},
|
||
|
},
|
||
|
properties: {
|
||
|
hintchars: "abcdefghijklmnopqrstuvwxyz",
|
||
|
smoothscroll: false,
|
||
|
complete: "sbh"
|
||
|
},
|
||
|
blacklist: [],
|
||
|
};
|
||
|
|
||
|
let json = JSONSettings.fromSettings(o).toJSON();
|
||
|
expect(JSON.parse(json)).to.deep.equal(o);
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('FormSettings', () => {
|
||
|
describe('#valueOf to #toSettings', () => {
|
||
|
it('parse object and create a Settings', () => {
|
||
|
let data = {
|
||
|
keymaps: {
|
||
|
'scroll.vertically?{"count":1}': 'j',
|
||
|
'scroll.home': '0',
|
||
|
},
|
||
|
search: {
|
||
|
default: "google",
|
||
|
engines: [
|
||
|
["google", "https://google.com/search?q={}"],
|
||
|
]
|
||
|
},
|
||
|
properties: {
|
||
|
hintchars: "abcdefghijklmnopqrstuvwxyz",
|
||
|
smoothscroll: false,
|
||
|
complete: "sbh"
|
||
|
},
|
||
|
blacklist: []
|
||
|
};
|
||
|
|
||
|
let settings = FormSettings.valueOf(data).toSettings();
|
||
|
expect(settings).to.deep.equal({
|
||
|
keymaps: {
|
||
|
'j': { type: 'scroll.vertically', count: 1 },
|
||
|
'0': { type: 'scroll.home' },
|
||
|
},
|
||
|
search: {
|
||
|
default: "google",
|
||
|
engines: {
|
||
|
"google": "https://google.com/search?q={}"
|
||
|
}
|
||
|
},
|
||
|
properties: {
|
||
|
hintchars: "abcdefghijklmnopqrstuvwxyz",
|
||
|
smoothscroll: false,
|
||
|
complete: "sbh"
|
||
|
},
|
||
|
blacklist: []
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('#fromSettings to #toJSON', () => {
|
||
|
it('create from a Settings and create a JSON string', () => {
|
||
|
let data: Settings = {
|
||
|
keymaps: {
|
||
|
'j': { type: 'scroll.vertically', count: 1 },
|
||
|
'0': { type: 'scroll.home' },
|
||
|
},
|
||
|
search: {
|
||
|
default: "google",
|
||
|
engines: {
|
||
|
"google": "https://google.com/search?q={}"
|
||
|
}
|
||
|
},
|
||
|
properties: {
|
||
|
hintchars: "abcdefghijklmnopqrstuvwxyz",
|
||
|
smoothscroll: false,
|
||
|
complete: "sbh"
|
||
|
},
|
||
|
blacklist: []
|
||
|
};
|
||
|
|
||
|
let json = FormSettings.fromSettings(data).toJSON();
|
||
|
expect(json).to.deep.equal({
|
||
|
keymaps: {
|
||
|
'scroll.vertically?{"count":1}': 'j',
|
||
|
'scroll.home': '0',
|
||
|
},
|
||
|
search: {
|
||
|
default: "google",
|
||
|
engines: [
|
||
|
["google", "https://google.com/search?q={}"],
|
||
|
]
|
||
|
},
|
||
|
properties: {
|
||
|
hintchars: "abcdefghijklmnopqrstuvwxyz",
|
||
|
smoothscroll: false,
|
||
|
complete: "sbh"
|
||
|
},
|
||
|
blacklist: [],
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('SettingData', () => {
|
||
|
describe('#valueOf to #toJSON', () => {
|
||
|
it('parse object from json source', () => {
|
||
|
let data = {
|
||
|
source: 'json',
|
||
|
json: `{
|
||
|
"keymaps": {},
|
||
|
"search": {
|
||
|
"default": "google",
|
||
|
"engines": {
|
||
|
"google": "https://google.com/search?q={}"
|
||
|
}
|
||
|
},
|
||
|
"properties": {
|
||
|
"hintchars": "abcdefghijklmnopqrstuvwxyz",
|
||
|
"smoothscroll": false,
|
||
|
"complete": "sbh"
|
||
|
},
|
||
|
"blacklist": []
|
||
|
}`,
|
||
|
};
|
||
|
|
||
|
let j = SettingData.valueOf(data).toJSON();
|
||
|
expect(j.source).to.equal('json');
|
||
|
expect(j.json).to.be.a('string');
|
||
|
});
|
||
|
|
||
|
it('parse object from form source', () => {
|
||
|
let data = {
|
||
|
source: 'form',
|
||
|
form: {
|
||
|
keymaps: {},
|
||
|
search: {
|
||
|
default: "yahoo",
|
||
|
engines: [
|
||
|
['yahoo', 'https://yahoo.com/search?q={}'],
|
||
|
],
|
||
|
},
|
||
|
properties: {
|
||
|
hintchars: "abcdefghijklmnopqrstuvwxyz",
|
||
|
smoothscroll: false,
|
||
|
complete: "sbh"
|
||
|
},
|
||
|
blacklist: [],
|
||
|
},
|
||
|
};
|
||
|
|
||
|
let j = SettingData.valueOf(data).toJSON();
|
||
|
expect(j.source).to.equal('form');
|
||
|
expect(j.form).to.deep.equal({
|
||
|
keymaps: {},
|
||
|
search: {
|
||
|
default: "yahoo",
|
||
|
engines: [
|
||
|
['yahoo', 'https://yahoo.com/search?q={}'],
|
||
|
],
|
||
|
},
|
||
|
properties: {
|
||
|
hintchars: "abcdefghijklmnopqrstuvwxyz",
|
||
|
smoothscroll: false,
|
||
|
complete: "sbh"
|
||
|
},
|
||
|
blacklist: [],
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
|
||
|
describe('#toSettings', () => {
|
||
|
it('parse object from json source', () => {
|
||
|
let data = {
|
||
|
source: 'json',
|
||
|
json: `{
|
||
|
"keymaps": {},
|
||
|
"search": {
|
||
|
"default": "google",
|
||
|
"engines": {
|
||
|
"google": "https://google.com/search?q={}"
|
||
|
}
|
||
|
},
|
||
|
"properties": {
|
||
|
"hintchars": "abcdefghijklmnopqrstuvwxyz",
|
||
|
"smoothscroll": false,
|
||
|
"complete": "sbh"
|
||
|
},
|
||
|
"blacklist": []
|
||
|
}`,
|
||
|
};
|
||
|
|
||
|
let settings = SettingData.valueOf(data).toSettings();
|
||
|
expect(settings.search.default).to.equal('google');
|
||
|
});
|
||
|
|
||
|
it('parse object from form source', () => {
|
||
|
let data = {
|
||
|
source: 'form',
|
||
|
form: {
|
||
|
keymaps: {},
|
||
|
search: {
|
||
|
default: "yahoo",
|
||
|
engines: [
|
||
|
['yahoo', 'https://yahoo.com/search?q={}'],
|
||
|
],
|
||
|
},
|
||
|
properties: {
|
||
|
hintchars: "abcdefghijklmnopqrstuvwxyz",
|
||
|
smoothscroll: false,
|
||
|
complete: "sbh"
|
||
|
},
|
||
|
blacklist: [],
|
||
|
},
|
||
|
};
|
||
|
|
||
|
let settings = SettingData.valueOf(data).toSettings();
|
||
|
expect(settings.search.default).to.equal('yahoo');
|
||
|
});
|
||
|
});
|
||
|
});
|
||
|
});
|