From 503c3cfca58c8b125c4ee15219bb0c26ad470c5a Mon Sep 17 00:00:00 2001 From: Allan Jardine Date: Fri, 22 Apr 2011 23:14:20 +0100 Subject: [PATCH] New: Add unit tests for deferred loading with server-side processing Remove: Deferred loading for Ajax sourced data - was incomplete and would be messy to fully implement --- media/js/jquery.dataTables.js | 4 +- .../4_server-side/iDeferLoading.js | 95 +++++++++++++++++++ 2 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 media/unit_testing/tests_onhold/4_server-side/iDeferLoading.js diff --git a/media/js/jquery.dataTables.js b/media/js/jquery.dataTables.js index 72781e28..149dd0c1 100644 --- a/media/js/jquery.dataTables.js +++ b/media/js/jquery.dataTables.js @@ -2305,7 +2305,7 @@ */ function _fnInitalise ( oSettings ) { - var i, iLen, bDefer=oSettings.bDeferLoading, iAjaxStart=oSettings.iInitDisplayStart; + var i, iLen, iAjaxStart=oSettings.iInitDisplayStart; /* Ensure that the table data is fully initialised */ if ( oSettings.bInitialised === false ) @@ -2358,7 +2358,7 @@ } /* if there is an ajax source load the data */ - if ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide && !bDefer ) + if ( oSettings.sAjaxSource !== null && !oSettings.oFeatures.bServerSide ) { oSettings.fnServerData.call( oSettings.oInstance, oSettings.sAjaxSource, [], function(json) { var aData = json; diff --git a/media/unit_testing/tests_onhold/4_server-side/iDeferLoading.js b/media/unit_testing/tests_onhold/4_server-side/iDeferLoading.js new file mode 100644 index 00000000..d6adcb73 --- /dev/null +++ b/media/unit_testing/tests_onhold/4_server-side/iDeferLoading.js @@ -0,0 +1,95 @@ +// DATA_TEMPLATE: deferred_table +/* + */ +oTest.fnStart( "Defer loading tests" ); + +$(document).ready( function () { + var gotServerData = false; + + $('#example').dataTable( { + "iDeferLoading": 57, + "bServerSide": true, + "sAjaxSource": "../../../examples/server_side/scripts/server_processing.php", + "fnServerData": function (url, data, fn) { + $.ajax( { + "url": url, + "data": data, + "success": function(json) { + gotServerData = true; + fn( json ); + }, + "dataType": "json", + "cache": false + } ); + } + } ); + + oTest.fnWaitTest( + "10 rows shown on the first page", + null, + function () { return $('#example tbody tr').length == 10; } + ); + + oTest.fnWaitTest( + "No request to the server yet", + null, + function () { return !gotServerData; } + ); + + oTest.fnTest( + "Information on zero config", + null, + function () { return document.getElementById('example_info').innerHTML == "Showing 1 to 10 of 57 entries"; } + ); + + oTest.fnWaitTest( + "Initial data order retained", + null, + function () { return $('#example tbody td:eq(0)').html() == "Gecko"; } + ); + + oTest.fnWaitTest( + "Initial data order retained 2", + null, + function () { return $('#example tbody td:eq(1)').html() == "Firefox 1.0"; } + ); + + oTest.fnWaitTest( + "Still no request to the server yet", + null, + function () { return !gotServerData; } + ); + + oTest.fnWaitTest( + "Sorting (first click) on second column", + function () { $('#example thead th:eq(1)').click(); }, + function () { return $('#example tbody td:eq(1)').html() == "All others"; } + ); + + oTest.fnWaitTest( + "Now we've had a request", + null, + function () { return gotServerData; } + ); + + oTest.fnTest( + "Information after sort", + null, + function () { return document.getElementById('example_info').innerHTML == "Showing 1 to 10 of 57 entries"; } + ); + + oTest.fnWaitTest( + "Sorting (second click) on second column", + function () { $('#example thead th:eq(1)').click(); }, + function () { return $('#example tbody td:eq(1)').html() == "Seamonkey 1.1"; } + ); + + oTest.fnWaitTest( + "Sorting (third click) on second column", + function () { $('#example thead th:eq(1)').click(); }, + function () { return $('#example tbody td:eq(1)').html() == "All others"; } + ); + + + oTest.fnComplete(); +} ); \ No newline at end of file