From 9820e0e8fc2e92de5c6b97a7b43a9ca54e5a2dd6 Mon Sep 17 00:00:00 2001 From: Michal Klobukowski Date: Thu, 5 Jul 2018 15:48:29 +0200 Subject: [PATCH] Create FilterBuilder tests Feature #13703 Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski --- src/common/api/filter-builder.test.ts | 86 +++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/common/api/filter-builder.test.ts 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"]]]`); + }); + + + + +}); -- 2.30.2