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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203
|
// todo tests
// - Check it exists and is a function
// - As a getter:
// - Will return the options specified by the `orderFixed` init option
// - pre
// - post
// - pre and post together
// - none (`undefined`)
// - Fixed sorting set with this method will be corrected returned
// - As a setter:
// - A pre fixed order can be set
// - A post fixed order can be set
// - Both pre and post can be set
// - Returns an API instance
describe('core - order.fixed()', function() {
dt.libs({
js: ['jquery', 'datatables'],
css: ['datatables']
});
describe('Check the defaults', function() {
dt.html('basic');
it('Exists and is a function', function() {
expect(typeof $('#example').DataTable().order.fixed).toBe('function');
});
it('Getter returns a plain object', function() {
let table = $('#example').DataTable();
expect($.isPlainObject(table.order.fixed())).toBe(true);
});
dt.html('basic');
it('Setter returns an API instance', function() {
let table = $('#example').DataTable();
expect(table.order.fixed({ pre: [0, 'asc'] }) instanceof $.fn.dataTable.Api).toBe(true);
});
});
describe('Simple tests for the getter behaviour', function() {
dt.html('basic');
it('Returns empty object if nothing set', function() {
let table = $('#example').DataTable();
expect(JSON.stringify(table.order.fixed())).toBe('{"pre":[]}');
});
it('Returns single pre items', function() {
let table = $('#example').DataTable();
table.order.fixed({ pre: [1, 'asc'] });
expect(JSON.stringify(table.order.fixed())).toBe('{"pre":[1,"asc"]}');
});
it('Returns two pre items', function() {
let table = $('#example').DataTable();
table.order.fixed({ pre: [[1, 'asc'], [2, 'desc']] });
expect(JSON.stringify(table.order.fixed())).toBe('{"pre":[[1,"asc"],[2,"desc"]]}');
});
it('Returns single post item', function() {
let table = $('#example').DataTable();
table.order.fixed({ post: [1, 'desc'] });
expect(JSON.stringify(table.order.fixed())).toBe('{"post":[1,"desc"]}');
});
it('Returns two post items', function() {
let table = $('#example').DataTable();
table.order.fixed({ post: [[1, 'asc'], [2, 'desc']] });
expect(JSON.stringify(table.order.fixed())).toBe('{"post":[[1,"asc"],[2,"desc"]]}');
});
it('Returns combined pre and post items', function() {
let table = $('#example').DataTable();
table.order.fixed({ pre: [1, 'desc'], post: [2, 'asc'] }).draw();
expect(JSON.stringify(table.order.fixed())).toBe('{"pre":[1,"desc"],"post":[2,"asc"]}');
});
});
describe('Simple setter tests without any other searching enabled', function() {
dt.html('basic');
it('Confirm no initial sorting', function() {
let table = $('#example').DataTable({
order: []
});
expect($('#example tbody tr td:eq(0)').text()).toBe('Tiger Nixon');
});
dt.html('basic');
it('Can clear existing sort', function() {
let table = $('#example').DataTable();
table.order.fixed({ pre: [1, 'asc'] });
table.order.fixed({ post: [] });
expect(JSON.stringify(table.order.fixed())).toBe('{"post":[]}');
});
dt.html('basic');
it('Single pre item before draw()', function() {
let table = $('#example').DataTable({
order: []
});
table.order.fixed({ pre: [0, 'asc'] });
expect($('#example tbody tr td:eq(0)').text()).toBe('Tiger Nixon');
});
dt.html('basic');
it('Single pre item', function() {
let table = $('#example').DataTable({
order: []
});
table.order.fixed({ pre: [0, 'desc'] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Zorita Serrano');
});
dt.html('basic');
it('Two pre items', function() {
let table = $('#example').DataTable({
order: []
});
table.order.fixed({ pre: [[4, 'desc'], [3, 'asc']] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Thor Walton');
});
dt.html('basic');
it('Single post item', function() {
let table = $('#example').DataTable({
order: []
});
table.order.fixed({ post: [0, 'desc'] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Zorita Serrano');
});
dt.html('basic');
it('Two post items', function() {
let table = $('#example').DataTable({
order: []
});
table.order.fixed({ post: [[2, 'asc'], [3, 'desc']] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Tiger Nixon');
});
dt.html('basic');
it('Returns combined pre and post items', function() {
let table = $('#example').DataTable({
order: []
});
table.order.fixed({ pre: [1, 'desc'], post: [2, 'asc'] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Prescott Bartlett');
});
});
describe('Interactions with other sorts', function() {
dt.html('basic');
it('Pre with default searching', function() {
let table = $('#example').DataTable();
table.order.fixed({ pre: [2, 'desc'] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Airi Satou');
});
dt.html('basic');
it('Post with default searching', function() {
let table = $('#example').DataTable();
table.order.fixed({ post: [2, 'desc'] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Airi Satou');
});
dt.html('basic');
it('Pre with initialisation ordering', function() {
let table = $('#example').DataTable({
order: [[2, 'desc']]
});
table.order.fixed({ pre: [3, 'desc'] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Ashton Cox');
});
dt.html('basic');
it('Post with initialisation ordering', function() {
let table = $('#example').DataTable({
order: [[2, 'desc']]
});
table.order.fixed({ post: [3, 'desc'] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Garrett Winters');
});
dt.html('basic');
it('Pre with API ordering', function() {
let table = $('#example').DataTable({
order: []
});
table.order([2, 'desc']).draw();
table.order.fixed({ pre: [3, 'desc'] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Ashton Cox');
});
dt.html('basic');
it('Post with API ordering', function() {
let table = $('#example').DataTable({
order: []
});
table.order([2, 'desc']).draw();
table.order.fixed({ post: [3, 'desc'] }).draw();
expect($('#example tbody tr td:eq(0)').text()).toBe('Garrett Winters');
});
});
});
|