workflow-view-middleware-service
[arvados.git] / src / services / api / filter-builder.test.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { FilterBuilder } from "./filter-builder";
6
7 describe("FilterBuilder", () => {
8
9     let filters: FilterBuilder;
10
11     beforeEach(() => {
12         filters = new FilterBuilder();
13     });
14
15     it("should add 'equal' rule (string)", () => {
16         expect(
17             filters.addEqual("etag", "etagValue").getFilters()
18         ).toEqual(`["etag","=","etagValue"]`);
19     });
20
21     it("should add 'equal' rule (boolean)", () => {
22         expect(
23             filters.addEqual("is_trashed", true).getFilters()
24         ).toEqual(`["is_trashed","=",true]`);
25     });
26
27     it("should add 'like' rule", () => {
28         expect(
29             filters.addLike("etag", "etagValue").getFilters()
30         ).toEqual(`["etag","like","%etagValue%"]`);
31     });
32
33     it("should add 'ilike' rule", () => {
34         expect(
35             filters.addILike("etag", "etagValue").getFilters()
36         ).toEqual(`["etag","ilike","%etagValue%"]`);
37     });
38
39     it("should add 'is_a' rule", () => {
40         expect(
41             filters.addIsA("etag", "etagValue").getFilters()
42         ).toEqual(`["etag","is_a","etagValue"]`);
43     });
44
45     it("should add 'is_a' rule for set", () => {
46         expect(
47             filters.addIsA("etag", ["etagValue1", "etagValue2"]).getFilters()
48         ).toEqual(`["etag","is_a",["etagValue1","etagValue2"]]`);
49     });
50
51     it("should add 'in' rule", () => {
52         expect(
53             filters.addIn("etag", "etagValue").getFilters()
54         ).toEqual(`["etag","in","etagValue"]`);
55     });
56
57     it("should add 'in' rule for set", () => {
58         expect(
59             filters.addIn("etag", ["etagValue1", "etagValue2"]).getFilters()
60         ).toEqual(`["etag","in",["etagValue1","etagValue2"]]`);
61     });
62
63     it("should add multiple rules", () => {
64         expect(
65             filters
66                 .addIn("etag", ["etagValue1", "etagValue2"])
67                 .addEqual("href", "hrefValue")
68                 .getFilters()
69         ).toEqual(`["etag","in",["etagValue1","etagValue2"]],["href","=","hrefValue"]`);
70     });
71
72     it("should add attribute prefix", () => {
73         expect(new FilterBuilder()
74             .addIn("etag", ["etagValue1", "etagValue2"], "myPrefix")
75             .getFilters())
76             .toEqual(`["my_prefix.etag","in",["etagValue1","etagValue2"]]`);
77     });
78 });