diff --git a/src/ol/feature.js b/src/ol/feature.js index f12deb2366..162a5d7a3a 100644 --- a/src/ol/feature.js +++ b/src/ol/feature.js @@ -28,17 +28,15 @@ goog.inherits(ol.Feature, ol.Object); * @return {Object} Attributes object. */ ol.Feature.prototype.getAttributes = function() { - // TODO: see https://github.com/openlayers/ol3/pull/217 - // var keys = this.getKeys(), - // len = keys.length, - // attributes = {}, - // i, key - // for (var i = 0; i < len; ++ i) { - // key = keys[i]; - // attributes[key] = this.get(key); - // } - // return attributes; - return this; + var keys = this.getKeys(), + len = keys.length, + attributes = {}, + i, key; + for (i = 0; i < len; ++ i) { + key = keys[i]; + attributes[key] = this.get(key); + } + return attributes; }; diff --git a/test/spec/ol/feature.test.js b/test/spec/ol/feature.test.js index 20cf3579ce..3431f46241 100644 --- a/test/spec/ol/feature.test.js +++ b/test/spec/ol/feature.test.js @@ -52,6 +52,29 @@ describe('ol.Feature', function() { }); + describe('#getAttributes()', function() { + + it('returns an object with all attributes', function() { + var point = new ol.geom.Point([15, 30]); + var feature = new ol.Feature({ + foo: 'bar', + ten: 10, + loc: point + }); + + var attributes = feature.getAttributes(); + + var keys = goog.object.getKeys(attributes); + expect(keys.sort()).toEqual(['foo', 'loc', 'ten']); + + expect(attributes.foo).toBe('bar'); + expect(attributes.loc).toBe(point); + expect(attributes.ten).toBe(10); + }); + + }); + + describe('#getGeometry()', function() { var point = new ol.geom.Point([15, 30]); @@ -157,5 +180,6 @@ describe('ol.Feature', function() { }); +goog.require('goog.object'); goog.require('ol.Feature'); goog.require('ol.geom.Point');