From 5b020035d60d87d5c82b5927355198f24b727590 Mon Sep 17 00:00:00 2001 From: Julien Fontanet Date: Sat, 18 Apr 2015 21:34:36 +0200 Subject: [PATCH] Collection is iterable. --- packages/xo-collection/src/collection.js | 8 ++++++++ packages/xo-collection/src/collection.spec.js | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/packages/xo-collection/src/collection.js b/packages/xo-collection/src/collection.js index 9fdf2f81e..19eda32d4 100644 --- a/packages/xo-collection/src/collection.js +++ b/packages/xo-collection/src/collection.js @@ -240,4 +240,12 @@ export default class Collection extends EventEmitter { get all () { return this._items } + + * [Symbol.iterator] () { + const {_items: items} = this + + for (let key in items) { + yield items[key] + } + } } diff --git a/packages/xo-collection/src/collection.spec.js b/packages/xo-collection/src/collection.spec.js index d5d9b7207..03f36d153 100644 --- a/packages/xo-collection/src/collection.spec.js +++ b/packages/xo-collection/src/collection.spec.js @@ -36,6 +36,13 @@ describe('Collection', function () { return waitTicks() }) + it('is iterable', function () { + const iterator = this.col[Symbol.iterator]() + + expect(iterator.next()).to.eql({done: false, value: 0}) + expect(iterator.next()).to.eql({done: true, value: undefined}) + }) + describe('#add()', function () { it('adds item to the collection', function () { const spy = sinon.spy()