[ADF-5429] Improve search for testability (#7198)

* improve search for testability

* fix lint
This commit is contained in:
Eugenio Romano 2021-08-06 11:09:51 +02:00 committed by GitHub
parent f30b20cc46
commit c01417a08f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 207 additions and 105 deletions

View File

@ -17,7 +17,7 @@
import { SearchSortingPickerComponent } from './search-sorting-picker.component';
import { SearchQueryBuilderService } from '../../services/search-query-builder.service';
import { AppConfigService } from '@alfresco/adf-core';
import { AlfrescoApiService, AppConfigService } from '@alfresco/adf-core';
import { SearchConfiguration } from '../../models/search-configuration.interface';
import { TestBed } from '@angular/core/testing';
import { ContentTestingModule } from '../../../testing/content.testing.module';
@ -53,7 +53,9 @@ describe('SearchSortingPickerComponent', () => {
<any> { id: 'cat1', enabled: true }
]
};
queryBuilder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
queryBuilder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
component = new SearchSortingPickerComponent(queryBuilder);
});

View File

@ -42,6 +42,7 @@ import { SearchForm } from '../models/search-form.interface';
providedIn: 'root'
})
export abstract class BaseQueryBuilderService {
private searchApi: SearchApi;
/* Stream that emits the search configuration whenever the user change the search forms */
configUpdated = new Subject<SearchConfiguration>();
@ -87,6 +88,7 @@ export abstract class BaseQueryBuilderService {
ranges: { [id: string]: SearchRange } = {};
constructor(protected appConfig: AppConfigService, protected alfrescoApiService: AlfrescoApiService) {
this.searchApi = new SearchApi(this.alfrescoApiService.getInstance());
this.resetToDefaults();
}
@ -145,9 +147,14 @@ export abstract class BaseQueryBuilderService {
name: configuration.name || 'SEARCH.UNKNOWN_CONFIGURATION',
default: configuration.default || false,
selected: this.selectedConfiguration !== undefined ? index === this.selectedConfiguration : configuration.default
}));
}));
} else if (!!configurations) {
return [{ index: 0, name: configurations.name || 'SEARCH.UNKNOWN_CONFIGURATION', default: true, selected: true }];
return [{
index: 0,
name: configurations.name || 'SEARCH.UNKNOWN_CONFIGURATION',
default: true,
selected: true
}];
}
return [];
}
@ -285,8 +292,7 @@ export abstract class BaseQueryBuilderService {
try {
const query = queryBody ? queryBody : this.buildQuery();
if (query) {
const searchApi = new SearchApi(this.alfrescoApiService.getInstance());
const resultSetPaging: ResultSetPaging = await searchApi.search(query);
const resultSetPaging: ResultSetPaging = await this.searchApi.search(query);
this.executed.next(resultSetPaging);
}
} catch (error) {
@ -304,8 +310,7 @@ export abstract class BaseQueryBuilderService {
}
search(queryBody: QueryBody): Observable<ResultSetPaging> {
const searchApi = new SearchApi(this.alfrescoApiService.getInstance());
const promise = searchApi.search(queryBody);
const promise = this.searchApi.search(queryBody);
promise.then((resultSetPaging) => {
this.executed.next(resultSetPaging);

View File

@ -16,20 +16,17 @@
*/
import { SearchConfiguration } from '../models/search-configuration.interface';
import { AppConfigService, CoreModule, setupTestBed } from '@alfresco/adf-core';
import { AlfrescoApiService, AppConfigService } from '@alfresco/adf-core';
import { SearchHeaderQueryBuilderService } from './search-header-query-builder.service';
import { TestBed } from '@angular/core/testing';
import { ContentTestingModule } from '../../testing/content.testing.module';
import { TranslateModule } from '@ngx-translate/core';
describe('SearchHeaderQueryBuilderService', () => {
setupTestBed({
imports: [
TranslateModule.forRoot(),
CoreModule.forRoot(),
ContentTestingModule
]
beforeEach(() => {
TestBed.configureTestingModule({
imports: [ContentTestingModule]
});
});
const buildConfig = (searchSettings): AppConfigService => {
@ -47,9 +44,10 @@ describe('SearchHeaderQueryBuilderService', () => {
filterQueries: [{ query: 'query1' }, { query: 'query2' }]
};
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchHeaderQueryBuilderService(
buildConfig(config),
null,
alfrescoApiService,
null
);
@ -74,9 +72,10 @@ describe('SearchHeaderQueryBuilderService', () => {
filterQueries: [{ query: 'query1' }, { query: 'query2' }]
};
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const service = new SearchHeaderQueryBuilderService(
buildConfig(config),
null,
alfrescoApiService,
null
);
@ -87,9 +86,10 @@ describe('SearchHeaderQueryBuilderService', () => {
});
it('should have empty user query by default', () => {
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchHeaderQueryBuilderService(
buildConfig({}),
null,
alfrescoApiService,
null
);
expect(builder.userQuery).toBe('');
@ -108,9 +108,10 @@ describe('SearchHeaderQueryBuilderService', () => {
{ query: 'PARENT:"workspace://SpacesStore/fake-node-id"' }
];
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const searchHeaderService = new SearchHeaderQueryBuilderService(
buildConfig(config),
null,
alfrescoApiService,
null
);
@ -133,9 +134,10 @@ describe('SearchHeaderQueryBuilderService', () => {
filterQueries: expectedResult
};
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const searchHeaderService = new SearchHeaderQueryBuilderService(
buildConfig(config),
null,
alfrescoApiService,
null
);
@ -159,9 +161,10 @@ describe('SearchHeaderQueryBuilderService', () => {
]
};
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const searchHeaderService = new SearchHeaderQueryBuilderService(
buildConfig(config),
null,
alfrescoApiService,
null
);

View File

@ -17,7 +17,7 @@
import { SearchQueryBuilderService } from './search-query-builder.service';
import { SearchConfiguration } from '../models/search-configuration.interface';
import { AppConfigService } from '@alfresco/adf-core';
import { AlfrescoApiService, AppConfigService } from '@alfresco/adf-core';
import { FacetField } from '../models/facet-field.interface';
import { TestBed } from '@angular/core/testing';
import { ContentTestingModule } from '../../testing/content.testing.module';
@ -47,7 +47,8 @@ describe('SearchQueryBuilder', () => {
{ query: 'query2' }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.categories = [];
builder.filterQueries = [];
@ -62,18 +63,23 @@ describe('SearchQueryBuilder', () => {
});
it('should have empty user query by default', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
expect(builder.userQuery).toBe('');
});
it('should wrap user query with brackets', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
builder.userQuery = 'my query';
expect(builder.userQuery).toEqual('(my query)');
});
it('should trim user query value', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
builder.userQuery = ' something ';
expect(builder.userQuery).toEqual('(something)');
});
@ -86,7 +92,9 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat3', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
expect(builder.categories.length).toBe(2);
expect(builder.categories[0].id).toBe('cat1');
@ -101,7 +109,8 @@ describe('SearchQueryBuilder', () => {
{ query: 'query2' }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
expect(builder.filterQueries.length).toBe(2);
expect(builder.filterQueries[0].query).toBe('query1');
@ -109,7 +118,9 @@ describe('SearchQueryBuilder', () => {
});
it('should add new filter query', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
builder.addFilterQuery('q1');
@ -118,7 +129,9 @@ describe('SearchQueryBuilder', () => {
});
it('should not add empty filter query', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
builder.addFilterQuery(null);
builder.addFilterQuery('');
@ -127,7 +140,9 @@ describe('SearchQueryBuilder', () => {
});
it('should not add duplicate filter query', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
builder.addFilterQuery('q1');
builder.addFilterQuery('q1');
@ -138,7 +153,9 @@ describe('SearchQueryBuilder', () => {
});
it('should remove filter query', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
builder.addFilterQuery('q1');
builder.addFilterQuery('q2');
@ -150,7 +167,9 @@ describe('SearchQueryBuilder', () => {
});
it('should not remove empty query', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
builder.addFilterQuery('q1');
builder.addFilterQuery('q2');
expect(builder.filterQueries.length).toBe(2);
@ -170,7 +189,9 @@ describe('SearchQueryBuilder', () => {
]
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
const query = builder.getFacetQuery('query2');
expect(query.query).toBe('q2');
@ -186,7 +207,9 @@ describe('SearchQueryBuilder', () => {
]
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
const query1 = builder.getFacetQuery('');
expect(query1).toBeNull();
@ -205,7 +228,9 @@ describe('SearchQueryBuilder', () => {
]
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
const field = builder.getFacetField('Size');
expect(field.label).toBe('Size');
@ -222,7 +247,9 @@ describe('SearchQueryBuilder', () => {
]
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
const field = builder.getFacetField('Missing');
expect(field).toBeFalsy();
@ -231,11 +258,15 @@ describe('SearchQueryBuilder', () => {
it('should fetch facets from the config by label with spaces and return field with request compatible label (escaped)', () => {
const config: SearchConfiguration = {
categories: [],
facetFields: { 'fields': [
facetFields: {
'fields': [
{ 'field': 'content.size', 'mincount': 1, 'label': 'Label with spaces' }
]}
]
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
const field = builder.getFacetField('Label with spaces');
expect(field.label).toBe('"Label with spaces"');
@ -248,7 +279,9 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat1', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = null;
const compiled = builder.buildQuery();
@ -261,7 +294,9 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat1', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
@ -276,7 +311,9 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat2', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
builder.queryFragments['cat2'] = 'NOT cm:creator:System';
@ -295,7 +332,9 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat2', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
@ -311,7 +350,9 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat2', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
@ -325,7 +366,9 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat1', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
builder.addFilterQuery('query1');
@ -346,7 +389,9 @@ describe('SearchQueryBuilder', () => {
]
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
const compiled = builder.buildQuery();
@ -365,7 +410,9 @@ describe('SearchQueryBuilder', () => {
]
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
const compiled = builder.buildQuery();
@ -386,12 +433,30 @@ describe('SearchQueryBuilder', () => {
categories: [
<any> { id: 'cat1', enabled: true }
],
facetFields: { fields: [
{ field: 'field1', label: spacesLabel.configValue, mincount: 1, limit: null, offset: 0, prefix: null },
{ field: 'field2', label: noSpacesLabel.configValue, mincount: 1, limit: null, offset: 0, prefix: null }
]}
facetFields: {
fields: [
{
field: 'field1',
label: spacesLabel.configValue,
mincount: 1,
limit: null,
offset: 0,
prefix: null
},
{
field: 'field2',
label: noSpacesLabel.configValue,
mincount: 1,
limit: null,
offset: 0,
prefix: null
}
]
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
const compiled = builder.buildQuery();
@ -412,7 +477,7 @@ describe('SearchQueryBuilder', () => {
label: 'test_intervals1',
field: 'f1',
sets: [
{ label: 'interval1', start: 's1', end: 'e1', startInclusive: true, endInclusive: true },
{ label: 'interval1', start: 's1', end: 'e1', startInclusive: true, endInclusive: true },
{ label: 'interval2', start: 's2', end: 'e2', startInclusive: false, endInclusive: true }
]
},
@ -427,7 +492,9 @@ describe('SearchQueryBuilder', () => {
]
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
const compiled = builder.buildQuery();
@ -473,7 +540,9 @@ describe('SearchQueryBuilder', () => {
]
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
const compiled = builder.buildQuery();
@ -483,7 +552,7 @@ describe('SearchQueryBuilder', () => {
expect(compiled.facetIntervals.intervals[1].label).toEqual(noSpacesLabel.configValue);
expect(compiled.facetIntervals.intervals[0].sets[0].label).toEqual(spacesLabelForSet.requestCompatibleValue);
});
});
it('should build query with sorting', () => {
const config: SearchConfiguration = {
@ -493,7 +562,8 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat2', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
const sorting: any = { type: 'FIELD', field: 'cm:name', ascending: true };
builder.sorting = [sorting];
@ -509,7 +579,8 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat1', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.queryFragments['cat1'] = 'cm:name:test';
builder.paging = { maxItems: 5, skipCount: 5 };
@ -526,7 +597,8 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat1', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.userQuery = 'my query';
builder.queryFragments['cat1'] = 'cm:name:test';
@ -561,7 +633,9 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat1', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.addUserFacetBucket(field1, field1buckets[0]);
builder.addUserFacetBucket(field1, field1buckets[1]);
@ -582,7 +656,9 @@ describe('SearchQueryBuilder', () => {
'mergeContiguous': true
}
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.userQuery = 'my query';
builder.queryFragments['cat1'] = 'cm:name:test';
@ -599,7 +675,9 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat1', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
spyOn(builder, 'buildQuery').and.throwError('some error');
builder.error.subscribe(() => {
@ -615,7 +693,9 @@ describe('SearchQueryBuilder', () => {
<any> { id: 'cat1', enabled: true }
]
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
spyOn(builder, 'buildQuery').and.throwError('some error');
builder.executed.subscribe((data) => {
@ -628,7 +708,9 @@ describe('SearchQueryBuilder', () => {
});
it('should include contain the path and allowableOperations by default', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
builder.userQuery = 'nuka cola quantum';
const queryBody = builder.buildQuery();
@ -640,7 +722,9 @@ describe('SearchQueryBuilder', () => {
const config: SearchConfiguration = {
include: includeConfig
};
const builder = new SearchQueryBuilderService(buildConfig(config), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
builder.userQuery = 'nuka cola quantum';
const queryBody = builder.buildQuery();
@ -648,7 +732,9 @@ describe('SearchQueryBuilder', () => {
});
it('should the query contain the pagination', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
builder.userQuery = 'nuka cola quantum';
const mockPagination = {
maxItems: 10,
@ -661,7 +747,9 @@ describe('SearchQueryBuilder', () => {
});
it('should the query contain the scope in case it is defined', () => {
const builder = new SearchQueryBuilderService(buildConfig({}), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig({}), alfrescoApiService);
const mockScope = { locations: 'mock-location' };
builder.userQuery = 'nuka cola quantum';
builder.setScope(mockScope);
@ -671,7 +759,9 @@ describe('SearchQueryBuilder', () => {
});
it('should return empty if array of search config not found', (done) => {
const builder = new SearchQueryBuilderService(buildConfig(null), null);
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
const builder = new SearchQueryBuilderService(buildConfig(null), alfrescoApiService);
builder.searchForms.subscribe((forms) => {
expect(forms).toEqual([]);
done();
@ -682,38 +772,40 @@ describe('SearchQueryBuilder', () => {
let configs: SearchConfiguration[];
let builder: SearchQueryBuilderService;
beforeEach(() => {
configs = [
{
categories: [
<any> { id: 'cat1', enabled: true },
<any> { id: 'cat2', enabled: true }
],
filterQueries: [
{ query: 'query1' },
{ query: 'query2' }
],
name: 'config1',
default: true
},
{
categories: [
<any> { id: 'mouse', enabled: true }
],
filterQueries: [
{ query: 'query1' },
{ query: 'query2' }
],
name: 'config2',
default: false
},
{
categories: [
<any> { id: 'cat_and_mouse', enabled: true }
],
default: false
}
];
builder = new SearchQueryBuilderService(buildConfig(configs), null);
configs = [
{
categories: [
<any> { id: 'cat1', enabled: true },
<any> { id: 'cat2', enabled: true }
],
filterQueries: [
{ query: 'query1' },
{ query: 'query2' }
],
name: 'config1',
default: true
},
{
categories: [
<any> { id: 'mouse', enabled: true }
],
filterQueries: [
{ query: 'query1' },
{ query: 'query2' }
],
name: 'config2',
default: false
},
{
categories: [
<any> { id: 'cat_and_mouse', enabled: true }
],
default: false
}
];
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
builder = new SearchQueryBuilderService(buildConfig(configs), alfrescoApiService);
});
it('should pick the default configuration from list', () => {
@ -733,9 +825,9 @@ describe('SearchQueryBuilder', () => {
it('should list available search form names', (done) => {
builder.searchForms.subscribe((forms) => {
expect(forms).toEqual([
{ index: 0, name: 'config1', default: true, selected: true },
{ index: 1, name: 'config2', default: false, selected: false },
{ index: 2, name: 'SEARCH.UNKNOWN_CONFIGURATION', default: false, selected: false }
{ index: 0, name: 'config1', default: true, selected: true },
{ index: 1, name: 'config2', default: false, selected: false },
{ index: 2, name: 'SEARCH.UNKNOWN_CONFIGURATION', default: false, selected: false }
]);
done();
});