aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared/searchQueryParser.test.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2024-12-31 13:58:23 +0000
committerMohamed Bassem <me@mbassem.com>2024-12-31 14:01:09 +0000
commit4deda9d477141e864f472ba95003e3974346f10d (patch)
treef2cee981872359b2d601a3009fd27e8dc4daec91 /packages/shared/searchQueryParser.test.ts
parent17af22bb6df42e1f42809261db3eda45fb2ffe3f (diff)
downloadkarakeep-4deda9d477141e864f472ba95003e3974346f10d.tar.zst
feat: Add support for negative search terms
Diffstat (limited to 'packages/shared/searchQueryParser.test.ts')
-rw-r--r--packages/shared/searchQueryParser.test.ts92
1 files changed, 88 insertions, 4 deletions
diff --git a/packages/shared/searchQueryParser.test.ts b/packages/shared/searchQueryParser.test.ts
index 428d5929..5bbb3f77 100644
--- a/packages/shared/searchQueryParser.test.ts
+++ b/packages/shared/searchQueryParser.test.ts
@@ -12,7 +12,7 @@ describe("Search Query Parser", () => {
archived: true,
},
});
- expect(parseSearchQuery("is:not_archived")).toEqual({
+ expect(parseSearchQuery("-is:archived")).toEqual({
result: "full",
text: "",
matcher: {
@@ -28,7 +28,7 @@ describe("Search Query Parser", () => {
favourited: true,
},
});
- expect(parseSearchQuery("is:not_fav")).toEqual({
+ expect(parseSearchQuery("-is:fav")).toEqual({
result: "full",
text: "",
matcher: {
@@ -45,6 +45,16 @@ describe("Search Query Parser", () => {
matcher: {
type: "url",
url: "https://example.com",
+ inverse: false,
+ },
+ });
+ expect(parseSearchQuery("-url:https://example.com")).toEqual({
+ result: "full",
+ text: "",
+ matcher: {
+ type: "url",
+ url: "https://example.com",
+ inverse: true,
},
});
expect(parseSearchQuery('url:"https://example.com"')).toEqual({
@@ -53,6 +63,16 @@ describe("Search Query Parser", () => {
matcher: {
type: "url",
url: "https://example.com",
+ inverse: false,
+ },
+ });
+ expect(parseSearchQuery('-url:"https://example.com"')).toEqual({
+ result: "full",
+ text: "",
+ matcher: {
+ type: "url",
+ url: "https://example.com",
+ inverse: true,
},
});
expect(parseSearchQuery("#my-tag")).toEqual({
@@ -61,6 +81,16 @@ describe("Search Query Parser", () => {
matcher: {
type: "tagName",
tagName: "my-tag",
+ inverse: false,
+ },
+ });
+ expect(parseSearchQuery("-#my-tag")).toEqual({
+ result: "full",
+ text: "",
+ matcher: {
+ type: "tagName",
+ tagName: "my-tag",
+ inverse: true,
},
});
expect(parseSearchQuery('#"my tag"')).toEqual({
@@ -69,6 +99,16 @@ describe("Search Query Parser", () => {
matcher: {
type: "tagName",
tagName: "my tag",
+ inverse: false,
+ },
+ });
+ expect(parseSearchQuery('-#"my tag"')).toEqual({
+ result: "full",
+ text: "",
+ matcher: {
+ type: "tagName",
+ tagName: "my tag",
+ inverse: true,
},
});
expect(parseSearchQuery("list:my-list")).toEqual({
@@ -77,6 +117,16 @@ describe("Search Query Parser", () => {
matcher: {
type: "listName",
listName: "my-list",
+ inverse: false,
+ },
+ });
+ expect(parseSearchQuery("-list:my-list")).toEqual({
+ result: "full",
+ text: "",
+ matcher: {
+ type: "listName",
+ listName: "my-list",
+ inverse: true,
},
});
expect(parseSearchQuery('list:"my list"')).toEqual({
@@ -85,6 +135,16 @@ describe("Search Query Parser", () => {
matcher: {
type: "listName",
listName: "my list",
+ inverse: false,
+ },
+ });
+ expect(parseSearchQuery('-list:"my list"')).toEqual({
+ result: "full",
+ text: "",
+ matcher: {
+ type: "listName",
+ listName: "my list",
+ inverse: true,
},
});
});
@@ -95,6 +155,16 @@ describe("Search Query Parser", () => {
matcher: {
type: "dateAfter",
dateAfter: new Date("2023-10-12"),
+ inverse: false,
+ },
+ });
+ expect(parseSearchQuery("-after:2023-10-12")).toEqual({
+ result: "full",
+ text: "",
+ matcher: {
+ type: "dateAfter",
+ dateAfter: new Date("2023-10-12"),
+ inverse: true,
},
});
expect(parseSearchQuery("before:2023-10-12")).toEqual({
@@ -103,12 +173,22 @@ describe("Search Query Parser", () => {
matcher: {
type: "dateBefore",
dateBefore: new Date("2023-10-12"),
+ inverse: false,
+ },
+ });
+ expect(parseSearchQuery("-before:2023-10-12")).toEqual({
+ result: "full",
+ text: "",
+ matcher: {
+ type: "dateBefore",
+ dateBefore: new Date("2023-10-12"),
+ inverse: true,
},
});
});
test("complex queries", () => {
- expect(parseSearchQuery("is:fav is:archived")).toEqual({
+ expect(parseSearchQuery("is:fav -is:archived")).toEqual({
result: "full",
text: "",
matcher: {
@@ -120,7 +200,7 @@ describe("Search Query Parser", () => {
},
{
type: "archived",
- archived: true,
+ archived: false,
},
],
},
@@ -143,6 +223,7 @@ describe("Search Query Parser", () => {
{
type: "tagName",
tagName: "my-tag",
+ inverse: false,
},
],
},
@@ -170,6 +251,7 @@ describe("Search Query Parser", () => {
{
type: "tagName",
tagName: "my-tag",
+ inverse: false,
},
],
},
@@ -197,6 +279,7 @@ describe("Search Query Parser", () => {
{
type: "tagName",
tagName: "my-tag",
+ inverse: false,
},
],
},
@@ -237,6 +320,7 @@ describe("Search Query Parser", () => {
{
type: "tagName",
tagName: "my-tag",
+ inverse: false,
},
],
},