aboutsummaryrefslogtreecommitdiff
path: root/test/background/completion/impl
diff options
context:
space:
mode:
authorShin'ya Ueoka <ueokande@i-beam.org>2021-04-13 12:50:08 +0000
committerGitHub <noreply@github.com>2021-04-13 12:50:08 +0000
commit14df3053b98706f4cdba633c3583eb22aada6f1e (patch)
treeec401bbf80a691111333f370b0e2d35a12bef181 /test/background/completion/impl
parentd80d0f87b82ba4bd74ed9b2bb7354421a28a11b3 (diff)
parent53450dd2ae595aad5b4f6deb422c50bb5e55097d (diff)
Merge pull request #1099 from ueokande/delay-completion
Delay before filling completions
Diffstat (limited to 'test/background/completion/impl')
-rw-r--r--test/background/completion/impl/PrefetchAndCache.test.ts100
-rw-r--r--test/background/completion/impl/filters.test.ts30
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" },
]);