1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { getAdvancedDataFromQuery, getQueryFromAdvancedData } from "~/store/search-bar/search-bar-actions";
6 import { ResourceKind } from "~/models/resource";
8 describe('search-bar-actions', () => {
9 describe('getAdvancedDataFromQuery', () => {
10 it('should correctly build advanced data record from query #1', () => {
11 const r = getAdvancedDataFromQuery('val0 has:"file size":"100mb" val2 has:"user":"daniel" is:starred val2 val0 is:trashed');
13 searchValue: 'val0 val2',
16 projectUuid: undefined,
33 it('should correctly build advanced data record from query #2', () => {
34 const r = getAdvancedDataFromQuery('document from:2017-08-01 pdf has:"filesize":"101mb" is:trashed type:arvados#collection cluster:c97qx');
36 searchValue: 'document pdf',
37 type: ResourceKind.COLLECTION,
39 projectUuid: undefined,
42 dateFrom: '2017-08-01',
54 describe('getQueryFromAdvancedData', () => {
55 it('should build query from advanced data', () => {
56 const q = getQueryFromAdvancedData({
57 searchValue: 'document pdf',
58 type: ResourceKind.COLLECTION,
60 projectUuid: undefined,
63 dateFrom: '2017-08-01',
66 { key: 'file size', value: '101mb' },
67 { key: 'Species', value: 'Human' },
68 { key: 'Species', value: 'Canine' },
73 expect(q).toBe('document pdf type:arvados#collection cluster:c97qx is:trashed from:2017-08-01 has:"file size":"101mb" has:"Species":"Human" has:"Species":"Canine"');
76 it('should add has:"key":"value" expression to query from same property key', () => {
77 const searchValue = 'document pdf has:"file size":"101mb" has:"Species":"Canine"';
82 projectUuid: undefined,
88 { key: 'file size', value: '101mb' },
89 { key: 'Species', value: 'Canine' },
97 { key: 'file size', value: '101mb' },
98 { key: 'Species', value: 'Canine' },
99 { key: 'Species', value: 'Human' },
102 const q = getQueryFromAdvancedData(currData, prevData);
103 expect(q).toBe('document pdf has:"file size":"101mb" has:"Species":"Canine" has:"Species":"Human"');
106 it('should add has:"keyID":"valueID" expression to query when necessary', () => {
107 const searchValue = 'document pdf has:"file size":"101mb"';
112 projectUuid: undefined,
118 { key: 'file size', value: '101mb' },
126 { key: 'file size', value: '101mb' },
127 { key: 'Species', keyID: 'IDTAGSPECIES', value: 'Human', valueID: 'IDVALHUMAN'},
130 const q = getQueryFromAdvancedData(currData, prevData);
131 expect(q).toBe('document pdf has:"file size":"101mb" has:"IDTAGSPECIES":"IDVALHUMAN"');
134 it('should remove has:"key":"value" expression from query', () => {
135 const searchValue = 'document pdf has:"file size":"101mb" has:"Species":"Human" has:"Species":"Canine"';
140 projectUuid: undefined,
146 { key: 'file size', value: '101mb' },
147 { key: 'Species', value: 'Canine' },
148 { key: 'Species', value: 'Human' },
156 { key: 'file size', value: '101mb' },
157 { key: 'Species', value: 'Canine' },
160 const q = getQueryFromAdvancedData(currData, prevData);
161 expect(q).toBe('document pdf has:"file size":"101mb" has:"Species":"Canine"');