Merge pull request #1669 from jakemcdermott/fix-1668

use icontains when expected for searches
This commit is contained in:
Jake McDermott 2018-05-03 13:19:58 -04:00 committed by GitHub
commit b9f9104f57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 31 additions and 4 deletions

View File

@ -104,6 +104,7 @@ function QuerysetService ($q, Rest, ProcessErrors, $rootScope, Wait, DjangoSearc
}
let paramString = exclude ? "not__" : "";
let valueString = paramParts[1];
if(keySplit.length === 1) {
if(searchTerm && !lessThanGreaterThan) {
if(singleSearchParam) {
@ -407,9 +408,9 @@ function QuerysetService ($q, Rest, ProcessErrors, $rootScope, Wait, DjangoSearc
if (termParts.length === 1) {
termParams = searchWithoutKey(term, singleSearchParam);
} else if ((isAnsibleFactField && isAnsibleFactField(termParts)) || (isFilterableBaseField && isFilterableBaseField(termParts))) {
termParams = this.encodeParam({ term, singleSearchParam });
termParams = this.encodeParam({ term, singleSearchParam, searchTerm: true });
} else if (isRelatedField && isRelatedField(termParts)) {
termParams = this.encodeParam({ term, singleSearchParam, related: true });
termParams = this.encodeParam({ term, singleSearchParam, relatedSearchTerm: true });
} else {
termParams = searchWithoutKey(term, singleSearchParam);
}
@ -458,9 +459,9 @@ function QuerysetService ($q, Rest, ProcessErrors, $rootScope, Wait, DjangoSearc
if (termParts.length === 1) {
removed = searchWithoutKey(term, singleSearchParam);
} else if ((isAnsibleFactField && isAnsibleFactField(termParts)) || (isFilterableBaseField && isFilterableBaseField(termParts))) {
removed = this.encodeParam({ term, singleSearchParam });
removed = this.encodeParam({ term, singleSearchParam, searchTerm: true });
} else if (isRelatedField && isRelatedField(termParts)) {
removed = this.encodeParam({ term, singleSearchParam, related: true });
removed = this.encodeParam({ term, singleSearchParam, relatedSearchTerm: true });
} else {
removed = searchWithoutKey(term, singleSearchParam);
}

View File

@ -58,6 +58,32 @@ describe('Service: QuerySet', () => {
});
});
describe('getSearchInputQueryset', () => {
it('creates the expected queryset', () =>{
spyOn(QuerySet, 'encodeParam').and.callThrough();
const term = 'name:foo';
const isFilterableBaseField = () => true;
const isRelatedField = () => false;
expect(QuerySet.getSearchInputQueryset(term, isFilterableBaseField, isRelatedField)).toEqual({ name__icontains_DEFAULT: 'foo' });
expect(QuerySet.encodeParam).toHaveBeenCalledWith({ term: "name:foo", searchTerm: true, singleSearchParam: null });
});
});
describe('removeTermsFromQueryset', () => {
it('creates the expected queryset', () =>{
spyOn(QuerySet, 'encodeParam').and.callThrough();
const queryset = { page_size: "20", order_by: "name", project__search_DEFAULT: "foo" };
const term = 'project:foo';
const isFilterableBaseField = () => false;
const isRelatedField = () => true;
expect(QuerySet.removeTermsFromQueryset(queryset, term, isFilterableBaseField, isRelatedField)).toEqual({ page_size: "20", order_by: "name" });
expect(QuerySet.encodeParam).toHaveBeenCalledWith({ term: 'project:foo', relatedSearchTerm: true, singleSearchParam: null });
});
});
describe('fn search', () => {
let pattern = /\/api\/v2\/inventories\/(.+)\/groups\/*/,