#113 unit tests (wip)

This commit is contained in:
Denys Vuika
2016-06-02 17:09:39 +01:00
parent 8552c44c8d
commit 754c5297b5
3 changed files with 105 additions and 12 deletions

View File

@@ -23,6 +23,14 @@ import {
} from 'angular2/testing';
import { DataTableComponent } from './datatable.component';
import {
DataRow,
DataSorting
} from './../data/datatable-adapter';
import {
ObjectDataTableAdapter,
ObjectDataColumn
} from './../data/object-datatable-adapter';
describe('DataTable', () => {
@@ -33,14 +41,101 @@ describe('DataTable', () => {
dataTable = new DataTableComponent();
eventMock = {
preventDefault: function () {
console.log('mock preventDefault');
}
preventDefault: function () {}
};
});
it('should pass', () => {
expect(true).toBe(true);
it('should initialize default adapter', () => {
expect(dataTable.data).toBeUndefined();
dataTable.ngOnInit();
expect(dataTable.data).toEqual(jasmine.any(ObjectDataTableAdapter));
});
it('should initialize with custom data', () => {
let data = new ObjectDataTableAdapter([], []);
dataTable.data = data;
dataTable.ngOnInit();
expect(dataTable.data).toBe(data);
});
it('should emit row click event', (done) => {
let row = <DataRow> {};
dataTable.rowClick.subscribe(e => {
expect(e.value).toBe(row);
done();
});
dataTable.onRowClick(row, null);
});
it('should prevent default event on row click event', () => {
let e = jasmine.createSpyObj('event', ['preventDefault']);
dataTable.ngOnInit();
dataTable.onRowClick(null, e);
expect(e.preventDefault).toHaveBeenCalled();
});
it('should not sort if column is missing', () => {
dataTable.ngOnInit();
let adapter = dataTable.data;
spyOn(adapter, 'setSorting').and.callThrough();
dataTable.onColumnHeaderClick(null);
expect(adapter.setSorting).not.toHaveBeenCalled();
});
it('should not sort upon clicking non-sortable column header', () => {
dataTable.ngOnInit();
let adapter = dataTable.data;
spyOn(adapter, 'setSorting').and.callThrough();
let column = new ObjectDataColumn({
key: 'column_1'
});
dataTable.onColumnHeaderClick(column);
expect(adapter.setSorting).not.toHaveBeenCalled();
});
it('should set sorting upon column header clicked', () => {
dataTable.ngOnInit();
let adapter = dataTable.data;
spyOn(adapter, 'setSorting').and.callThrough();
let column = new ObjectDataColumn({
key: 'column_1',
sortable: true
});
dataTable.onColumnHeaderClick(column);
expect(adapter.setSorting).toHaveBeenCalledWith(
jasmine.objectContaining({
key: 'column_1',
direction: 'asc'
})
);
});
it('should invert sorting upon column header clicked', () => {
dataTable.ngOnInit();
let adapter = dataTable.data;
spyOn(adapter, 'setSorting').and.callThrough();
spyOn(adapter, 'getSorting').and.returnValue(new DataSorting('column_1', 'asc'));
let column = new ObjectDataColumn({
key: 'column_1',
sortable: true
});
dataTable.onColumnHeaderClick(column);
expect(adapter.setSorting).toHaveBeenCalledWith(
jasmine.objectContaining({
key: 'column_1',
direction: 'desc'
})
);
});
});