mirror of https://github.com/abpframework/abp.git
1 changed files with 82 additions and 0 deletions
@ -0,0 +1,82 @@ |
|||||
|
import { SpectatorDirective, createDirectiveFactory } from '@ngneat/spectator/jest'; |
||||
|
import { LoadingDirective } from '../directives'; |
||||
|
import { LoadingComponent } from '../components'; |
||||
|
|
||||
|
import { Component } from '@angular/core'; |
||||
|
|
||||
|
@Component({ |
||||
|
selector: 'abp-dummy', |
||||
|
template: '<div id="dummy">Testing Loading Directive</div>', |
||||
|
}) |
||||
|
export class DummyComponent {} |
||||
|
|
||||
|
describe('LoadingDirective', () => { |
||||
|
let spectator: SpectatorDirective<LoadingDirective>; |
||||
|
const createDirective = createDirectiveFactory({ |
||||
|
directive: LoadingDirective, |
||||
|
declarations: [LoadingComponent, DummyComponent], |
||||
|
entryComponents: [LoadingComponent], |
||||
|
}); |
||||
|
|
||||
|
describe('default', () => { |
||||
|
beforeEach(() => { |
||||
|
spectator = createDirective('<div [abpLoading]="status">Testing Loading Directive</div>', { |
||||
|
hostProps: { status: true }, |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
it('should create the loading component', done => { |
||||
|
setTimeout(() => { |
||||
|
expect(spectator.directive.rootNode).toBeTruthy(); |
||||
|
expect(spectator.directive.componentRef).toBeTruthy(); |
||||
|
done(); |
||||
|
}, 0); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('with custom target', () => { |
||||
|
const mockTarget = document.createElement('div'); |
||||
|
const spy = jest.spyOn(mockTarget, 'appendChild'); |
||||
|
|
||||
|
beforeEach(() => { |
||||
|
spectator = createDirective( |
||||
|
'<div [abpLoading]="status" [abpLoadingTargetElement]="target">Testing Loading Directive</div>', |
||||
|
{ |
||||
|
hostProps: { status: true, target: mockTarget }, |
||||
|
}, |
||||
|
); |
||||
|
}); |
||||
|
|
||||
|
it('should add the loading component to the DOM', done => { |
||||
|
setTimeout(() => { |
||||
|
expect(spy).toHaveBeenCalled(); |
||||
|
done(); |
||||
|
}, 0); |
||||
|
}); |
||||
|
|
||||
|
it('should remove the loading component to the DOM', done => { |
||||
|
const spy = jest.spyOn(spectator.directive['renderer'], 'removeChild'); |
||||
|
spectator.setHostInput({ status: false }); |
||||
|
setTimeout(() => { |
||||
|
expect(spy).toHaveBeenCalled(); |
||||
|
expect(spectator.directive.rootNode).toBeFalsy(); |
||||
|
done(); |
||||
|
}, 0); |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
describe('with a component selector', () => { |
||||
|
beforeEach(() => { |
||||
|
spectator = createDirective('<abp-dummy [abpLoading]="status"></abp-dummy>', { |
||||
|
hostProps: { status: true }, |
||||
|
}); |
||||
|
}); |
||||
|
|
||||
|
it('should select the child element', done => { |
||||
|
setTimeout(() => { |
||||
|
expect(spectator.directive.targetElement.id).toBe('dummy'); |
||||
|
done(); |
||||
|
}, 0); |
||||
|
}); |
||||
|
}); |
||||
|
}); |
||||
Loading…
Reference in new issue