[arvados-workbench2] created: 2.4.0-143-g54805dd8
git repository hosting
git at public.arvados.org
Thu Sep 15 18:21:33 UTC 2022
at 54805dd83a984d4e34bb35146d2505bac12bc1d0 (commit)
commit 54805dd83a984d4e34bb35146d2505bac12bc1d0
Author: Daniel Kutyła <daniel.kutyla at contractors.roche.com>
Date: Thu Sep 15 20:20:52 2022 +0200
19051: Added quote handling in the search
Arvados-DCO-1.1-Signed-off-by: Daniel Kutyła <daniel.kutyla at contractors.roche.com>
diff --git a/cypress/integration/search.spec.js b/cypress/integration/search.spec.js
index 5434ca24..cbb091fd 100644
--- a/cypress/integration/search.spec.js
+++ b/cypress/integration/search.spec.js
@@ -105,6 +105,39 @@ describe('Search tests', function() {
});
});
+ it.only('can search items using quotes', function() {
+ const random = Math.floor(Math.random() * Math.floor(999999));
+ const colName = `Collection ${random}`;
+ const colName2 = `Collection test ${random}`;
+
+ // Creates the collection using the admin token so we can set up
+ // a bogus manifest text without block signatures.
+ cy.createCollection(adminUser.token, {
+ name: colName,
+ owner_uuid: activeUser.user.uuid,
+ preserve_version: true,
+ manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
+ }).as('collection1');
+
+ cy.createCollection(adminUser.token, {
+ name: colName2,
+ owner_uuid: activeUser.user.uuid,
+ preserve_version: true,
+ manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
+ }).as('collection2');
+
+ cy.getAll('@collection1', '@collection2')
+ .then(function() {
+ cy.loginAs(activeUser);
+
+ cy.doSearch(colName);
+ cy.get('[data-cy=search-results] table tbody tr').should('have.length', 2);
+
+ cy.doSearch(`"${colName}"`);
+ cy.get('[data-cy=search-results] table tbody tr').should('have.length', 1);
+ });
+ });
+
it('can display owner of the item', function() {
const colName = `Collection ${Math.floor(Math.random() * Math.floor(999999))}`;
diff --git a/src/services/api/filter-builder.ts b/src/services/api/filter-builder.ts
index 4809e7a8..da67935a 100644
--- a/src/services/api/filter-builder.ts
+++ b/src/services/api/filter-builder.ts
@@ -65,7 +65,18 @@ export class FilterBuilder {
}
public addFullTextSearch(value: string) {
- const terms = value.trim().split(/(\s+)/);
+ const regex = /"[^"]*"/;
+ const matches: any[] = [];
+
+ let match = value.match(regex);
+
+ while (match) {
+ value = value.replace(match[0], "");
+ matches.push(match[0].replace(/"/g, ''));
+ match = value.match(regex);
+ }
+
+ const terms = value.trim().split(/(\s+)/).concat(matches);
terms.forEach(term => {
if (term !== " ") {
this.addCondition("any", "ilike", term, "%", "%");
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list