1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
describe('core - off()', function() {
dt.libs({
js: ['jquery', 'datatables'],
css: ['datatables']
});
let stan = 0;
let fred = 0;
function incrementStan() {
stan++;
}
function incrementFred() {
fred++;
}
describe('Check the defaults', function() {
dt.html('basic');
it('Exists and is a function', function() {
let table = $('#example').DataTable();
expect(typeof table.off).toBe('function');
});
it('Returns an API instance', function() {
let table = $('#example').DataTable();
expect(table.off('draw') instanceof $.fn.dataTable.Api).toBe(true);
});
});
describe('Check the behaviour', function() {
dt.html('basic');
it('Single event listeners for a type are removable', function() {
stan = 0;
let table = $('#example').DataTable();
table.on('draw', incrementStan);
table.page(2).draw(false);
table.off('draw');
table.page(3).draw(false);
expect(stan).toBe(1);
});
dt.html('basic');
it('Single event listeners (dt namespace) for a type can be removed', function() {
stan = 0;
let table = $('#example').DataTable();
table.on('draw', incrementStan);
table.page(2).draw(false);
table.off('draw.dt');
table.page(3).draw(false);
expect(stan).toBe(1);
});
dt.html('basic');
it('All event listeners for a type can be removed', function() {
(stan = 0), (fred = 0);
let table = $('#example').DataTable();
table.on('draw', incrementStan);
table.on('draw', incrementFred);
table.page(2).draw(false);
table.off('draw');
table.page(3).draw(false);
expect(stan).toBe(1);
expect(fred).toBe(1);
});
dt.html('basic');
it('Specific type of event listener can be removed', function() {
stan = 0;
let table = $('#example').DataTable();
table.on('draw page', incrementStan);
table.page(2).draw(false);
table.off('draw');
table.page(3).draw(false);
expect(stan).toBe(3);
});
dt.html('basic');
it('Event listener with a specific function can be removed', function() {
(stan = 0), (fred = 0);
let table = $('#example').DataTable();
table.on('draw', incrementStan);
table.on('draw', incrementFred);
table.page(2).draw(false);
table.off('draw', incrementStan);
table.page(3).draw(false);
expect(stan).toBe(1);
expect(fred).toBe(2);
});
});
});
|