From: Michal Klobukowski Date: Thu, 5 Jul 2018 13:48:29 +0000 (+0200) Subject: Create FilterBuilder tests X-Git-Tag: 1.2.0~59^2~3 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/9820e0e8fc2e92de5c6b97a7b43a9ca54e5a2dd6 Create FilterBuilder tests Feature #13703 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- diff --git a/src/common/api/filter-builder.test.ts b/src/common/api/filter-builder.test.ts new file mode 100644 index 00000000..34243934 --- /dev/null +++ b/src/common/api/filter-builder.test.ts @@ -0,0 +1,86 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import FilterBuilder from "./filter-builder"; + +describe("FilterBuilder", () => { + + let filters: FilterBuilder; + + beforeEach(() => { + filters = FilterBuilder.create(); + }); + + it("should add 'equal' rule", () => { + expect( + filters.addEqual("etag", "etagValue").serialize() + ).toEqual(`[["etag","=","etagValue"]]`); + }); + + it("should add 'like' rule", () => { + expect( + filters.addLike("etag", "etagValue").serialize() + ).toEqual(`[["etag","like","%etagValue%"]]`); + }); + + it("should add 'ilike' rule", () => { + expect( + filters.addILike("etag", "etagValue").serialize() + ).toEqual(`[["etag","ilike","%etagValue%"]]`); + }); + + it("should add 'is_a' rule", () => { + expect( + filters.addIsA("etag", "etagValue").serialize() + ).toEqual(`[["etag","is_a","etagValue"]]`); + }); + + it("should add 'is_a' rule for set", () => { + expect( + filters.addIsA("etag", ["etagValue1", "etagValue2"]).serialize() + ).toEqual(`[["etag","is_a",["etagValue1","etagValue2"]]]`); + }); + + it("should add 'in' rule", () => { + expect( + filters.addIn("etag", "etagValue").serialize() + ).toEqual(`[["etag","in","etagValue"]]`); + }); + + it("should add 'in' rule for set", () => { + expect( + filters.addIn("etag", ["etagValue1", "etagValue2"]).serialize() + ).toEqual(`[["etag","in",["etagValue1","etagValue2"]]]`); + }); + + it("should add multiple rules", () => { + expect( + filters + .addIn("etag", ["etagValue1", "etagValue2"]) + .addEqual("href", "hrefValue") + .serialize() + ).toEqual(`[["etag","in",["etagValue1","etagValue2"]],["href","=","hrefValue"]]`); + }); + + it("should concatenate multiple builders", () => { + expect( + filters + .concat(FilterBuilder.create().addIn("etag", ["etagValue1", "etagValue2"])) + .concat(FilterBuilder.create().addEqual("href", "hrefValue")) + .serialize() + ).toEqual(`[["etag","in",["etagValue1","etagValue2"]],["href","=","hrefValue"]]`); + }); + + it("should add attribute prefix", () => { + expect(FilterBuilder + .create("myPrefix") + .addIn("etag", ["etagValue1", "etagValue2"]) + .serialize()) + .toEqual(`[["my_prefix.etag","in",["etagValue1","etagValue2"]]]`); + }); + + + + +});