[Commits] r252 - in sandbox/elemoine/playground: lib/GeoExt/data tests tests/data

commits at geoext.org commits at geoext.org
Mon Mar 23 22:00:05 CET 2009


Author: elemoine
Date: 2009-03-23 22:00:05 +0100 (Mon, 23 Mar 2009)
New Revision: 252

Added:
   sandbox/elemoine/playground/tests/data/LayerReader.html
Modified:
   sandbox/elemoine/playground/lib/GeoExt/data/LayerReader.js
   sandbox/elemoine/playground/tests/list-tests.html
Log:
add tests for LayerReader


Modified: sandbox/elemoine/playground/lib/GeoExt/data/LayerReader.js
===================================================================
--- sandbox/elemoine/playground/lib/GeoExt/data/LayerReader.js	2009-03-23 19:08:00 UTC (rev 251)
+++ sandbox/elemoine/playground/lib/GeoExt/data/LayerReader.js	2009-03-23 21:00:05 UTC (rev 252)
@@ -32,7 +32,7 @@
  */
 GeoExt.data.LayerReader = function(meta, recordType) {
     meta = meta || {};
-    if(!(recordType instanceof GeoExt.data.LayerRecord)) {
+    if(!(recordType instanceof Function)) {
         recordType = GeoExt.data.LayerRecord.create(
             recordType || meta.fields || {});
     }
@@ -54,7 +54,7 @@
      *      containing {<GeoExt.data.LayerRecord>} objects.
      *
      * Parameters:
-     * layers - {Array({OpenLayers.Layer})}
+     * layers - {Array({OpenLayers.Layer})} Array of layers.
      *
      * Returns:
      * {Object} An object with two properties. The value of the property "records"
@@ -63,14 +63,13 @@
      */
     readRecords : function(layers) {
         var records = [];
-
-        if (layers) {
+        if(layers) {
             var recordType = this.recordType, fields = recordType.prototype.fields;
             var i, lenI, j, lenJ, layer, values, field, v;
-            for (i = 0, lenI = layers.length; i < lenI; i++) {
+            for(i = 0, lenI = layers.length; i < lenI; i++) {
                 layer = layers[i];
                 values = {};
-                for (j = 0, lenJ = fields.length; j < lenJ; j++){
+                for(j = 0, lenJ = fields.length; j < lenJ; j++){
                     field = fields.items[j];
                     v = layer[field.mapping || field.name] ||
                         field.defaultValue;
@@ -81,7 +80,6 @@
                 records[records.length] = new recordType(values, layer.id);
             }
         }
-
         return {
             records: records,
             totalRecords: this.totalRecords != null ? this.totalRecords : records.length

Added: sandbox/elemoine/playground/tests/data/LayerReader.html
===================================================================
--- sandbox/elemoine/playground/tests/data/LayerReader.html	                        (rev 0)
+++ sandbox/elemoine/playground/tests/data/LayerReader.html	2009-03-23 21:00:05 UTC (rev 252)
@@ -0,0 +1,63 @@
+<!DOCTYPE html>
+<html debug="true">
+  <head>
+    <script type="text/javascript" src="../../../../openlayers/lib/OpenLayers.js"></script>
+    <script type="text/javascript" src="../../../../ext/2.2.1/adapter/ext/ext-base.js"></script>
+    <script type="text/javascript" src="../../../../ext/2.2.1/ext-all-debug.js"></script>
+    <script type="text/javascript" src="../../lib/GeoExt.js"></script>
+
+    <script type="text/javascript">
+    function test_constructor(t) {
+        t.plan(4);
+
+        var reader, recordType;
+
+        reader = new GeoExt.data.LayerReader();
+        var record = new reader.recordType();
+        t.ok(record instanceof GeoExt.data.LayerRecord,
+             "ctor creates a LayerRecord type if none is provided");
+
+        recordType = [{name: "extra"}];
+        reader = new GeoExt.data.LayerReader(null, recordType);
+        t.eq(reader.recordType.prototype.fields.items[2].name, "extra",
+             "ctor creates a LayerRecord type with the correct field");
+
+        recordType = GeoExt.data.LayerRecord.create([{name: "extra"}]);
+        reader = new GeoExt.data.LayerReader(null, recordType);
+        t.ok(reader.recordType == recordType,
+             "ctor configures reader with passed LayerRecord type");
+
+        reader = new GeoExt.data.LayerReader({fields: [{name: "extra"}]});
+        t.eq(reader.recordType.prototype.fields.items[2].name, "extra",
+             "ctor creates a LayerRecord type with the correct field");
+    }
+
+    function test_readRecords(t) {
+        t.plan(5);
+
+        var reader, layers, data;
+
+        reader = new GeoExt.data.LayerReader(null, [{name: "extra"}]);
+        layers = [
+            new OpenLayers.Layer("layer1"),
+            new OpenLayers.Layer("layer2")
+        ];
+        layers[0].extra = "layer1extra";
+        layers[1].extra = "layer2extra";
+
+        data = reader.readRecords(layers);
+        t.eq(data.totalRecords, 2,
+             "readRecords returns expected number of records");
+        t.ok(data.records[0] instanceof GeoExt.data.LayerRecord,
+             "readRecords returns records of expected type");
+        t.ok(data.records[0].get("layer") == layers[0],
+             "readRecords returns records with expected \"layer\" field");
+        t.eq(data.records[0].get("title"), layers[0].name,
+             "readRecords returns records with expected \"title\" field");
+        t.eq(data.records[0].get("extra"), layers[0].extra,
+             "readRecords returns records with expected \"extra\" field");
+    }
+    </script>
+  <body>
+  </body>
+</html>

Modified: sandbox/elemoine/playground/tests/list-tests.html
===================================================================
--- sandbox/elemoine/playground/tests/list-tests.html	2009-03-23 19:08:00 UTC (rev 251)
+++ sandbox/elemoine/playground/tests/list-tests.html	2009-03-23 21:00:05 UTC (rev 252)
@@ -3,6 +3,7 @@
   <li>data/FeatureStore.html</li>
   <li>data/FeatureStoreMediator.html</li>
   <li>data/LayerRecord.html</li>
+  <li>data/LayerReader.html</li>
   <li>data/LayerStore.html</li>
   <li>data/LayerStoreMediator.html</li>
   <li>data/ProtocolProxy.html</li>



More information about the Commits mailing list