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");
});
});
});