Upgrade to ExtJS 3.2.0 - Released 03/30/2010
[extjs.git] / test / unit / data / JsonReader.js
diff --git a/test/unit/data/JsonReader.js b/test/unit/data/JsonReader.js
new file mode 100644 (file)
index 0000000..64a5b65
--- /dev/null
@@ -0,0 +1,171 @@
+/*!
+ * Ext JS Library 3.2.0
+ * Copyright(c) 2006-2010 Ext JS, Inc.
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+var suite = Ext.test.session.getSuite('JsonReader');
+
+suite.add(new Y.Test.Case({
+    name: 'buildExtractors',
+    setUp: function() {
+        this.reader = new Ext.data.JsonReader({
+            root: 'data',
+            idProperty: 'id',
+            totalProperty: 'totalProp',
+            messageProperty: 'messageProp',
+            successProperty: 'successProp',
+            fields: [
+               {mapping: 'mappy', name: 'inter', type: 'integer'}
+            ]
+        });
+        this.reader.buildExtractors();
+    },
+    tearDown: function() {
+        delete this.reader;
+    },
+    test_getTotal: function() {
+        Y.Assert.areSame(this.reader.getTotal({ totalProp: 500}), 500);
+    },
+    test_getSuccess: function() {
+        Y.Assert.areSame(this.reader.getSuccess({ successProp: false }), false);
+    },
+    test_getMessage: function() {
+        Y.Assert.areSame(this.reader.getMessage({ messageProp: 'Hello' }), 'Hello');
+    },
+    test_getRoot: function() {
+        Y.Assert.areSame(this.reader.getRoot({ data: 'data' }), 'data');
+    },
+    test_getId: function() {
+        Y.Assert.areSame(this.reader.getId({ id: 100 }), 100);
+    },
+    test_mapping: function() {
+        Y.Assert.areSame(this.reader.ef[0]({ mappy: 200 }), 200);
+    }
+}));
+
+suite.add(new Y.Test.Case({
+    name: 'readRecords',
+    setUp: function() {
+        this.reader = new Ext.data.JsonReader({
+            root: 'data',
+            idProperty: 'id',
+            totalProperty: 'totalProp',
+            messageProperty: 'Hello World',
+            successProperty: 'successProp',
+            fields: [
+               {name: 'id'},
+               {name: 'floater', type: 'float'},
+               {name: 'bool', type: 'boolean'},
+               {name: 'inter', type: 'integer'}
+            ]
+        });
+        this.data1 = {
+            id: 1,
+            floater: 1.23,
+            bool: true,
+            inter: 8675
+        };
+        this.rec1 = this.reader.readRecords({
+            data: [this.data1],
+            successProp: true,
+            totalProp: 2
+        });
+        this.rec2 = this.reader.readRecords({
+            data: [{
+                id: 2,
+                floater: 4.56,
+                bool: false,
+                inter: 309
+            }],
+            successProp: false,
+            totalProp: 6
+        });
+    },
+    test_tearDown: function() {
+        delete this.reader;
+        delete this.data1;
+        delete this.rec1;
+        delete this.rec2;
+    },
+    test_SuccessProperty: function() {
+        Y.Assert.areSame(this.rec1.success, true);
+        Y.Assert.areSame(this.rec2.success, false);
+    },
+    test_TotalRecords: function() {
+        Y.Assert.areSame(this.rec1.totalRecords, 2);
+        Y.Assert.areSame(this.rec2.totalRecords, 6);
+    },
+    test_Records: function() {
+        Y.Assert.areSame(this.rec1.records[0].data.id, this.data1.id);
+        Y.Assert.areSame(this.rec1.records[0].data.floater, this.data1.floater);
+        Y.Assert.areSame(this.rec1.records[0].data.bool, this.data1.bool);
+        Y.Assert.areSame(this.rec1.records[0].data.inter, this.data1.inter);
+    }
+}));
+
+suite.add(new Y.Test.Case({
+    name: 'readResponse',
+    setUp: function() {
+        this.reader = new Ext.data.JsonReader({
+            root: 'data',
+            idProperty: 'id',
+            totalProperty: 'totalProp',
+            messageProperty: 'messageProp',
+            successProperty: 'successProp',
+            fields: [
+               {name: 'id'},
+               {name: 'floater', type: 'float'},
+               {name: 'bool', type: 'boolean'},
+               {name: 'inter', type: 'integer'}
+            ]
+        });
+        this.data1 = {
+            id: 1,
+            floater: 1.23,
+            bool: true,
+            inter: 8675
+        };
+        this.rec1 = this.reader.readResponse('read', {
+            data: [this.data1],
+            successProp: true,
+            totalProp: 2,
+            messageProp: 'Hello'
+        });
+        this.rec2 = this.reader.readResponse('read', {
+            data: [{
+                id: 2,
+                floater: 4.56,
+                bool: false,
+                inter: 309
+            }],
+            successProp: false,
+            totalProp: 6
+        });
+    },
+    tearDown: function() {
+        delete this.reader;
+        delete this.data1;
+        delete this.rec1;
+        delete this.rec2;
+    },
+    test_SuccessProperty: function() {
+        Y.Assert.areSame(this.rec1.success, true);
+        Y.Assert.areSame(this.rec2.success, false);
+    },
+    test_Records: function() {
+        Y.Assert.areSame(this.rec1.data[0].id, this.data1.id);
+        Y.Assert.areSame(this.rec1.data[0].floater, this.data1.floater);
+        Y.Assert.areSame(this.rec1.data[0].bool, this.data1.bool);
+        Y.Assert.areSame(this.rec1.data[0].inter, this.data1.inter);
+    },
+    test_ActionProperty: function() {
+        Y.Assert.areSame(this.rec1.action, 'read');
+    },
+    test_MessageProperty: function() {
+        Y.Assert.areSame(this.rec1.message, 'Hello');
+    },
+    test_RawProperty: function() {
+        Y.Assert.areSame(this.rec1.raw.data[0].id, this.data1.id);
+    }
+}));