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,
32 it('should correctly build advanced data record from query #2', () => {
33 const r = getAdvancedDataFromQuery('document from:2017-08-01 pdf has:"filesize":"101mb" is:trashed type:arvados#collection cluster:c97qx');
35 searchValue: 'document pdf',
36 type: ResourceKind.COLLECTION,
38 projectUuid: undefined,
40 dateFrom: '2017-08-01',
52 describe('getQueryFromAdvancedData', () => {
53 it('should build query from advanced data', () => {
54 const q = getQueryFromAdvancedData({
55 searchValue: 'document pdf',
56 type: ResourceKind.COLLECTION,
58 projectUuid: undefined,
60 dateFrom: '2017-08-01',
63 { key: 'file size', value: '101mb' },
64 { key: 'Species', value: 'Human' },
65 { key: 'Species', value: 'Canine' },
70 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"');
73 it('should add has:"key":"value" expression to query from same property key', () => {
74 const searchValue = 'document pdf has:"file size":"101mb" has:"Species":"Canine"';
79 projectUuid: undefined,
84 { key: 'file size', value: '101mb' },
85 { key: 'Species', value: 'Canine' },
93 { key: 'file size', value: '101mb' },
94 { key: 'Species', value: 'Canine' },
95 { key: 'Species', value: 'Human' },
98 const q = getQueryFromAdvancedData(currData, prevData);
99 expect(q).toBe('document pdf has:"file size":"101mb" has:"Species":"Canine" has:"Species":"Human"');
102 it('should add has:"keyID":"valueID" expression to query when necessary', () => {
103 const searchValue = 'document pdf has:"file size":"101mb"';
108 projectUuid: undefined,
113 { key: 'file size', value: '101mb' },
121 { key: 'file size', value: '101mb' },
122 { key: 'Species', keyID: 'IDTAGSPECIES', value: 'Human', valueID: 'IDVALHUMAN'},
125 const q = getQueryFromAdvancedData(currData, prevData);
126 expect(q).toBe('document pdf has:"file size":"101mb" has:"IDTAGSPECIES":"IDVALHUMAN"');
129 it('should remove has:"key":"value" expression from query', () => {
130 const searchValue = 'document pdf has:"file size":"101mb" has:"Species":"Human" has:"Species":"Canine"';
135 projectUuid: undefined,
140 { key: 'file size', value: '101mb' },
141 { key: 'Species', value: 'Canine' },
142 { key: 'Species', value: 'Human' },
150 { key: 'file size', value: '101mb' },
151 { key: 'Species', value: 'Canine' },
154 const q = getQueryFromAdvancedData(currData, prevData);
155 expect(q).toBe('document pdf has:"file size":"101mb" has:"Species":"Canine"');