Prettier JQuery tables
[contractdashboard.git] / media / unit_testing / tests_onhold / 1_dom / bAutoWidth.js
blob:a/media/unit_testing/tests_onhold/1_dom/bAutoWidth.js -> blob:b/media/unit_testing/tests_onhold/1_dom/bAutoWidth.js
--- a/media/unit_testing/tests_onhold/1_dom/bAutoWidth.js
+++ b/media/unit_testing/tests_onhold/1_dom/bAutoWidth.js
@@ -1,1 +1,138 @@
+// DATA_TEMPLATE: dom_data
+oTest.fnStart( "bAutoWidth" );
 
+/* It's actually a little tricky to test this. We can't test absolute numbers because
+ * different browsers and different platforms will render the width of the columns slightly
+ * differently. However, we certainly can test the principle of what should happen (column 
+ * width doesn't change over pages)
+ */
+
+$(document).ready( function () {
+	/* Check the default */
+	var oTable = $('#example').dataTable();
+	var oSettings = oTable.fnSettings();
+	
+	oTest.fnTest( 
+		"Auto width is enabled by default",
+		null,
+		function () { return oSettings.oFeatures.bAutoWidth; }
+	);
+	
+	oTest.fnTest( 
+		"First column has a width assigned to it",
+		null,
+		function () { return $('#example thead th:eq(0)').attr('style').match(/width/i); }
+	);
+	
+	/*
+	This would seem like a better test - but there appear to be difficulties with tables
+	which are bigger (calculated) than there is actually room for. I suspect this is actually
+	a bug in datatables
+	oTest.fnTest( 
+		"Check column widths on first page match second page",
+		null,
+		function () {
+			var anThs = $('#example thead th');
+			var a0 = anThs[0].offsetWidth;
+			var a1 = anThs[1].offsetWidth;
+			var a2 = anThs[2].offsetWidth;
+			var a3 = anThs[3].offsetWidth;
+			var a4 = anThs[4].offsetWidth;
+			$('#example_next').click();
+			var b0 = anThs[0].offsetWidth;
+			var b1 = anThs[1].offsetWidth;
+			var b2 = anThs[2].offsetWidth;
+			var b3 = anThs[3].offsetWidth;
+			var b4 = anThs[4].offsetWidth;
+			console.log( a0, b0, a1, b1, a2, b2, a3, b3 );
+			if ( a0==b0 && a1==b1 && a2==b2 && a3==b3 )
+				return true;
+			else
+				return false;
+		}
+	);
+	
+	oTest.fnTest( 
+		"Check column widths on second page match thid page",
+		null,
+		function () {
+			var anThs = $('#example thead th');
+			var a0 = anThs[0].offsetWidth;
+			var a1 = anThs[1].offsetWidth;
+			var a2 = anThs[2].offsetWidth;
+			var a3 = anThs[3].offsetWidth;
+			var a4 = anThs[4].offsetWidth;
+			$('#example_next').click();
+			var b0 = anThs[0].offsetWidth;
+			var b1 = anThs[1].offsetWidth;
+			var b2 = anThs[2].offsetWidth;
+			var b3 = anThs[3].offsetWidth;
+			var b4 = anThs[4].offsetWidth;
+			if ( a0==b0 && a1==b1 && a2==b2 && a3==b3 )
+				return true;
+			else
+				return false;
+		}
+	);
+	*/
+	
+	/* Check can disable */
+	oTest.fnTest( 
+		"Auto width can be disabled",
+		function () {
+			oSession.fnRestore();
+			oTable = $('#example').dataTable( {
+				"bAutoWidth": false
+			} );
+	 		oSettings = oTable.fnSettings();
+		},
+		function () { return oSettings.oFeatures.bAutoWidth == false; }
+	);
+	
+	oTest.fnTest( 
+		"First column does not have a width assigned to it",
+		null,
+		function () { return $('#example thead th:eq(0)').attr('style') == null; }
+	);
+	
+	/*
+	oTest.fnTest( 
+		"Check column widths on first page do not match second page",
+		null,
+		function () {
+			var anThs = $('#example thead th');
+			var a0 = anThs[0].offsetWidth;
+			var a1 = anThs[1].offsetWidth;
+			var a2 = anThs[2].offsetWidth;
+			var a3 = anThs[3].offsetWidth;
+			var a4 = anThs[4].offsetWidth;
+			$('#example_next').click();
+			var b0 = anThs[0].offsetWidth;
+			var b1 = anThs[1].offsetWidth;
+			var b2 = anThs[2].offsetWidth;
+			var b3 = anThs[3].offsetWidth;
+			var b4 = anThs[4].offsetWidth;
+			if ( a0==b0 && a1==b1 && a2==b2 && a3==b3 )
+				return false;
+			else
+				return true;
+		}
+	);
+	*/
+	
+	/* Enable makes no difference */
+	oTest.fnTest( 
+		"Auto width enabled override",
+		function () {
+			oSession.fnRestore();
+			oTable = $('#example').dataTable( {
+				"bAutoWidth": true
+			} );
+	 		oSettings = oTable.fnSettings();
+		},
+		function () { return oSettings.oFeatures.bAutoWidth; }
+	);
+	
+	
+	oTest.fnComplete();
+} );