Remove age and limit restrictions from dashboard links

Remove any age and limit restrictions from the query when drilling down into the
dashboard.

Change-Id: I406aa2cb93fe90edf38b3905589c6a9b173db4c6
This commit is contained in:
Dhruv Srivastava
2019-10-24 11:46:05 +02:00
parent 658afe6b2e
commit c937746515
2 changed files with 65 additions and 1 deletions

View File

@@ -216,8 +216,19 @@
this.sections = changes ? [{results: changes}] : [];
},
_processQuery(query) {
let tokens = query.split(' ');
const invalidTokens = ['limit:', 'age:', '-age:'];
tokens = tokens.filter(token => {
return !invalidTokens.some(invalidToken => {
return token.startsWith(invalidToken);
});
});
return tokens.join(' ');
},
_sectionHref(query) {
return Gerrit.Nav.getUrlForSearchQuery(query);
return Gerrit.Nav.getUrlForSearchQuery(this._processQuery(query));
},
/**

View File

@@ -433,6 +433,59 @@ limitations under the License.
});
});
suite('dashboard queries', () => {
let element;
let sandbox;
setup(() => {
sandbox = sinon.sandbox.create();
element = fixture('basic');
});
teardown(() => { sandbox.restore(); });
test('query without age and limit unchanged', () => {
const query = 'status:closed owner:me';
assert.deepEqual(element._processQuery(query), query);
});
test('query with age and limit', () => {
const query = 'status:closed age:1week limit:10 owner:me';
const expectedQuery = 'status:closed owner:me';
assert.deepEqual(element._processQuery(query), expectedQuery);
});
test('query with age', () => {
const query = 'status:closed age:1week owner:me';
const expectedQuery = 'status:closed owner:me';
assert.deepEqual(element._processQuery(query), expectedQuery);
});
test('query with limit', () => {
const query = 'status:closed limit:10 owner:me';
const expectedQuery = 'status:closed owner:me';
assert.deepEqual(element._processQuery(query), expectedQuery);
});
test('query with age as value and not key', () => {
const query = 'status:closed random:age';
const expectedQuery = 'status:closed random:age';
assert.deepEqual(element._processQuery(query), expectedQuery);
});
test('query with limit as value and not key', () => {
const query = 'status:closed random:limit';
const expectedQuery = 'status:closed random:limit';
assert.deepEqual(element._processQuery(query), expectedQuery);
});
test('query with -age key', () => {
const query = 'status:closed -age:1week';
const expectedQuery = 'status:closed';
assert.deepEqual(element._processQuery(query), expectedQuery);
});
});
suite('gr-change-list sections', () => {
let element;
let sandbox;