,
@@ -71,4 +93,10 @@ export class LoadingDirective implements OnInit {
}
}
}
+
+ ngOnDestroy() {
+ if (this.timerSubscription) {
+ this.timerSubscription.unsubscribe();
+ }
+ }
}
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/tests/loading.directive.spec.ts b/npm/ng-packs/packages/theme-shared/src/lib/tests/loading.directive.spec.ts
index 1b49b8581c..b359a2000c 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/tests/loading.directive.spec.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/tests/loading.directive.spec.ts
@@ -20,8 +20,8 @@ describe('LoadingDirective', () => {
describe('default', () => {
beforeEach(() => {
- spectator = createDirective('Testing Loading Directive
', {
- hostProps: { status: true },
+ spectator = createDirective('Testing Loading Directive
', {
+ hostProps: { loading: true },
});
});
@@ -30,7 +30,7 @@ describe('LoadingDirective', () => {
expect(spectator.directive.rootNode).toBeTruthy();
expect(spectator.directive.componentRef).toBeTruthy();
done();
- }, 0);
+ }, 20);
});
});
@@ -40,9 +40,9 @@ describe('LoadingDirective', () => {
beforeEach(() => {
spectator = createDirective(
- 'Testing Loading Directive
',
+ 'Testing Loading Directive
',
{
- hostProps: { status: true, target: mockTarget },
+ hostProps: { loading: true, target: mockTarget, delay: 0 },
},
);
});
@@ -51,24 +51,35 @@ describe('LoadingDirective', () => {
setTimeout(() => {
expect(spy).toHaveBeenCalled();
done();
- }, 0);
+ }, 20);
});
it('should remove the loading component to the DOM', done => {
const rendererSpy = jest.spyOn(spectator.directive['renderer'], 'removeChild');
- spectator.setHostInput({ status: false });
+ setTimeout(() => spectator.setHostInput({ loading: false }), 0);
setTimeout(() => {
expect(rendererSpy).toHaveBeenCalled();
expect(spectator.directive.rootNode).toBeFalsy();
done();
- }, 0);
+ }, 20);
+ });
+
+ it('should appear with delay', done => {
+ spectator.setHostInput({ loading: false, delay: 20 });
+ spectator.detectChanges();
+ setTimeout(() => spectator.setHostInput({ loading: true }), 0);
+ setTimeout(() => expect(spectator.directive.loading).toBe(false), 15);
+ setTimeout(() => {
+ expect(spectator.directive.loading).toBe(true);
+ done();
+ }, 50);
});
});
describe('with a component selector', () => {
beforeEach(() => {
- spectator = createDirective('', {
- hostProps: { status: true },
+ spectator = createDirective('', {
+ hostProps: { loading: true },
});
});
@@ -76,7 +87,7 @@ describe('LoadingDirective', () => {
setTimeout(() => {
expect(spectator.directive.targetElement.id).toBe('dummy');
done();
- }, 0);
+ }, 20);
});
});
});
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 d7fbd7219e..23e99b8204 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
@@ -41,7 +41,7 @@ describe('ToasterService', () => {
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');
+ expect(spectator.query('p.toast-message')).toHaveText('test');
});
test('should display a warning toast', () => {
@@ -71,7 +71,7 @@ describe('ToasterService', () => {
'summary1',
'summary2',
]);
- expect(spectator.queryAll('div.toast-message').map(node => node.textContent.trim())).toEqual([
+ expect(spectator.queryAll('p.toast-message').map(node => node.textContent.trim())).toEqual([
'detail1',
'detail2',
]);