diff options
Diffstat (limited to 'test/background/completion')
-rw-r--r-- | test/background/completion/impl/PrefetchAndCache.test.ts | 100 | ||||
-rw-r--r-- | test/background/completion/impl/filters.test.ts | 30 |
2 files changed, 28 insertions, 102 deletions
diff --git a/test/background/completion/impl/PrefetchAndCache.test.ts b/test/background/completion/impl/PrefetchAndCache.test.ts deleted file mode 100644 index b24dfa9..0000000 --- a/test/background/completion/impl/PrefetchAndCache.test.ts +++ /dev/null @@ -1,100 +0,0 @@ -import PrefetchAndCache, { - shortKey, -} from "../../../../src/background/completion/impl/PrefetchAndCache"; -import { expect } from "chai"; - -class MockRepository { - public history: string[] = []; - - constructor(private items: string[]) {} - - get(query: string): Promise<string[]> { - this.history.push(query); - if (query.length === 0) { - return Promise.resolve(this.items); - } else { - return Promise.resolve(this.items.filter((item) => item.includes(query))); - } - } -} -const filter = (items: string[], query: string) => - query.length === 0 ? items : items.filter((item) => item.includes(query)); - -describe("shortKey", () => { - it("returns query excluding the last word", () => { - const query = "hello\t world good bye"; - const shorten = shortKey(query); - expect(shorten).to.equal("hello world good"); - }); - - it("returns half-length of the query", () => { - const query = "the-query-with-super-long-word"; - const shorten = shortKey(query); - expect(shorten).to.equal("the-query-with-"); - }); - - it("returns shorten URL", () => { - let query = "https://example.com/path/to/resource?q=hello"; - let shorten = shortKey(query); - expect(shorten).to.equal("https://example.com/path/to/"); - - query = "https://example.com/path/to/resource/#id1"; - shorten = shortKey(query); - expect(shorten).to.equal("https://example.com/path/to/"); - - query = "https://www.google.c"; - shorten = shortKey(query); - expect(shorten).to.equal("https://ww"); - }); -}); - -describe("PrefetchAndCache", () => { - describe("get", () => { - it("returns cached request", async () => { - const repo = new MockRepository([ - "apple", - "apple pie", - "apple juice", - "banana", - "banana pudding", - "cherry", - ]); - const sut = new PrefetchAndCache(repo.get.bind(repo), filter); - - expect(await sut.get("apple pie")).deep.equal(["apple pie"]); - expect(await sut.get("apple ")).deep.equal([ - "apple", - "apple pie", - "apple juice", - ]); - expect(await sut.get("apple")).deep.equal([ - "apple", - "apple pie", - "apple juice", - ]); - expect(await sut.get("appl")).deep.equal([ - "apple", - "apple pie", - "apple juice", - ]); - expect(repo.history).to.deep.equal(["apple", "ap"]); - - expect(await sut.get("banana")).deep.equal(["banana", "banana pudding"]); - expect(repo.history).to.deep.equal(["apple", "ap", "ban"]); - expect(await sut.get("banana p")).deep.equal(["banana pudding"]); - expect(repo.history).to.deep.equal(["apple", "ap", "ban", "banana"]); - expect(await sut.get("ba")).deep.equal(["banana", "banana pudding"]); - expect(repo.history).to.deep.equal(["apple", "ap", "ban", "banana", "b"]); - - expect(await sut.get("")).to.have.lengthOf(6); - expect(repo.history).to.deep.equal([ - "apple", - "ap", - "ban", - "banana", - "b", - "", - ]); - }); - }); -}); diff --git a/test/background/completion/impl/filters.test.ts b/test/background/completion/impl/filters.test.ts index 70c2663..b160944 100644 --- a/test/background/completion/impl/filters.test.ts +++ b/test/background/completion/impl/filters.test.ts @@ -54,6 +54,19 @@ describe("background/usecases/filters", () => { }); describe("filterByPathname", () => { + it("remains items less than minimam length", () => { + const pages = [ + { id: "0", url: "http://i-beam.org/search?q=apple" }, + { id: "1", url: "http://i-beam.org/search?q=apple_banana" }, + { id: "2", url: "http://i-beam.org/search?q=apple_banana_cherry" }, + { id: "3", url: "http://i-beam.org/request?q=apple" }, + { id: "4", url: "http://i-beam.org/request?q=apple_banana" }, + { id: "5", url: "http://i-beam.org/request?q=apple_banana_cherry" }, + ]; + const filtered = filters.filterByPathname(pages, 10); + expect(filtered).to.have.lengthOf(6); + }); + it("filters by length of pathname", () => { const pages = [ { id: "0", url: "http://i-beam.org/search?q=apple" }, @@ -63,7 +76,7 @@ describe("background/usecases/filters", () => { { id: "4", url: "http://i-beam.net/search?q=apple_banana" }, { id: "5", url: "http://i-beam.net/search?q=apple_banana_cherry" }, ]; - const filtered = filters.filterByPathname(pages); + const filtered = filters.filterByPathname(pages, 0); expect(filtered).to.deep.equal([ { id: "0", url: "http://i-beam.org/search?q=apple" }, { id: "3", url: "http://i-beam.net/search?q=apple" }, @@ -72,6 +85,19 @@ describe("background/usecases/filters", () => { }); describe("filterByOrigin", () => { + it("remains items less than minimam length", () => { + const pages = [ + { id: "0", url: "http://i-beam.org/search?q=apple" }, + { id: "1", url: "http://i-beam.org/search?q=apple_banana" }, + { id: "2", url: "http://i-beam.org/search?q=apple_banana_cherry" }, + { id: "3", url: "http://i-beam.org/request?q=apple" }, + { id: "4", url: "http://i-beam.org/request?q=apple_banana" }, + { id: "5", url: "http://i-beam.org/request?q=apple_banana_cherry" }, + ]; + const filtered = filters.filterByOrigin(pages, 10); + expect(filtered).to.have.lengthOf(6); + }); + it("filters by length of pathname", () => { const pages = [ { id: "0", url: "http://i-beam.org/search?q=apple" }, @@ -81,7 +107,7 @@ describe("background/usecases/filters", () => { { id: "4", url: "http://i-beam.org/request?q=apple_banana" }, { id: "5", url: "http://i-beam.org/request?q=apple_banana_cherry" }, ]; - const filtered = filters.filterByOrigin(pages); + const filtered = filters.filterByOrigin(pages, 0); expect(filtered).to.deep.equal([ { id: "0", url: "http://i-beam.org/search?q=apple" }, ]); |