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.
293 lines
8.0 KiB
293 lines
8.0 KiB
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'); |
|
}); |
|
}); |
|
}); |
|
});
|
|
|