Very Popular
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237import { assertStrictEquals as equals } from "../deps/assert.ts";import { buildFilter, buildSort } from "../plugins/search.ts";
Deno.test("Search by Tags", () => { const filter = buildFilter("foo bar");
equals( "(page) => page.dest?.ext === value0 && page.data?.tags?.includes(value1) && page.data?.tags?.includes(value2)", filter.toString(), );});
Deno.test("Search by Equal", () => { const filter = buildFilter("foo=bar");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo === value1", filter.toString(), );});
Deno.test("Search by Upper than", () => { const filter = buildFilter("foo>bar");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo > value1", filter.toString(), );});
Deno.test("Search by Upper or equals than", () => { const filter = buildFilter("foo>=bar");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo >= value1", filter.toString(), );});
Deno.test("Search by Lower than", () => { const filter = buildFilter("foo<bar");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo < value1", filter.toString(), );});
Deno.test("Search by Lower or equals than", () => { const filter = buildFilter("foo<=bar");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo <= value1", filter.toString(), );});
Deno.test("Search by Not Equal", () => { const filter = buildFilter("foo!=bar");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo !== value1", filter.toString(), );});
Deno.test("Search by Starts With", () => { const filter = buildFilter("foo^=bar");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo?.startsWith(value1)", filter.toString(), );});
Deno.test("Search by Ends With", () => { const filter = buildFilter("foo$=bar");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo?.endsWith(value1)", filter.toString(), );});
Deno.test("Search by Contains", () => { const filter = buildFilter("foo*=bar");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo?.includes(value1)", filter.toString(), );});
Deno.test("Search by Tags with OR", () => { const filter = buildFilter("foo|bar");
equals( "(page) => page.dest?.ext === value0 && value1.some((i) => page.data?.tags?.includes(i))", filter.toString(), );});
Deno.test("Search by Equal with OR", () => { const filter = buildFilter("foo=bar|baz");
equals( "(page) => page.dest?.ext === value0 && value1.some((i) => page.data?.foo === i)", filter.toString(), );});
Deno.test("Search by Not Equal with OR", () => { const filter = buildFilter("foo!=bar|baz");
equals( "(page) => page.dest?.ext === value0 && value1.some((i) => page.data?.foo !== i)", filter.toString(), );});
Deno.test("Search by Starts With with OR", () => { const filter = buildFilter("foo^=bar|baz");
equals( "(page) => page.dest?.ext === value0 && value1.some((i) => page.data?.foo?.startsWith(i))", filter.toString(), );});
Deno.test("Search by Ends With with OR", () => { const filter = buildFilter("foo$=bar|baz");
equals( "(page) => page.dest?.ext === value0 && value1.some((i) => page.data?.foo?.endsWith(i))", filter.toString(), );});
Deno.test("Search by Contains with OR", () => { const filter = buildFilter("foo*=bar|baz");
equals( "(page) => page.dest?.ext === value0 && value1.some((i) => page.data?.foo?.includes(i))", filter.toString(), );});
Deno.test("Search Date by Equal", () => { const filter = buildFilter("foo=2000-01-02");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo?.getTime() === value1.getTime()", filter.toString(), );});
Deno.test("Search Date by Not Equal", () => { const filter = buildFilter("foo!=2000-01-02");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo?.getTime() !== value1.getTime()", filter.toString(), );});
Deno.test("Search Date by lower than", () => { const filter = buildFilter("foo<2000-01-02T18:00");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo?.getTime() < value1.getTime()", filter.toString(), );});
Deno.test("Search Date by lower or equals than", () => { const filter = buildFilter("foo<=2000-01-02T18:00");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo?.getTime() <= value1.getTime()", filter.toString(), );});
Deno.test("Search Date by upper than", () => { const filter = buildFilter("foo>2000-01-02T18:00");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo?.getTime() > value1.getTime()", filter.toString(), );});
Deno.test("Search Date by upper or equals than", () => { const filter = buildFilter("foo>=2000-01-02T18:00");
equals( "(page) => page.dest?.ext === value0 && page.data?.foo?.getTime() >= value1.getTime()", filter.toString(), );});
Deno.test("Sort by one field", () => { const sort = buildSort("order");
equals( "function anonymous(a,b\n) {\nreturn (a.data?.order == b.data?.order ? 0 : (a.data?.order < b.data?.order ? -1 : 1))\n}", sort.toString(), );});
Deno.test("Sort by one field DESC", () => { const sort = buildSort("order=desc");
equals( "function anonymous(a,b\n) {\nreturn (a.data?.order == b.data?.order ? 0 : (a.data?.order > b.data?.order ? -1 : 1))\n}", sort.toString(), );});
Deno.test("Sort by two fields", () => { const sort = buildSort("order title");
equals( "function anonymous(a,b\n) {\nreturn (a.data?.order == b.data?.order ? (a.data?.title == b.data?.title ? 0 : (a.data?.title < b.data?.title ? -1 : 1)) : (a.data?.order < b.data?.order ? -1 : 1))\n}", sort.toString(), );});
Deno.test("Sort by two fields, sencod is DESC", () => { const sort = buildSort("order title=desc");
equals( "function anonymous(a,b\n) {\nreturn (a.data?.order == b.data?.order ? (a.data?.title == b.data?.title ? 0 : (a.data?.title > b.data?.title ? -1 : 1)) : (a.data?.order < b.data?.order ? -1 : 1))\n}", sort.toString(), );});