diff options
| author | Trygve Laugstøl <trygvis@inamo.no> | 2012-07-13 23:32:20 +0200 | 
|---|---|---|
| committer | Trygve Laugstøl <trygvis@inamo.no> | 2012-07-13 23:32:20 +0200 | 
| commit | 63214f5e9e69c640701e6d92dc4a9bee9ec91cba (patch) | |
| tree | 4a430481e5c2c3019fcdc8896554da23173e735a | |
| parent | 4f4ef10a6bbbcc68ab89d81291faddf57b650928 (diff) | |
| download | collection_json.js-63214f5e9e69c640701e6d92dc4a9bee9ec91cba.tar.gz collection_json.js-63214f5e9e69c640701e6d92dc4a9bee9ec91cba.tar.bz2 collection_json.js-63214f5e9e69c640701e6d92dc4a9bee9ec91cba.tar.xz collection_json.js-63214f5e9e69c640701e6d92dc4a9bee9ec91cba.zip | |
o Adding toObject on each item.
| -rw-r--r-- | index.js | 26 | ||||
| -rw-r--r-- | test/collection_json.test.js | 55 | 
2 files changed, 49 insertions, 32 deletions
| @@ -12,6 +12,12 @@ function fromObject(root) {    c.items = _.isArray(c.items) ? c.items : [];    _.each(c.items, function(item) {      item.links = _.isArray(item.links) ? item.links : []; +    item.toObject = function() { +      return _.reduce(item.data, function(map, field) { +        map[field.name] = field.value; +        return map; +      }, {}); +    }    });    c.links = _.isArray(c.links) ? c.links : []; @@ -21,19 +27,13 @@ function fromObject(root) {      query.data = _.isArray(query.data) ? query.data : [];    }); -  c.templates = _.isArray(c.templates) ? c.templates : []; +  c.template = _.isObject(c.template) ? c.template : undefined; +  // c.templates = _.isArray(c.templates) ? c.templates : [];    // TODO: make un-enumerable -  root.mapItemData = function(f) { +  root.mapItems = function(f) {      return _.map(this.collection.items, function(item) { -//      console.log("item", item); -      var map = _.reduce(item.data, function(map, field) { -//        console.log("field", field); -        map[field.name] = field.value; -        return map; -      }, {}); -//      console.log("map", map); -      return f(map); +      return f(item.toObject());      });    };    root.findLinkByRel = function(rel) { @@ -41,6 +41,12 @@ function fromObject(root) {        return rel === link.rel;      });    } +  root.isCollection = function() { +    return typeof this.collection == 'object'; +  } +  root.isTemplate = function() { +    return typeof this.template == 'object'; +  }    return root;  } diff --git a/test/collection_json.test.js b/test/collection_json.test.js index 24f69e4..0cd003e 100644 --- a/test/collection_json.test.js +++ b/test/collection_json.test.js @@ -3,37 +3,48 @@ var assert = require('assert')  function identity(x) { return x; } -var collection1 = {collection: { -  items: [ -    { href: "http://example.com/1", links: [], -      data: [ -        { prompt: "prompt1", name: "field-1", value: "1", baz: "woot" }, -        { prompt: "prompt2", name: "field-2", value: "2", foz: "asdf" }, -      ] -    }, -    { href: "http://example.com/2", links: [], -      data: [ -        { prompt: "prompt1", name: "field-1", value: "3" }, -        { prompt: "prompt2", name: "field-2", value: "4" }, -      ] -    } -  ] -}}; +function collection1() { +  return collection_json.fromObject({collection: { +    items: [ +      { href: "http://example.com/1", links: [], +        data: [ +          { prompt: "prompt1", name: "field-1", value: "1", baz: "woot" }, +          { prompt: "prompt2", name: "field-2", value: "2", foz: "asdf" }, +        ] +      }, +      { href: "http://example.com/2", links: [], +        data: [ +          { prompt: "prompt1", name: "field-1", value: "3" }, +          { prompt: "prompt2", name: "field-2", value: "4" }, +        ] +      } +    ] +  }}); +}  describe('fromObject', function() {    it('Has basic fields', function() {      var collection = collection_json.fromObject({}).collection; -    assert.deepEqual([], collection.items); -    assert.deepEqual([], collection.links); -    assert.deepEqual([], collection.queries); -    assert.deepEqual([], collection.templates); +    assert.deepEqual(collection.items, []); +    assert.deepEqual(collection.links, []); +    assert.deepEqual(collection.queries, []); +    assert.equal(collection.template, undefined);    });    it('Can map data field in items', function() { -    assert.deepEqual(collection_json.fromObject(collection1).mapItemData(identity),  +    assert.deepEqual(collection1().mapItems(identity),         [{"field-1": "1", "field-2": "2"}        ,{"field-1": "3", "field-2": "4"}]);      function f(map) { return parseInt(map["field-1"]) + parseInt(map["field-2"]); } -    assert.deepEqual(collection_json.fromObject(collection1).mapItemData(f), [3, 7]); +    assert.deepEqual(collection1().mapItems(f), [3, 7]); +  }); +}); + +describe('collection object', function() { +  it('Can create objects from items', function() { +    assert.deepEqual(collection1().collection.items[0].toObject(), { +      "field-1": "1", +      "field-2": "2" +    });    });  }); | 
