//
// SPDX-License-Identifier: AGPL-3.0
-import { getAdvancedDataFromQuery, getQueryFromAdvancedData } from "~/store/search-bar/search-bar-actions";
-import { ResourceKind } from "~/models/resource";
+import { getAdvancedDataFromQuery, getQueryFromAdvancedData } from "store/search-bar/search-bar-actions";
+import { ResourceKind } from "models/resource";
describe('search-bar-actions', () => {
describe('getAdvancedDataFromQuery', () => {
it('should correctly build advanced data record from query #1', () => {
- const r = getAdvancedDataFromQuery('val0 has:"file size":"100mb" val2 has:"user":"daniel" is:starred val2 val0 is:trashed');
+ const r = getAdvancedDataFromQuery('val0 has:"file size":"100mb" val2 has:"user":"daniel" is:starred val2 val0');
expect(r).toEqual({
searchValue: 'val0 val2',
type: undefined,
cluster: undefined,
projectUuid: undefined,
- inTrash: true,
+ inTrash: false,
+ pastVersions: false,
dateFrom: '',
dateTo: '',
properties: [{
});
it('should correctly build advanced data record from query #2', () => {
- const r = getAdvancedDataFromQuery('document from:2017-08-01 pdf has:"filesize":"101mb" is:trashed type:arvados#collection cluster:c97qx');
+ const r = getAdvancedDataFromQuery('document from:2017-08-01 pdf has:"filesize":"101mb" is:trashed type:arvados#collection cluster:c97qx is:pastVersion');
expect(r).toEqual({
searchValue: 'document pdf',
type: ResourceKind.COLLECTION,
cluster: 'c97qx',
projectUuid: undefined,
inTrash: true,
+ pastVersions: true,
dateFrom: '2017-08-01',
dateTo: '',
properties: [{
cluster: 'c97qx',
projectUuid: undefined,
inTrash: true,
+ pastVersions: false,
dateFrom: '2017-08-01',
dateTo: '',
- properties: [{
- key: 'file size',
- value: '101mb'
- }],
+ properties: [
+ { key: 'file size', value: '101mb' },
+ { key: 'Species', value: 'Human' },
+ { key: 'Species', value: 'Canine' },
+ ],
+ saveQuery: false,
+ queryName: ''
+ });
+ 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"');
+ });
+
+ it('should build query from advanced data #2', () => {
+ const q = getQueryFromAdvancedData({
+ searchValue: 'document pdf',
+ type: ResourceKind.COLLECTION,
+ cluster: 'c97qx',
+ projectUuid: undefined,
+ inTrash: false,
+ pastVersions: true,
+ dateFrom: '2017-08-01',
+ dateTo: '',
+ properties: [
+ { key: 'file size', value: '101mb' },
+ { key: 'Species', value: 'Human' },
+ { key: 'Species', value: 'Canine' },
+ ],
saveQuery: false,
queryName: ''
});
- expect(q).toBe('document pdf type:arvados#collection cluster:c97qx is:trashed from:2017-08-01 has:"file size":"101mb"');
+ expect(q).toBe('document pdf type:arvados#collection cluster:c97qx is:pastVersion from:2017-08-01 has:"file size":"101mb" has:"Species":"Human" has:"Species":"Canine"');
+ });
+
+ it('should add has:"key":"value" expression to query from same property key', () => {
+ const searchValue = 'document pdf has:"file size":"101mb" has:"Species":"Canine"';
+ const prevData = {
+ searchValue,
+ type: undefined,
+ cluster: undefined,
+ projectUuid: undefined,
+ inTrash: false,
+ pastVersions: false,
+ dateFrom: '',
+ dateTo: '',
+ properties: [
+ { key: 'file size', value: '101mb' },
+ { key: 'Species', value: 'Canine' },
+ ],
+ saveQuery: false,
+ queryName: ''
+ };
+ const currData = {
+ ...prevData,
+ properties: [
+ { key: 'file size', value: '101mb' },
+ { key: 'Species', value: 'Canine' },
+ { key: 'Species', value: 'Human' },
+ ],
+ };
+ const q = getQueryFromAdvancedData(currData, prevData);
+ expect(q).toBe('document pdf has:"file size":"101mb" has:"Species":"Canine" has:"Species":"Human"');
+ });
+
+ it('should add has:"keyID":"valueID" expression to query when necessary', () => {
+ const searchValue = 'document pdf has:"file size":"101mb"';
+ const prevData = {
+ searchValue,
+ type: undefined,
+ cluster: undefined,
+ projectUuid: undefined,
+ inTrash: false,
+ pastVersions: false,
+ dateFrom: '',
+ dateTo: '',
+ properties: [
+ { key: 'file size', value: '101mb' },
+ ],
+ saveQuery: false,
+ queryName: ''
+ };
+ const currData = {
+ ...prevData,
+ properties: [
+ { key: 'file size', value: '101mb' },
+ { key: 'Species', keyID: 'IDTAGSPECIES', value: 'Human', valueID: 'IDVALHUMAN'},
+ ],
+ };
+ const q = getQueryFromAdvancedData(currData, prevData);
+ expect(q).toBe('document pdf has:"file size":"101mb" has:"IDTAGSPECIES":"IDVALHUMAN"');
+ });
+
+ it('should remove has:"key":"value" expression from query', () => {
+ const searchValue = 'document pdf has:"file size":"101mb" has:"Species":"Human" has:"Species":"Canine"';
+ const prevData = {
+ searchValue,
+ type: undefined,
+ cluster: undefined,
+ projectUuid: undefined,
+ inTrash: false,
+ pastVersions: false,
+ dateFrom: '',
+ dateTo: '',
+ properties: [
+ { key: 'file size', value: '101mb' },
+ { key: 'Species', value: 'Canine' },
+ { key: 'Species', value: 'Human' },
+ ],
+ saveQuery: false,
+ queryName: ''
+ };
+ const currData = {
+ ...prevData,
+ properties: [
+ { key: 'file size', value: '101mb' },
+ { key: 'Species', value: 'Canine' },
+ ],
+ };
+ const q = getQueryFromAdvancedData(currData, prevData);
+ expect(q).toBe('document pdf has:"file size":"101mb" has:"Species":"Canine"');
});
});
});