fix filtering jests

This commit is contained in:
Ahmed Awan
2024-03-18 13:04:46 -05:00
parent 51572b10f6
commit df16ff06eb
2 changed files with 39 additions and 29 deletions
+29 -28
View File
@@ -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);
});
});
+10 -1
View File
@@ -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);
});
});