Create FilterBuilder tests
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Thu, 5 Jul 2018 13:48:29 +0000 (15:48 +0200)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Thu, 5 Jul 2018 13:48:29 +0000 (15:48 +0200)
Feature #13703

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/common/api/filter-builder.test.ts [new file with mode: 0644]

diff --git a/src/common/api/filter-builder.test.ts b/src/common/api/filter-builder.test.ts
new file mode 100644 (file)
index 0000000..3424393
--- /dev/null
@@ -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"]]]`);
+    });
+
+
+
+
+});