From 10f75e4b9f46eeebe40484c2ad205cae3a981a05 Mon Sep 17 00:00:00 2001 From: Ryan Mathis Date: Thu, 13 Sep 2018 12:36:03 -0700 Subject: [PATCH] SHIBUI-814 Added translate component --- ui/angular.json | 4 ++ ui/src/app/app.component.spec.ts | 8 ++-- .../i18n/component/translate.component.html | 0 ui/src/app/i18n/pipe/i18n.pipe.spec.ts | 10 +---- ui/src/testing/i18n.stub.ts | 42 ++++++++++++++++++- 5 files changed, 51 insertions(+), 13 deletions(-) delete mode 100644 ui/src/app/i18n/component/translate.component.html diff --git a/ui/angular.json b/ui/angular.json index 51825cbd0..ebefdc05a 100644 --- a/ui/angular.json +++ b/ui/angular.json @@ -91,6 +91,10 @@ "input": "src", "output": "/" } + ], + "codeCoverageExclude": [ + "src/polyfills.ts", + "**/*.stub.ts" ] } }, diff --git a/ui/src/app/app.component.spec.ts b/ui/src/app/app.component.spec.ts index a86e7c1c9..b76cbccde 100644 --- a/ui/src/app/app.component.spec.ts +++ b/ui/src/app/app.component.spec.ts @@ -7,7 +7,7 @@ import { AppComponent } from './app.component'; import * as fromRoot from './core/reducer'; import { NotificationModule } from './notification/notification.module'; import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; -import { MockTranslatePipe, MockI18nService } from '../testing/i18n.stub'; +import { MockTranslatePipe, MockI18nService, MockI18nModule } from '../testing/i18n.stub'; import { I18nService } from './i18n/service/i18n.service'; @Component({ @@ -38,12 +38,12 @@ describe('AppComponent', () => { StoreModule.forRoot({ core: combineReducers(fromRoot.reducers) }), - NotificationModule + NotificationModule, + MockI18nModule ], declarations: [ AppComponent, - TestHostComponent, - MockTranslatePipe + TestHostComponent ], }).compileComponents(); diff --git a/ui/src/app/i18n/component/translate.component.html b/ui/src/app/i18n/component/translate.component.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/ui/src/app/i18n/pipe/i18n.pipe.spec.ts b/ui/src/app/i18n/pipe/i18n.pipe.spec.ts index c78cd4244..1133c7ac8 100644 --- a/ui/src/app/i18n/pipe/i18n.pipe.spec.ts +++ b/ui/src/app/i18n/pipe/i18n.pipe.spec.ts @@ -7,6 +7,7 @@ import * as fromI18n from '../reducer'; import { TestBed, ComponentFixture } from '@angular/core/testing'; import { Component } from '@angular/core'; import { MessagesLoadSuccessAction } from '../action/message.action'; +import { MockI18nService, MockI18nModule } from '../../../testing/i18n.stub'; @Component({ template: ` @@ -33,14 +34,7 @@ describe('Pipe: I18n translation', () => { beforeEach(() => { TestBed.configureTestingModule({ providers: [ - { provide: I18nService, useValue: { - interpolate: (value: string, interpolated: { [prop: string]: string } = {}): string => { - return Object.entries(interpolated).reduce((current, interpolate) => { - let reg = new RegExp(`{\\s*${interpolate[0]}\\s*}`, 'gm'); - return current.replace(reg, interpolate[1]); - }, value); - } - } } + { provide: I18nService, useClass: MockI18nService } ], imports: [ CommonModule, diff --git a/ui/src/testing/i18n.stub.ts b/ui/src/testing/i18n.stub.ts index 0cc38e77f..fdd584e66 100644 --- a/ui/src/testing/i18n.stub.ts +++ b/ui/src/testing/i18n.stub.ts @@ -1,9 +1,12 @@ /* istanbul ignore */ -import { PipeTransform, Pipe } from '@angular/core'; +import { PipeTransform, Pipe, NgModule, Directive, Component } from '@angular/core'; import { Injectable } from '@angular/core'; import { Observable, of } from 'rxjs'; +import { CommonModule } from '@angular/common'; + +/*tslint:disable:component-selector */ @Pipe({ name: 'i18n', @@ -18,6 +21,18 @@ export class MockTranslatePipe implements PipeTransform { } } +@Directive({ + selector: '[translate]' +}) +export class MockTranslateDirective {} + + +@Component({ + selector: 'translate', + template: '' +}) +export class MockTranslateComponent { } + @Injectable() export class MockI18nService { @@ -42,7 +57,32 @@ export class MockI18nService { return 'en-US'; } + translate (value: string, interpolated: any, messages): string { + return messages.hasOwnProperty(value) ? messages[value] : ''; + } + interpolate(value: string, interpolated: { [prop: string]: string } = {}): string { return value; } } + + +@NgModule({ + imports: [ + CommonModule + ], + declarations: [ + MockTranslatePipe, + MockTranslateDirective, + MockTranslateComponent + ], + exports: [ + MockTranslateComponent, + MockTranslateDirective, + MockTranslatePipe + ], + providers: [ + MockI18nService + ] +}) +export class MockI18nModule {}