[ACA-2299] fix search error translation (#1030)

* fix search error translation

* fix translation fallback

* remove fdescribe
This commit is contained in:
Denys Vuika 2019-03-22 13:06:06 +00:00 committed by Suzana Dirla
parent 3f0848c1dc
commit 5aa0c6f21d
2 changed files with 78 additions and 11 deletions

View File

@ -13,7 +13,8 @@ import {
CoreModule,
AppConfigService,
AlfrescoApiService,
AlfrescoApiServiceMock
AlfrescoApiServiceMock,
TranslationService
} from '@alfresco/adf-core';
import { Store } from '@ngrx/store';
import { NavigateToFolder, SnackbarErrorAction } from '../../../store/actions';
@ -28,6 +29,7 @@ describe('SearchComponent', () => {
let store: Store<any>;
let queryBuilder: SearchQueryBuilderService;
let alfrescoApi: AlfrescoApiService;
let translate: TranslationService;
beforeEach(async(() => {
TestBed.configureTestingModule({
@ -60,6 +62,7 @@ describe('SearchComponent', () => {
store = TestBed.get(Store);
queryBuilder = TestBed.get(SearchQueryBuilderService);
alfrescoApi = TestBed.get(AlfrescoApiService);
translate = TestBed.get(TranslationService);
fixture = TestBed.createComponent(SearchResultsComponent);
component = fixture.componentInstance;
@ -83,7 +86,57 @@ describe('SearchComponent', () => {
tick();
expect(store.dispatch).toHaveBeenCalledWith(
new SnackbarErrorAction('APP.BROWSE.SEARCH.ERRORS.500')
new SnackbarErrorAction('APP.BROWSE.SEARCH.ERRORS.GENERIC')
);
}));
it('should raise a known error if search fails', fakeAsync(() => {
spyOn(translate, 'instant').and.callFake((key: string) => {
if (key === 'APP.BROWSE.SEARCH.ERRORS.401') {
return 'Known Error';
}
return key;
});
spyOn(alfrescoApi.searchApi, 'search').and.returnValue(
Promise.reject({
message: `{ "error": { "statusCode": 401 } } `
})
);
spyOn(queryBuilder, 'buildQuery').and.returnValue({});
spyOn(store, 'dispatch').and.stub();
queryBuilder.execute();
tick();
expect(store.dispatch).toHaveBeenCalledWith(
new SnackbarErrorAction('Known Error')
);
}));
it('should raise a generic error if search fails', fakeAsync(() => {
spyOn(translate, 'instant').and.callFake((key: string) => {
if (key === 'APP.BROWSE.SEARCH.ERRORS.GENERIC') {
return 'Generic Error';
}
return key;
});
spyOn(alfrescoApi.searchApi, 'search').and.returnValue(
Promise.reject({
message: `{ "error": { "statusCode": 401 } } `
})
);
spyOn(queryBuilder, 'buildQuery').and.returnValue({});
spyOn(store, 'dispatch').and.stub();
queryBuilder.execute();
tick();
expect(store.dispatch).toHaveBeenCalledWith(
new SnackbarErrorAction('Generic Error')
);
}));

View File

@ -37,7 +37,11 @@ import { AppStore } from '../../../store/states/app.state';
import { NavigateToFolder } from '../../../store/actions';
import { AppExtensionService } from '../../../extensions/extension.service';
import { ContentManagementService } from '../../../services/content-management.service';
import { AppConfigService, AlfrescoApiService } from '@alfresco/adf-core';
import {
AppConfigService,
AlfrescoApiService,
TranslationService
} from '@alfresco/adf-core';
import { Observable, Subject } from 'rxjs';
import { showFacetFilter } from '../../../store/selectors/app.selectors';
import { SnackbarErrorAction } from '../../../store/actions';
@ -72,7 +76,8 @@ export class SearchResultsComponent extends PageComponent implements OnInit {
private config: AppConfigService,
store: Store<AppStore>,
extensions: AppExtensionService,
content: ContentManagementService
content: ContentManagementService,
private translationService: TranslationService
) {
super(store, extensions, content);
@ -124,13 +129,7 @@ export class SearchResultsComponent extends PageComponent implements OnInit {
}),
this.searchQueryError.subscribe(error => {
const { statusCode } = JSON.parse(error.message).error;
this.store.dispatch(
new SnackbarErrorAction(
`APP.BROWSE.SEARCH.ERRORS.${statusCode || 'GENERIC'}`
)
);
this.onSearchError(error);
})
);
@ -154,6 +153,21 @@ export class SearchResultsComponent extends PageComponent implements OnInit {
}
}
onSearchError(error: { message: any }) {
const { statusCode } = JSON.parse(error.message).error;
const messageKey = `APP.BROWSE.SEARCH.ERRORS.${statusCode}`;
let translated = this.translationService.instant(messageKey);
if (translated === messageKey) {
translated = this.translationService.instant(
`APP.BROWSE.SEARCH.ERRORS.GENERIC`
);
}
this.store.dispatch(new SnackbarErrorAction(translated));
}
private isOperator(input: string): boolean {
if (input) {
input = input.trim().toUpperCase();