novo-elements
Version:
Bullhorn's NOVO Element Repository for Angular 2
130 lines (116 loc) • 4.17 kB
text/typescript
// NG2
import { Component, ElementRef } from '@angular/core';
import { TestBed, async } from '@angular/core/testing';
// App
import { ThOrderable } from './ThOrderable';
({
selector: 'test-component',
template: `
<table>
<tr>
<th novoThOrderable="right"></th>
</tr>
</table>
`
})
class TestComponent {}
describe('Elements: ThOrderable', () => {
let fixture;
let component;
describe('Directive: ', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
ThOrderable,
TestComponent
]
}).compileComponents();
fixture = TestBed.createComponent(TestComponent);
component = fixture.debugElement.componentInstance;
}));
it('should initialize as a directive', () => {
expect(component).toBeDefined();
});
});
describe('Class: ', () => {
let mockElement = new ElementRef(document.createElement('div'));
let subject = new ThOrderable(mockElement);
mockElement.nativeElement = {
parentNode: {
children: [mockElement]
},
classList: {
remove: () => {},
add: () => {}
}
};
it('should initialize correctly.', () => {
expect(subject).toBeDefined();
expect(subject.index).toBeDefined();
});
describe('Method: onDragStart()', () => {
it('should be defined', () => {
expect(subject.onDragStart).toBeDefined();
subject.column = {
ordering: false
};
subject.onDragStart();
});
});
describe('Method: deleteColumns()', () => {
it('should delete rows from the table', () => {
expect(subject.deleteColumns).toBeDefined();
let mockTable = {
rows: [],
deleteRow: () => {}
};
spyOn(mockTable, 'deleteRow').and.callThrough();
subject.deleteColumns(mockTable);
});
});
describe('Method: findTable()', () => {
it('should be defined', () => {
let mockHTMLElement = document.createElement('div');
expect(subject.findTable).toBeDefined();
subject.findTable(mockHTMLElement);
});
});
describe('Method: onDrag()', () => {
it('should be defined', () => {
expect(subject.onDrag).toBeDefined();
subject.onDrag();
});
});
describe('Method: onDragEnd()', () => {
it('should be defined', () => {
expect(subject.onDragEnd).toBeDefined();
spyOn(document.body, 'removeChild').and.callFake(() => {});
subject.onDragEnd();
});
});
describe('Method: onDrop()', () => {
it('should be defined', () => {
expect(subject.onDrop).toBeDefined();
subject.onDrop({ dataTransfer: { getData: () => { return '[{}]'; } }, preventDefault: () => {}, stopPropagation: () => {} });
});
});
describe('Method: onDragOver()', () => {
it('should be defined', () => {
expect(subject.onDragOver).toBeDefined();
subject.onDragOver({ dataTransfer: { dropEffect: '' }, preventDefault: () => {}, stopPropagation: () => {} });
});
});
describe('Method: onDragEnter()', () => {
it('should be defined', () => {
expect(subject.onDragEnter).toBeDefined();
subject.onDragEnter({ target: 'test' });
});
});
describe('Method: onDragLeave()', () => {
it('should be defined', () => {
expect(subject.onDragLeave).toBeDefined();
subject.onDragLeave();
});
});
});
});