diff options
| author | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-07-26 21:41:00 +0900 | 
|---|---|---|
| committer | Shin'ya Ueoka <ueokande@i-beam.org> | 2018-07-27 21:14:57 +0900 | 
| commit | 86c4841964db7988a32b8c2a5edd0a0998eb34e2 (patch) | |
| tree | e0c8851b06864a24cdcdd1a2e59814205bd95a04 /test/background/usecases | |
| parent | c4afd7237b7720acbf642fc4c6eb529420295dcd (diff) | |
Implement set-command
Diffstat (limited to 'test/background/usecases')
| -rw-r--r-- | test/background/usecases/parsers.test.js | 74 | 
1 files changed, 74 insertions, 0 deletions
| diff --git a/test/background/usecases/parsers.test.js b/test/background/usecases/parsers.test.js new file mode 100644 index 0000000..fa0e757 --- /dev/null +++ b/test/background/usecases/parsers.test.js @@ -0,0 +1,74 @@ +import * as parsers from 'background/usecases/parsers'; + +describe("background/usecases/parsers", () => { +  describe("#parsers.parseSetOption", () => { +    it('parse set string', () => { +      let [key, value] = parsers.parseSetOption('encoding=utf-8', { encoding: 'string' }); +      expect(key).to.equal('encoding'); +      expect(value).to.equal('utf-8'); +    }); + +    it('parse set empty string', () => { +      let [key, value] = parsers.parseSetOption('encoding=', { encoding: 'string' }); +      expect(key).to.equal('encoding'); +      expect(value).to.equal(''); +    }); + +    it('parse set string', () => { +      let [key, value] = parsers.parseSetOption('history=50', { history: 'number' }); +      expect(key).to.equal('history'); +      expect(value).to.equal(50); +    }); + +    it('parse set boolean', () => { +      let [key, value] = parsers.parseSetOption('paste', { paste: 'boolean' }); +      expect(key).to.equal('paste'); +      expect(value).to.be.true; + +      [key, value] = parsers.parseSetOption('nopaste', { paste: 'boolean' }); +      expect(key).to.equal('paste'); +      expect(value).to.be.false; +    }); + +    it('throws error on unknown property', () => { +      expect(() => parsers.parseSetOption('charset=utf-8', {})).to.throw(Error, 'Unknown'); +      expect(() => parsers.parseSetOption('smoothscroll', {})).to.throw(Error, 'Unknown'); +      expect(() => parsers.parseSetOption('nosmoothscroll', {})).to.throw(Error, 'Unknown'); +    }) + +    it('throws error on invalid property', () => { +      expect(() => parsers.parseSetOption('charset=utf-8', { charset: 'number' })).to.throw(Error, 'Not number'); +      expect(() => parsers.parseSetOption('charset=utf-8', { charset: 'boolean' })).to.throw(Error, 'Invalid'); +      expect(() => parsers.parseSetOption('charset=', { charset: 'boolean' })).to.throw(Error, 'Invalid'); +      expect(() => parsers.parseSetOption('smoothscroll', { smoothscroll: 'string' })).to.throw(Error, 'Invalid'); +      expect(() => parsers.parseSetOption('smoothscroll', { smoothscroll: 'number' })).to.throw(Error, 'Invalid'); +    }) +  }); + +  describe('#normalizeUrl', () => { +    const config = { +      default: 'google', +      engines: { +        google: 'https://google.com/search?q={}', +        yahoo: 'https://yahoo.com/search?q={}', +      } +    }; + +    it('convertes search url', () => { +      expect(parsers.normalizeUrl('google apple', config)) +        .to.equal('https://google.com/search?q=apple'); +      expect(parsers.normalizeUrl('yahoo apple', config)) +        .to.equal('https://yahoo.com/search?q=apple'); +      expect(parsers.normalizeUrl('google apple banana', config)) +        .to.equal('https://google.com/search?q=apple%20banana'); +      expect(parsers.normalizeUrl('yahoo C++CLI', config)) +        .to.equal('https://yahoo.com/search?q=C%2B%2BCLI'); +    }); + +    it('user default search engine', () => { +      expect(parsers.normalizeUrl('apple banana', config)) +        .to.equal('https://google.com/search?q=apple%20banana'); +    }); +  }); +}); + | 
