From 75b32f21bc2d66c063f168b735c9f5ff8c6b725d Mon Sep 17 00:00:00 2001 From: mehmet-erim Date: Fri, 10 Jan 2020 10:47:13 +0300 Subject: [PATCH] tests(theme-shared): fix confirmation and toaster tests --- .../lib/tests/confirmation.service.spec.ts | 45 +++++++++++++- .../src/lib/tests/error.handler.spec.ts | 1 - .../src/lib/tests/toaster.service.spec.ts | 58 ++++++++++++++++++- 3 files changed, 101 insertions(+), 3 deletions(-) diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/confirmation.service.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/confirmation.service.spec.ts index 90d22d4800..aa2481419d 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/confirmation.service.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/confirmation.service.spec.ts @@ -3,9 +3,10 @@ import { Component } from '@angular/core'; import { RouterTestingModule } from '@angular/router/testing'; import { createComponentFactory, Spectator } from '@ngneat/spectator/jest'; import { NgxsModule } from '@ngxs/store'; -import { OAuthService } from 'angular-oauth2-oidc'; +import { MessageService } from 'primeng/components/common/messageservice'; import { ConfirmationService } from '../services/confirmation.service'; import { ThemeSharedModule } from '../theme-shared.module'; +import { OAuthModule, OAuthService } from 'angular-oauth2-oidc'; @Component({ selector: 'abp-dummy', @@ -23,6 +24,7 @@ describe('ConfirmationService', () => { const createComponent = createComponentFactory({ component: DummyComponent, imports: [CoreModule, ThemeSharedModule.forRoot(), NgxsModule.forRoot(), RouterTestingModule], + providers: [MessageService], mocks: [OAuthService], }); @@ -30,4 +32,45 @@ describe('ConfirmationService', () => { spectator = createComponent(); service = spectator.get(ConfirmationService); }); + + test('should display a confirmation popup', () => { + service.info('test', 'title'); + + spectator.detectChanges(); + + expect(spectator.query('div.confirmation .title')).toHaveText('title'); + expect(spectator.query('div.confirmation .message')).toHaveText('test'); + }); + + test('should close with ESC key', done => { + service.info('test', 'title').subscribe(() => { + setTimeout(() => { + spectator.detectComponentChanges(); + expect(spectator.query('div.confirmation')).toBeFalsy(); + done(); + }, 0); + }); + + spectator.detectChanges(); + expect(spectator.query('div.confirmation')).toBeTruthy(); + spectator.dispatchKeyboardEvent('div.confirmation', 'keyup', 'Escape'); + }); + + test('should close when click cancel button', done => { + service.info('test', 'title', { yesText: 'Sure', cancelText: 'Exit' }).subscribe(() => { + spectator.detectComponentChanges(); + setTimeout(() => { + expect(spectator.query('div.confirmation')).toBeFalsy(); + done(); + }, 0); + }); + + spectator.detectChanges(); + + expect(spectator.query('div.confirmation')).toBeTruthy(); + expect(spectator.query('button#cancel')).toHaveText('Exit'); + expect(spectator.query('button#confirm')).toHaveText('Sure'); + + spectator.click('button#cancel'); + }); }); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts index ec23cd165e..aa22e9c567 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/error.handler.spec.ts @@ -128,7 +128,6 @@ describe('ErrorHandler', () => { ); spectator.detectChanges(); - console.warn(spectator.query('.confirmation')); expect(spectator.query('.title')).toHaveText('test message'); expect(spectator.query('.confirmation .message')).toHaveText('test detail'); }); diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/toaster.service.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/toaster.service.spec.ts index 8004a5d7b8..d7fbd7219e 100644 --- a/npm/ng-packs/packages/theme-shared/src/lib/tests/toaster.service.spec.ts +++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/toaster.service.spec.ts @@ -3,6 +3,7 @@ import { Component } from '@angular/core'; import { RouterTestingModule } from '@angular/router/testing'; import { createComponentFactory, Spectator } from '@ngneat/spectator/jest'; import { NgxsModule } from '@ngxs/store'; +import { MessageService } from 'primeng/components/common/messageservice'; import { ToasterService } from '../services/toaster.service'; import { ThemeSharedModule } from '../theme-shared.module'; import { OAuthService } from 'angular-oauth2-oidc'; @@ -10,7 +11,7 @@ import { OAuthService } from 'angular-oauth2-oidc'; @Component({ selector: 'abp-dummy', template: ` - + `, }) class DummyComponent { @@ -23,6 +24,7 @@ describe('ToasterService', () => { const createComponent = createComponentFactory({ component: DummyComponent, imports: [CoreModule, ThemeSharedModule.forRoot(), NgxsModule.forRoot(), RouterTestingModule], + providers: [MessageService], mocks: [OAuthService], }); @@ -30,4 +32,58 @@ describe('ToasterService', () => { spectator = createComponent(); service = spectator.get(ToasterService); }); + + test('should display an error toast', () => { + service.error('test', 'title'); + + spectator.detectChanges(); + + expect(spectator.query('div.toast')).toBeTruthy(); + expect(spectator.query('.toast-icon i')).toHaveClass('fa-times-circle'); + expect(spectator.query('div.toast-title')).toHaveText('title'); + expect(spectator.query('div.toast-message')).toHaveText('test'); + }); + + test('should display a warning toast', () => { + service.warn('test', 'title'); + spectator.detectChanges(); + expect(spectator.query('.toast-icon i')).toHaveClass('fa-exclamation-triangle'); + }); + + test('should display a success toast', () => { + service.success('test', 'title'); + spectator.detectChanges(); + expect(spectator.query('.toast-icon i')).toHaveClass('fa-check-circle'); + }); + + test('should display an info toast', () => { + service.info('test', 'title'); + spectator.detectChanges(); + expect(spectator.query('.toast-icon i')).toHaveClass('fa-info-circle'); + }); + + test('should display multiple toasts', () => { + service.info('detail1', 'summary1'); + service.info('detail2', 'summary2'); + + spectator.detectChanges(); + expect(spectator.queryAll('div.toast-title').map(node => node.textContent.trim())).toEqual([ + 'summary1', + 'summary2', + ]); + expect(spectator.queryAll('div.toast-message').map(node => node.textContent.trim())).toEqual([ + 'detail1', + 'detail2', + ]); + }); + + test('should remove the opened toasts', () => { + service.info('test', 'title'); + spectator.detectChanges(); + expect(spectator.query('div.toast')).toBeTruthy(); + + service.clear(); + spectator.detectChanges(); + expect(spectator.query('p-div.toast')).toBeFalsy(); + }); });