--- /dev/null
+// 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();
+} );
\ No newline at end of file