diff --git a/client/src/utils/filterConversion.test.js b/client/src/utils/filterConversion.test.js index 6437d64802a..cf3230e4d13 100644 --- a/client/src/utils/filterConversion.test.js +++ b/client/src/utils/filterConversion.test.js @@ -1,7 +1,9 @@ import { HistoryFilters } from "components/History/HistoryFilters"; -import { PublishedWorkflowFilters } from "components/Workflow/WorkflowFilters"; +import { WorkflowFilters } from "components/Workflow/WorkflowFilters"; describe("test filtering helpers to convert filters to filter text", () => { + const MyWorkflowFilters = WorkflowFilters("my"); + const PublishedWorkflowFilters = WorkflowFilters("published"); it("conversion from filters to new filter text", async () => { const normalized = HistoryFilters.defaultFilters; expect(Object.keys(normalized).length).toBe(2); @@ -10,7 +12,7 @@ describe("test filtering helpers to convert filters to filter text", () => { }); it("verify the existence of defaults", async () => { - let filters = {}; + const filters = {}; Object.entries(HistoryFilters.defaultFilters).forEach(([key, value]) => { filters[key] = value; }); @@ -22,13 +24,6 @@ describe("test filtering helpers to convert filters to filter text", () => { expect(HistoryFilters.containsDefaults(filters)).toBe(false); filters["visible"] = String(HistoryFilters.defaultFilters.visible).toUpperCase(); expect(HistoryFilters.containsDefaults(filters)).toBe(true); - filters = {}; - Object.entries(PublishedWorkflowFilters.defaultFilters).forEach(([key, value]) => { - filters[key] = value; - }); - expect(PublishedWorkflowFilters.containsDefaults(filters)).toBe(true); - filters["published"] = !PublishedWorkflowFilters.defaultFilters.published; - expect(PublishedWorkflowFilters.containsDefaults(filters)).toBe(false); }); it("verify correct conversion of filters", async () => { @@ -37,14 +32,16 @@ describe("test filtering helpers to convert filters to filter text", () => { visible: HistoryFilters.defaultFilters.visible, name: "name", other: "other", - tag: ["tag1", "tag2"], + tag: ["tag1", "'tag2'", "'#tag3'"], genome_build: "", - published: PublishedWorkflowFilters.defaultFilters.published, + published: true, }; - const validHistFilters = HistoryFilters.getValidFilters(filters); + const validHistFilters = HistoryFilters.getValidFilters(filters).validFilters; expect(Object.keys(validHistFilters)).toEqual(["deleted", "visible", "name"]); - const validWfFilters = PublishedWorkflowFilters.getValidFilters(filters); - expect(Object.keys(validWfFilters)).toEqual(["deleted", "name", "tag", "published"]); + const validMyWfFilters = MyWorkflowFilters.getValidFilters(filters).validFilters; + expect(Object.keys(validMyWfFilters)).toEqual(["deleted", "name", "tag", "published"]); + const validPubWfFilters = PublishedWorkflowFilters.getValidFilters(filters).validFilters; + expect(Object.keys(validPubWfFilters)).toEqual(["name", "tag"]); expect(HistoryFilters.getFilterText(filters)).toBe("name:name"); filters["visible"] = !HistoryFilters.defaultFilters.visible; @@ -52,15 +49,27 @@ describe("test filtering helpers to convert filters to filter text", () => { filters["visible"] = HistoryFilters.defaultFilters.visible; expect(HistoryFilters.getFilterText(filters)).toBe("name:name"); - expect(PublishedWorkflowFilters.getFilterText(filters, true)).toBe("name:name tag:tag1 tag:tag2 is:published"); + // non-backend filter text keeps filters as is + expect(MyWorkflowFilters.getFilterText(filters)).toBe("name:name tag:tag1 tag:'tag2' tag:'#tag3' is:published"); + + // backend filter text adjusts name tag by replacing `#` with `name:` + expect(MyWorkflowFilters.getFilterText(filters, true)).toBe( + "name:name tag:tag1 tag:'tag2' tag:'name:tag3' is:published" + ); + + expect(PublishedWorkflowFilters.getFilterText(filters, true)).toBe( + "name:name tag:tag1 tag:'tag2' tag:'name:tag3'" + ); delete filters["published"]; - expect(PublishedWorkflowFilters.getFilterText(filters, true)).toBe("name:name tag:tag1 tag:tag2"); + expect(MyWorkflowFilters.getFilterText(filters, true)).toBe("name:name tag:tag1 tag:'tag2' tag:'name:tag3'"); }); }); describe("test filtering helpers to convert filter text to filters", () => { + const PublishedWorkflowFilters = WorkflowFilters("published"); function getFilters(filteringClass, filterText) { - return filteringClass.getValidFilters(Object.fromEntries(filteringClass.getFiltersForText(filterText))); + return filteringClass.getValidFilters(Object.fromEntries(filteringClass.getFiltersForText(filterText))) + .validFilters; } it("verify the existence of defaults", async () => { @@ -74,11 +83,6 @@ describe("test filtering helpers to convert filter text to filters", () => { expect(HistoryFilters.containsDefaults(getFilters(HistoryFilters, filterText))).toBe(false); filterText = "deleted:false visible:true"; expect(HistoryFilters.containsDefaults(getFilters(HistoryFilters, filterText))).toBe(true); - - filterText = ""; - expect(PublishedWorkflowFilters.containsDefaults(getFilters(PublishedWorkflowFilters, filterText))).toBe(true); - filterText = "is:published is:deleted"; - expect(PublishedWorkflowFilters.containsDefaults(getFilters(PublishedWorkflowFilters, filterText))).toBe(true); }); it("verify correct conversion of filterText (HistoryFilters)", async () => { @@ -104,17 +108,14 @@ describe("test filtering helpers to convert filter text to filters", () => { it("verify correct conversion of filterText (PublishedWorkflowFilters)", async () => { const filters = { - published: PublishedWorkflowFilters.defaultFilters.published, name: "name", }; - let filterText = "name:name"; + let filterText = "name:name is:published"; expect(getFilters(PublishedWorkflowFilters, filterText)).toEqual(filters); filterText = "published:false name:name"; - // filters["visible"] = !PublishedWorkflowFilters.defaultFilters.visible; - // delete filters["deleted"]; expect(getFilters(PublishedWorkflowFilters, filterText)).toEqual(filters); - filterText = "name:name invalid:invalid is:deleted"; - filters["deleted"] = true; + filterText = "name:name invalid:invalid user:testUser"; + filters["user"] = "testUser"; expect(getFilters(PublishedWorkflowFilters, filterText)).toEqual(filters); }); }); diff --git a/client/src/utils/filtering.test.js b/client/src/utils/filtering.test.js index e941eb08e0c..585bb72e334 100644 --- a/client/src/utils/filtering.test.js +++ b/client/src/utils/filtering.test.js @@ -14,6 +14,10 @@ const sampleFilters = [ validFilters: { deleted: true, }, + invalidFilters: { + invalid: "value", + visible: null, + }, validText: "deleted:true visible:any", }, { @@ -28,6 +32,9 @@ const sampleFilters = [ related: 10, hid_gt: 5, }, + invalidFilters: { + hid_less_than: 20, + }, validText: "deleted:any related:10 hid>5 visible:any", }, ]; @@ -90,7 +97,9 @@ describe("filtering", () => { }); test("parse get valid filters and settings", () => { sampleFilters.forEach((sample) => { - expect(HistoryFilters.getValidFilters(sample.filters)).toEqual(sample.validFilters); + const { validFilters, invalidFilters } = HistoryFilters.getValidFilters(sample.filters); + expect(validFilters).toEqual(sample.validFilters); + expect(invalidFilters).toEqual(sample.invalidFilters); expect(HistoryFilters.getFilterText(sample.filters)).toEqual(sample.validText); }); });