--- a/media/unit_testing/tests_onhold/3_ajax/sDom.js +++ b/media/unit_testing/tests_onhold/3_ajax/sDom.js @@ -1,1 +1,262 @@ +// DATA_TEMPLATE: empty_table +oTest.fnStart( "sDom" ); +/* This is going to be brutal on the browser! There is a lot that can be tested here... */ + +$(document).ready( function () { + /* Check the default */ + var oTable = $('#example').dataTable( { + "sAjaxSource": "../../../examples/examples_support/json_source.txt" + } ); + var oSettings = oTable.fnSettings(); + + oTest.fnWaitTest( + "Default DOM varaible", + null, + function () { return oSettings.sDom == "lfrtip"; } + ); + + oTest.fnWaitTest( + "Default DOM in document", + null, + function () { + var nNodes = $('#demo div, #demo table'); + var nWrapper = document.getElementById('example_wrapper'); + var nLength = document.getElementById('example_length'); + var nFilter = document.getElementById('example_filter'); + var nInfo = document.getElementById('example_info'); + var nPaging = document.getElementById('example_paginate'); + var nTable = document.getElementById('example'); + + var bReturn = + nNodes[0] == nWrapper && + nNodes[1] == nLength && + nNodes[2] == nFilter && + nNodes[3] == nTable && + nNodes[4] == nInfo && + nNodes[5] == nPaging; + return bReturn; + } + ); + + oTest.fnWaitTest( + "Check example 1 in code propagates", + function () { + oSession.fnRestore(); + oTable = $('#example').dataTable( { + "sAjaxSource": "../../../examples/examples_support/json_source.txt", + "sDom": '<"wrapper"flipt>' + } ); + oSettings = oTable.fnSettings(); + }, + function () { return oSettings.sDom == '<"wrapper"flipt>'; } + ); + + oTest.fnWaitTest( + "Check example 1 in DOM", + null, + function () { + var jqNodes = $('#demo div, #demo table'); + var nNodes = []; + + /* Strip the paging nodes */ + for ( var i=0, iLen=jqNodes.length ; i<iLen ; i++ ) + { + if ( jqNodes[i].getAttribute('id') != "example_previous" && + jqNodes[i].getAttribute('id') != "example_next" ) + { + nNodes.push( jqNodes[i] ); + } + } + + var nWrapper = document.getElementById('example_wrapper'); + var nLength = document.getElementById('example_length'); + var nFilter = document.getElementById('example_filter'); + var nInfo = document.getElementById('example_info'); + var nPaging = document.getElementById('example_paginate'); + var nTable = document.getElementById('example'); + var nCustomWrapper = $('div.wrapper')[0]; + + var bReturn = + nNodes[0] == nWrapper && + nNodes[1] == nCustomWrapper && + nNodes[2] == nFilter && + nNodes[3] == nLength && + nNodes[4] == nInfo && + nNodes[5] == nPaging && + nNodes[6] == nTable; + return bReturn; + } + ); + + oTest.fnWaitTest( + "Check example 2 in DOM", + function () { + oSession.fnRestore(); + $('#example').dataTable( { + "sAjaxSource": "../../../examples/examples_support/json_source.txt", + "sDom": '<lf<t>ip>' + } ); + }, + function () { + var jqNodes = $('#demo div, #demo table'); + var nNodes = []; + var nCustomWrappers = [] + + /* Strip the paging nodes */ + for ( var i=0, iLen=jqNodes.length ; i<iLen ; i++ ) + { + if ( jqNodes[i].getAttribute('id') != "example_previous" && + jqNodes[i].getAttribute('id') != "example_next" ) + { + nNodes.push( jqNodes[i] ); + } + + /* Only the two custom divs don't have class names */ + if ( !jqNodes[i].getAttribute('class') ) + { + nCustomWrappers.push( jqNodes[i] ); + } + } + + var nWrapper = document.getElementById('example_wrapper'); + var nLength = document.getElementById('example_length'); + var nFilter = document.getElementById('example_filter'); + var nInfo = document.getElementById('example_info'); + var nPaging = document.getElementById('example_paginate'); + var nTable = document.getElementById('example'); + + var bReturn = + nNodes[0] == nWrapper && + nNodes[1] == nCustomWrappers[0] && + nNodes[2] == nLength && + nNodes[3] == nFilter && + nNodes[4] == nCustomWrappers[1] && + nNodes[5] == nTable && + nNodes[6] == nInfo && + nNodes[7] == nPaging; + return bReturn; + } + ); + + oTest.fnWaitTest( + "Check no length element", + function () { + oSession.fnRestore(); + $('#example').dataTable( { + "sAjaxSource": "../../../examples/examples_support/json_source.txt", + "sDom": 'frtip' + } ); + }, + function () { + var nNodes = $('#demo div, #demo table'); + var nWrapper = document.getElementById('example_wrapper'); + var nLength = document.getElementById('example_length'); + var nFilter = document.getElementById('example_filter'); + var nInfo = document.getElementById('example_info'); + var nPaging = document.getElementById('example_paginate'); + var nTable = document.getElementById('example'); + + var bReturn = + nNodes[0] == nWrapper && + null == nLength && + nNodes[1] == nFilter && + nNodes[2] == nTable && + nNodes[3] == nInfo && + nNodes[4] == nPaging; + return bReturn; + } + ); + + oTest.fnWaitTest( + "Check no filter element", + function () { + oSession.fnRestore(); + $('#example').dataTable( { + "sAjaxSource": "../../../examples/examples_support/json_source.txt", + "sDom": 'lrtip' + } ); + }, + function () { + var nNodes = $('#demo div, #demo table'); + var nWrapper = document.getElementById('example_wrapper'); + var nLength = document.getElementById('example_length'); + var nFilter = document.getElementById('example_filter'); + var nInfo = document.getElementById('example_info'); + var nPaging = document.getElementById('example_paginate'); + var nTable = document.getElementById('example'); + + var bReturn = + nNodes[0] == nWrapper && + nNodes[1] == nLength && + null == nFilter && + nNodes[2] == nTable && + nNodes[3] == nInfo && + nNodes[4] == nPaging; + return bReturn; + } + ); + + /* Note we don't test for no table as this is not supported (and it would be fairly daft! */ + + oTest.fnWaitTest( + "Check no info element", + function () { + oSession.fnRestore(); + $('#example').dataTable( { + "sAjaxSource": "../../../examples/examples_support/json_source.txt", + "sDom": 'lfrtp' + } ); + }, + function () { + var nNodes = $('#demo div, #demo table'); + var nWrapper = document.getElementById('example_wrapper'); + var nLength = document.getElementById('example_length'); + var nFilter = document.getElementById('example_filter'); + var nInfo = document.getElementById('example_info'); + var nPaging = document.getElementById('example_paginate'); + var nTable = document.getElementById('example'); + + var bReturn = + nNodes[0] == nWrapper && + nNodes[1] == nLength && + nNodes[2] == nFilter && + nNodes[3] == nTable && + null == nInfo && + nNodes[4] == nPaging; + return bReturn; + } + ); + + oTest.fnWaitTest( + "Check no paging element", + function () { + oSession.fnRestore(); + $('#example').dataTable( { + "sAjaxSource": "../../../examples/examples_support/json_source.txt", + "sDom": 'lfrti' + } ); + }, + function () { + var nNodes = $('#demo div, #demo table'); + var nWrapper = document.getElementById('example_wrapper'); + var nLength = document.getElementById('example_length'); + var nFilter = document.getElementById('example_filter'); + var nInfo = document.getElementById('example_info'); + var nPaging = document.getElementById('example_paginate'); + var nTable = document.getElementById('example'); + + var bReturn = + nNodes[0] == nWrapper && + nNodes[1] == nLength && + nNodes[2] == nFilter && + nNodes[3] == nTable && + nNodes[4] == nInfo && + null == nPaging; + return bReturn; + } + ); + + + oTest.fnComplete(); +} );