import * as parsers from "../../src/shared/urls"; import { expect } from "chai"; import Search from "../../src/shared/settings/Search"; describe("shared/commands/parsers", () => { describe("#searchUrl", () => { const config = Search.fromJSON({ default: "google", engines: { 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("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("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"); }); }); });