// DATA_TEMPLATE: empty_table oTest.fnStart( "6872 - mDataProp and sDefaultContent for deep objects" ); $(document).ready( function () { var test = false; $.fn.dataTable.ext.sErrMode = "throw"; /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Shallow properties */ $('#example').dataTable( { "aaData": [ { "a": "a", "b": "b", "c": "c", "d": "d", "e": "e" } ], "aoColumns": [ { "mDataProp": "a" }, { "mDataProp": "b" }, { "mDataProp": "c" }, { "mDataProp": "d" }, { "mDataProp": "e" } ] } ); oTest.fnTest( "Basic initialisation of objects works", null, function () { return $('#example tbody td:eq(0)').html() === "a"; } ); oTest.fnTest( "Error when property missing (no default content)", function () { oSession.fnRestore(); test = false; try { $('#example').dataTable( { "aaData": [ { "a": "a", "b": "b", "d": "d", "e": "e" } ], "aoColumns": [ { "mDataProp": "a" }, { "mDataProp": "b" }, { "mDataProp": "c" }, { "mDataProp": "d" }, { "mDataProp": "e" } ] } ); } catch (e) { test = true; } }, function () { return test; } ); oTest.fnTest( "Default content used for missing prop and no error", function () { oSession.fnRestore(); $('#example').dataTable( { "aaData": [ { "a": "a", "b": "b", "d": "d", "e": "e" } ], "aoColumns": [ { "mDataProp": "a" }, { "mDataProp": "b" }, { "mDataProp": "c", "sDefaultContent": "test" }, { "mDataProp": "d" }, { "mDataProp": "e" } ] } ); }, function () { return $('#example tbody td:eq(2)').html() === "test"; } ); /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Deep properties with a single object */ oTest.fnTest( "Basic test with deep properties", function () { oSession.fnRestore(); $('#example').dataTable( { "aaData": [ { "z": { "a": "a", "b": "b", "c": "c", "d": "d", "e": "e" } } ], "aoColumns": [ { "mDataProp": "z.a" }, { "mDataProp": "z.b" }, { "mDataProp": "z.c" }, { "mDataProp": "z.d" }, { "mDataProp": "z.e" } ] } ); }, function () { return $('#example tbody td:eq(0)').html() === "a"; } ); oTest.fnTest( "Error when property missing on deep get (no default content)", function () { oSession.fnRestore(); test = false; try { $('#example').dataTable( { "aaData": [ { "z": { "a": "a", "b": "b", "c": "c", "e": "e" } } ], "aoColumns": [ { "mDataProp": "z.a" }, { "mDataProp": "z.b" }, { "mDataProp": "z.c" }, { "mDataProp": "z.d" }, { "mDataProp": "z.e" } ] } ); } catch (e) { test = true; } }, function () { return test; } ); oTest.fnTest( "Default content used for missing prop on deep get and no error", function () { oSession.fnRestore(); $('#example').dataTable( { "aaData": [ { "z": { "a": "a", "b": "b", "c": "c", "e": "e" } } ], "aoColumns": [ { "mDataProp": "z.a" }, { "mDataProp": "z.b" }, { "mDataProp": "z.c" }, { "mDataProp": "z.d", "sDefaultContent": "test" }, { "mDataProp": "z.e" } ] } ); }, function () { return $('#example tbody td:eq(3)').html() === "test"; } ); /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Deep properties with individual objects */ oTest.fnTest( "Basic test with deep individual properties", function () { oSession.fnRestore(); $('#example').dataTable( { "aaData": [ { "m": { "a": "a" }, "n": { "b": "b" }, "o": { "c": "c" }, "p": { "d": "d" }, "q": { "e": "e" } } ], "aoColumns": [ { "mDataProp": "m.a" }, { "mDataProp": "n.b" }, { "mDataProp": "o.c" }, { "mDataProp": "p.d" }, { "mDataProp": "q.e" } ] } ); }, function () { return $('#example tbody td:eq(0)').html() === "a"; } ); oTest.fnTest( "Error when property missing on deep individual get (no default content)", function () { oSession.fnRestore(); test = false; try { $('#example').dataTable( { "aaData": [ { "m": { "a": "a" }, "n": { "b": "b" }, "p": { "d": "d" }, "q": { "e": "e" } } ], "aoColumns": [ { "mDataProp": "m.a" }, { "mDataProp": "n.b" }, { "mDataProp": "o.c" }, { "mDataProp": "p.d" }, { "mDataProp": "q.e" } ] } ); } catch (e) { test = true; } }, function () { return test; } ); oTest.fnTest( "Default content used for missing prop on deep individual get and no error", function () { oSession.fnRestore(); $('#example').dataTable( { "aaData": [ { "m": { "a": "a" }, "n": { "b": "b" }, "p": { "d": "d" }, "q": { "e": "e" } } ], "aoColumns": [ { "mDataProp": "m.a" }, { "mDataProp": "n.b" }, { "mDataProp": "o.c", "sDefaultContent": "test" }, { "mDataProp": "p.d" }, { "mDataProp": "q.e" } ] } ); }, function () { return $('#example tbody td:eq(2)').html() === "test"; } ); oTest.fnComplete(); } );