aboutsummaryrefslogblamecommitdiff
path: root/test/shared/urls.test.ts
blob: f264ad96e602856e60fa7f47bd3b7d5899edc81d (plain) (tree)
1
2
3
4
5
6
7
8
9

                                                      
                                           
                                
                                    
                        
                

                                                 
       
 














                                                                        
       


                                                                 
       
 





                                                                
       
 


















                                                                       
     
 




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