mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-26 17:24:56 +00:00
[ADF-5429] Improve search for testability (#7198)
* improve search for testability * fix lint
This commit is contained in:
parent
f30b20cc46
commit
c01417a08f
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
import { SearchSortingPickerComponent } from './search-sorting-picker.component';
|
import { SearchSortingPickerComponent } from './search-sorting-picker.component';
|
||||||
import { SearchQueryBuilderService } from '../../services/search-query-builder.service';
|
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 { SearchConfiguration } from '../../models/search-configuration.interface';
|
||||||
import { TestBed } from '@angular/core/testing';
|
import { TestBed } from '@angular/core/testing';
|
||||||
import { ContentTestingModule } from '../../../testing/content.testing.module';
|
import { ContentTestingModule } from '../../../testing/content.testing.module';
|
||||||
@ -53,7 +53,9 @@ describe('SearchSortingPickerComponent', () => {
|
|||||||
<any> { id: 'cat1', enabled: true }
|
<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);
|
component = new SearchSortingPickerComponent(queryBuilder);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -42,6 +42,7 @@ import { SearchForm } from '../models/search-form.interface';
|
|||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
})
|
})
|
||||||
export abstract class BaseQueryBuilderService {
|
export abstract class BaseQueryBuilderService {
|
||||||
|
private searchApi: SearchApi;
|
||||||
|
|
||||||
/* Stream that emits the search configuration whenever the user change the search forms */
|
/* Stream that emits the search configuration whenever the user change the search forms */
|
||||||
configUpdated = new Subject<SearchConfiguration>();
|
configUpdated = new Subject<SearchConfiguration>();
|
||||||
@ -87,6 +88,7 @@ export abstract class BaseQueryBuilderService {
|
|||||||
ranges: { [id: string]: SearchRange } = {};
|
ranges: { [id: string]: SearchRange } = {};
|
||||||
|
|
||||||
constructor(protected appConfig: AppConfigService, protected alfrescoApiService: AlfrescoApiService) {
|
constructor(protected appConfig: AppConfigService, protected alfrescoApiService: AlfrescoApiService) {
|
||||||
|
this.searchApi = new SearchApi(this.alfrescoApiService.getInstance());
|
||||||
this.resetToDefaults();
|
this.resetToDefaults();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,9 +147,14 @@ export abstract class BaseQueryBuilderService {
|
|||||||
name: configuration.name || 'SEARCH.UNKNOWN_CONFIGURATION',
|
name: configuration.name || 'SEARCH.UNKNOWN_CONFIGURATION',
|
||||||
default: configuration.default || false,
|
default: configuration.default || false,
|
||||||
selected: this.selectedConfiguration !== undefined ? index === this.selectedConfiguration : configuration.default
|
selected: this.selectedConfiguration !== undefined ? index === this.selectedConfiguration : configuration.default
|
||||||
}));
|
}));
|
||||||
} else if (!!configurations) {
|
} 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 [];
|
return [];
|
||||||
}
|
}
|
||||||
@ -285,8 +292,7 @@ export abstract class BaseQueryBuilderService {
|
|||||||
try {
|
try {
|
||||||
const query = queryBody ? queryBody : this.buildQuery();
|
const query = queryBody ? queryBody : this.buildQuery();
|
||||||
if (query) {
|
if (query) {
|
||||||
const searchApi = new SearchApi(this.alfrescoApiService.getInstance());
|
const resultSetPaging: ResultSetPaging = await this.searchApi.search(query);
|
||||||
const resultSetPaging: ResultSetPaging = await searchApi.search(query);
|
|
||||||
this.executed.next(resultSetPaging);
|
this.executed.next(resultSetPaging);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -304,8 +310,7 @@ export abstract class BaseQueryBuilderService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
search(queryBody: QueryBody): Observable<ResultSetPaging> {
|
search(queryBody: QueryBody): Observable<ResultSetPaging> {
|
||||||
const searchApi = new SearchApi(this.alfrescoApiService.getInstance());
|
const promise = this.searchApi.search(queryBody);
|
||||||
const promise = searchApi.search(queryBody);
|
|
||||||
|
|
||||||
promise.then((resultSetPaging) => {
|
promise.then((resultSetPaging) => {
|
||||||
this.executed.next(resultSetPaging);
|
this.executed.next(resultSetPaging);
|
||||||
|
@ -16,20 +16,17 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { SearchConfiguration } from '../models/search-configuration.interface';
|
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 { SearchHeaderQueryBuilderService } from './search-header-query-builder.service';
|
||||||
import { TestBed } from '@angular/core/testing';
|
import { TestBed } from '@angular/core/testing';
|
||||||
import { ContentTestingModule } from '../../testing/content.testing.module';
|
import { ContentTestingModule } from '../../testing/content.testing.module';
|
||||||
import { TranslateModule } from '@ngx-translate/core';
|
|
||||||
|
|
||||||
describe('SearchHeaderQueryBuilderService', () => {
|
describe('SearchHeaderQueryBuilderService', () => {
|
||||||
|
|
||||||
setupTestBed({
|
beforeEach(() => {
|
||||||
imports: [
|
TestBed.configureTestingModule({
|
||||||
TranslateModule.forRoot(),
|
imports: [ContentTestingModule]
|
||||||
CoreModule.forRoot(),
|
});
|
||||||
ContentTestingModule
|
|
||||||
]
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const buildConfig = (searchSettings): AppConfigService => {
|
const buildConfig = (searchSettings): AppConfigService => {
|
||||||
@ -47,9 +44,10 @@ describe('SearchHeaderQueryBuilderService', () => {
|
|||||||
filterQueries: [{ query: 'query1' }, { query: 'query2' }]
|
filterQueries: [{ query: 'query1' }, { query: 'query2' }]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
|
||||||
const builder = new SearchHeaderQueryBuilderService(
|
const builder = new SearchHeaderQueryBuilderService(
|
||||||
buildConfig(config),
|
buildConfig(config),
|
||||||
null,
|
alfrescoApiService,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -74,9 +72,10 @@ describe('SearchHeaderQueryBuilderService', () => {
|
|||||||
filterQueries: [{ query: 'query1' }, { query: 'query2' }]
|
filterQueries: [{ query: 'query1' }, { query: 'query2' }]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
|
||||||
const service = new SearchHeaderQueryBuilderService(
|
const service = new SearchHeaderQueryBuilderService(
|
||||||
buildConfig(config),
|
buildConfig(config),
|
||||||
null,
|
alfrescoApiService,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -87,9 +86,10 @@ describe('SearchHeaderQueryBuilderService', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should have empty user query by default', () => {
|
it('should have empty user query by default', () => {
|
||||||
|
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
|
||||||
const builder = new SearchHeaderQueryBuilderService(
|
const builder = new SearchHeaderQueryBuilderService(
|
||||||
buildConfig({}),
|
buildConfig({}),
|
||||||
null,
|
alfrescoApiService,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
expect(builder.userQuery).toBe('');
|
expect(builder.userQuery).toBe('');
|
||||||
@ -108,9 +108,10 @@ describe('SearchHeaderQueryBuilderService', () => {
|
|||||||
{ query: 'PARENT:"workspace://SpacesStore/fake-node-id"' }
|
{ query: 'PARENT:"workspace://SpacesStore/fake-node-id"' }
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
|
||||||
const searchHeaderService = new SearchHeaderQueryBuilderService(
|
const searchHeaderService = new SearchHeaderQueryBuilderService(
|
||||||
buildConfig(config),
|
buildConfig(config),
|
||||||
null,
|
alfrescoApiService,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -133,9 +134,10 @@ describe('SearchHeaderQueryBuilderService', () => {
|
|||||||
filterQueries: expectedResult
|
filterQueries: expectedResult
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
|
||||||
const searchHeaderService = new SearchHeaderQueryBuilderService(
|
const searchHeaderService = new SearchHeaderQueryBuilderService(
|
||||||
buildConfig(config),
|
buildConfig(config),
|
||||||
null,
|
alfrescoApiService,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -159,9 +161,10 @@ describe('SearchHeaderQueryBuilderService', () => {
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
|
||||||
const searchHeaderService = new SearchHeaderQueryBuilderService(
|
const searchHeaderService = new SearchHeaderQueryBuilderService(
|
||||||
buildConfig(config),
|
buildConfig(config),
|
||||||
null,
|
alfrescoApiService,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
import { SearchQueryBuilderService } from './search-query-builder.service';
|
import { SearchQueryBuilderService } from './search-query-builder.service';
|
||||||
import { SearchConfiguration } from '../models/search-configuration.interface';
|
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 { FacetField } from '../models/facet-field.interface';
|
||||||
import { TestBed } from '@angular/core/testing';
|
import { TestBed } from '@angular/core/testing';
|
||||||
import { ContentTestingModule } from '../../testing/content.testing.module';
|
import { ContentTestingModule } from '../../testing/content.testing.module';
|
||||||
@ -47,7 +47,8 @@ describe('SearchQueryBuilder', () => {
|
|||||||
{ query: 'query2' }
|
{ query: 'query2' }
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
const builder = new SearchQueryBuilderService(buildConfig(config), null);
|
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
|
||||||
|
const builder = new SearchQueryBuilderService(buildConfig(config), alfrescoApiService);
|
||||||
|
|
||||||
builder.categories = [];
|
builder.categories = [];
|
||||||
builder.filterQueries = [];
|
builder.filterQueries = [];
|
||||||
@ -62,18 +63,23 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should have empty user query by default', () => {
|
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('');
|
expect(builder.userQuery).toBe('');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should wrap user query with brackets', () => {
|
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';
|
builder.userQuery = 'my query';
|
||||||
expect(builder.userQuery).toEqual('(my query)');
|
expect(builder.userQuery).toEqual('(my query)');
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should trim user query value', () => {
|
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 ';
|
builder.userQuery = ' something ';
|
||||||
expect(builder.userQuery).toEqual('(something)');
|
expect(builder.userQuery).toEqual('(something)');
|
||||||
});
|
});
|
||||||
@ -86,7 +92,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat3', enabled: true }
|
<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.length).toBe(2);
|
||||||
expect(builder.categories[0].id).toBe('cat1');
|
expect(builder.categories[0].id).toBe('cat1');
|
||||||
@ -101,7 +109,8 @@ describe('SearchQueryBuilder', () => {
|
|||||||
{ query: 'query2' }
|
{ 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.length).toBe(2);
|
||||||
expect(builder.filterQueries[0].query).toBe('query1');
|
expect(builder.filterQueries[0].query).toBe('query1');
|
||||||
@ -109,7 +118,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should add new filter query', () => {
|
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');
|
builder.addFilterQuery('q1');
|
||||||
|
|
||||||
@ -118,7 +129,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should not add empty filter query', () => {
|
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(null);
|
||||||
builder.addFilterQuery('');
|
builder.addFilterQuery('');
|
||||||
@ -127,7 +140,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should not add duplicate filter query', () => {
|
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');
|
||||||
builder.addFilterQuery('q1');
|
builder.addFilterQuery('q1');
|
||||||
@ -138,7 +153,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should remove filter query', () => {
|
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('q1');
|
||||||
builder.addFilterQuery('q2');
|
builder.addFilterQuery('q2');
|
||||||
@ -150,7 +167,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should not remove empty query', () => {
|
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('q1');
|
||||||
builder.addFilterQuery('q2');
|
builder.addFilterQuery('q2');
|
||||||
expect(builder.filterQueries.length).toBe(2);
|
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');
|
const query = builder.getFacetQuery('query2');
|
||||||
|
|
||||||
expect(query.query).toBe('q2');
|
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('');
|
const query1 = builder.getFacetQuery('');
|
||||||
expect(query1).toBeNull();
|
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');
|
const field = builder.getFacetField('Size');
|
||||||
|
|
||||||
expect(field.label).toBe('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');
|
const field = builder.getFacetField('Missing');
|
||||||
|
|
||||||
expect(field).toBeFalsy();
|
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)', () => {
|
it('should fetch facets from the config by label with spaces and return field with request compatible label (escaped)', () => {
|
||||||
const config: SearchConfiguration = {
|
const config: SearchConfiguration = {
|
||||||
categories: [],
|
categories: [],
|
||||||
facetFields: { 'fields': [
|
facetFields: {
|
||||||
|
'fields': [
|
||||||
{ 'field': 'content.size', 'mincount': 1, 'label': 'Label with spaces' }
|
{ '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');
|
const field = builder.getFacetField('Label with spaces');
|
||||||
|
|
||||||
expect(field.label).toBe('"Label with spaces"');
|
expect(field.label).toBe('"Label with spaces"');
|
||||||
@ -248,7 +279,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat1', enabled: true }
|
<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;
|
builder.queryFragments['cat1'] = null;
|
||||||
|
|
||||||
const compiled = builder.buildQuery();
|
const compiled = builder.buildQuery();
|
||||||
@ -261,7 +294,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat1', enabled: true }
|
<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.queryFragments['cat1'] = 'cm:name:test';
|
||||||
|
|
||||||
@ -276,7 +311,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat2', enabled: true }
|
<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['cat1'] = 'cm:name:test';
|
||||||
builder.queryFragments['cat2'] = 'NOT cm:creator:System';
|
builder.queryFragments['cat2'] = 'NOT cm:creator:System';
|
||||||
@ -295,7 +332,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat2', enabled: true }
|
<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['cat1'] = 'cm:name:test';
|
||||||
|
|
||||||
@ -311,7 +350,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat2', enabled: true }
|
<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['cat1'] = 'cm:name:test';
|
||||||
|
|
||||||
@ -325,7 +366,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat1', enabled: true }
|
<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.queryFragments['cat1'] = 'cm:name:test';
|
||||||
builder.addFilterQuery('query1');
|
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';
|
builder.queryFragments['cat1'] = 'cm:name:test';
|
||||||
|
|
||||||
const compiled = builder.buildQuery();
|
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';
|
builder.queryFragments['cat1'] = 'cm:name:test';
|
||||||
|
|
||||||
const compiled = builder.buildQuery();
|
const compiled = builder.buildQuery();
|
||||||
@ -386,12 +433,30 @@ describe('SearchQueryBuilder', () => {
|
|||||||
categories: [
|
categories: [
|
||||||
<any> { id: 'cat1', enabled: true }
|
<any> { id: 'cat1', enabled: true }
|
||||||
],
|
],
|
||||||
facetFields: { fields: [
|
facetFields: {
|
||||||
{ field: 'field1', label: spacesLabel.configValue, mincount: 1, limit: null, offset: 0, prefix: null },
|
fields: [
|
||||||
{ field: 'field2', label: noSpacesLabel.configValue, mincount: 1, limit: null, offset: 0, prefix: null }
|
{
|
||||||
]}
|
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';
|
builder.queryFragments['cat1'] = 'cm:name:test';
|
||||||
|
|
||||||
const compiled = builder.buildQuery();
|
const compiled = builder.buildQuery();
|
||||||
@ -412,7 +477,7 @@ describe('SearchQueryBuilder', () => {
|
|||||||
label: 'test_intervals1',
|
label: 'test_intervals1',
|
||||||
field: 'f1',
|
field: 'f1',
|
||||||
sets: [
|
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 }
|
{ 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';
|
builder.queryFragments['cat1'] = 'cm:name:test';
|
||||||
|
|
||||||
const compiled = builder.buildQuery();
|
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';
|
builder.queryFragments['cat1'] = 'cm:name:test';
|
||||||
|
|
||||||
const compiled = builder.buildQuery();
|
const compiled = builder.buildQuery();
|
||||||
@ -483,7 +552,7 @@ describe('SearchQueryBuilder', () => {
|
|||||||
expect(compiled.facetIntervals.intervals[1].label).toEqual(noSpacesLabel.configValue);
|
expect(compiled.facetIntervals.intervals[1].label).toEqual(noSpacesLabel.configValue);
|
||||||
|
|
||||||
expect(compiled.facetIntervals.intervals[0].sets[0].label).toEqual(spacesLabelForSet.requestCompatibleValue);
|
expect(compiled.facetIntervals.intervals[0].sets[0].label).toEqual(spacesLabelForSet.requestCompatibleValue);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should build query with sorting', () => {
|
it('should build query with sorting', () => {
|
||||||
const config: SearchConfiguration = {
|
const config: SearchConfiguration = {
|
||||||
@ -493,7 +562,8 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat2', enabled: true }
|
<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 };
|
const sorting: any = { type: 'FIELD', field: 'cm:name', ascending: true };
|
||||||
builder.sorting = [sorting];
|
builder.sorting = [sorting];
|
||||||
|
|
||||||
@ -509,7 +579,8 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat1', enabled: true }
|
<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.queryFragments['cat1'] = 'cm:name:test';
|
||||||
builder.paging = { maxItems: 5, skipCount: 5 };
|
builder.paging = { maxItems: 5, skipCount: 5 };
|
||||||
|
|
||||||
@ -526,7 +597,8 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat1', enabled: true }
|
<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.userQuery = 'my query';
|
||||||
|
|
||||||
builder.queryFragments['cat1'] = 'cm:name:test';
|
builder.queryFragments['cat1'] = 'cm:name:test';
|
||||||
@ -561,7 +633,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat1', enabled: true }
|
<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[0]);
|
||||||
builder.addUserFacetBucket(field1, field1buckets[1]);
|
builder.addUserFacetBucket(field1, field1buckets[1]);
|
||||||
@ -582,7 +656,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
'mergeContiguous': true
|
'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.userQuery = 'my query';
|
||||||
|
|
||||||
builder.queryFragments['cat1'] = 'cm:name:test';
|
builder.queryFragments['cat1'] = 'cm:name:test';
|
||||||
@ -599,7 +675,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat1', enabled: true }
|
<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');
|
spyOn(builder, 'buildQuery').and.throwError('some error');
|
||||||
|
|
||||||
builder.error.subscribe(() => {
|
builder.error.subscribe(() => {
|
||||||
@ -615,7 +693,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
<any> { id: 'cat1', enabled: true }
|
<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');
|
spyOn(builder, 'buildQuery').and.throwError('some error');
|
||||||
|
|
||||||
builder.executed.subscribe((data) => {
|
builder.executed.subscribe((data) => {
|
||||||
@ -628,7 +708,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should include contain the path and allowableOperations by default', () => {
|
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';
|
builder.userQuery = 'nuka cola quantum';
|
||||||
const queryBody = builder.buildQuery();
|
const queryBody = builder.buildQuery();
|
||||||
|
|
||||||
@ -640,7 +722,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
const config: SearchConfiguration = {
|
const config: SearchConfiguration = {
|
||||||
include: includeConfig
|
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';
|
builder.userQuery = 'nuka cola quantum';
|
||||||
const queryBody = builder.buildQuery();
|
const queryBody = builder.buildQuery();
|
||||||
|
|
||||||
@ -648,7 +732,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should the query contain the pagination', () => {
|
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';
|
builder.userQuery = 'nuka cola quantum';
|
||||||
const mockPagination = {
|
const mockPagination = {
|
||||||
maxItems: 10,
|
maxItems: 10,
|
||||||
@ -661,7 +747,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should the query contain the scope in case it is defined', () => {
|
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' };
|
const mockScope = { locations: 'mock-location' };
|
||||||
builder.userQuery = 'nuka cola quantum';
|
builder.userQuery = 'nuka cola quantum';
|
||||||
builder.setScope(mockScope);
|
builder.setScope(mockScope);
|
||||||
@ -671,7 +759,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('should return empty if array of search config not found', (done) => {
|
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) => {
|
builder.searchForms.subscribe((forms) => {
|
||||||
expect(forms).toEqual([]);
|
expect(forms).toEqual([]);
|
||||||
done();
|
done();
|
||||||
@ -682,38 +772,40 @@ describe('SearchQueryBuilder', () => {
|
|||||||
let configs: SearchConfiguration[];
|
let configs: SearchConfiguration[];
|
||||||
let builder: SearchQueryBuilderService;
|
let builder: SearchQueryBuilderService;
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
configs = [
|
configs = [
|
||||||
{
|
{
|
||||||
categories: [
|
categories: [
|
||||||
<any> { id: 'cat1', enabled: true },
|
<any> { id: 'cat1', enabled: true },
|
||||||
<any> { id: 'cat2', enabled: true }
|
<any> { id: 'cat2', enabled: true }
|
||||||
],
|
],
|
||||||
filterQueries: [
|
filterQueries: [
|
||||||
{ query: 'query1' },
|
{ query: 'query1' },
|
||||||
{ query: 'query2' }
|
{ query: 'query2' }
|
||||||
],
|
],
|
||||||
name: 'config1',
|
name: 'config1',
|
||||||
default: true
|
default: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
categories: [
|
categories: [
|
||||||
<any> { id: 'mouse', enabled: true }
|
<any> { id: 'mouse', enabled: true }
|
||||||
],
|
],
|
||||||
filterQueries: [
|
filterQueries: [
|
||||||
{ query: 'query1' },
|
{ query: 'query1' },
|
||||||
{ query: 'query2' }
|
{ query: 'query2' }
|
||||||
],
|
],
|
||||||
name: 'config2',
|
name: 'config2',
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
categories: [
|
categories: [
|
||||||
<any> { id: 'cat_and_mouse', enabled: true }
|
<any> { id: 'cat_and_mouse', enabled: true }
|
||||||
],
|
],
|
||||||
default: false
|
default: false
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
builder = new SearchQueryBuilderService(buildConfig(configs), null);
|
const alfrescoApiService = TestBed.inject(AlfrescoApiService);
|
||||||
|
|
||||||
|
builder = new SearchQueryBuilderService(buildConfig(configs), alfrescoApiService);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should pick the default configuration from list', () => {
|
it('should pick the default configuration from list', () => {
|
||||||
@ -733,9 +825,9 @@ describe('SearchQueryBuilder', () => {
|
|||||||
it('should list available search form names', (done) => {
|
it('should list available search form names', (done) => {
|
||||||
builder.searchForms.subscribe((forms) => {
|
builder.searchForms.subscribe((forms) => {
|
||||||
expect(forms).toEqual([
|
expect(forms).toEqual([
|
||||||
{ index: 0, name: 'config1', default: true, selected: true },
|
{ index: 0, name: 'config1', default: true, selected: true },
|
||||||
{ index: 1, name: 'config2', default: false, selected: false },
|
{ index: 1, name: 'config2', default: false, selected: false },
|
||||||
{ index: 2, name: 'SEARCH.UNKNOWN_CONFIGURATION', default: false, selected: false }
|
{ index: 2, name: 'SEARCH.UNKNOWN_CONFIGURATION', default: false, selected: false }
|
||||||
]);
|
]);
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user