Traversal iterate() method
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/2d7c3632 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/2d7c3632 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/2d7c3632 Branch: refs/heads/TINKERPOP-1489 Commit: 2d7c36322b4b0063a8413644b8a71de6cfb1242c Parents: 62c5196 Author: Jorge Bay Gondra <jorgebaygon...@gmail.com> Authored: Mon Nov 27 12:22:08 2017 +0100 Committer: Jorge Bay Gondra <jorgebaygon...@gmail.com> Committed: Mon Jan 8 11:30:47 2018 +0100 ---------------------------------------------------------------------- gremlin-javascript/glv/TraversalSource.template | 12 +++++++++++ .../gremlin-javascript/lib/process/traversal.js | 12 +++++++++++ .../javascript/gremlin-javascript/package.json | 2 +- .../test/unit/traversal-test.js | 21 ++++++++++++++++++-- 4 files changed, 44 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2d7c3632/gremlin-javascript/glv/TraversalSource.template ---------------------------------------------------------------------- diff --git a/gremlin-javascript/glv/TraversalSource.template b/gremlin-javascript/glv/TraversalSource.template index f75765f..0d45e90 100644 --- a/gremlin-javascript/glv/TraversalSource.template +++ b/gremlin-javascript/glv/TraversalSource.template @@ -58,6 +58,18 @@ Traversal.prototype.toList = function () { }; /** + * Iterates all Traverser instances in the traversal. + * @returns {Promise} + */ +Traversal.prototype.iterate = function () { + return this._applyStrategies().then(() => { + let it; + while ((it = this._getNext()) && !it.done) { + } + }); +}; + +/** * Async iterator method implementation. * Returns a promise containing an iterator item. * @returns {Promise.<{value, done}>} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2d7c3632/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js index ebf8755..d887fe0 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/lib/process/traversal.js @@ -58,6 +58,18 @@ Traversal.prototype.toList = function () { }; /** + * Iterates all Traverser instances in the traversal. + * @returns {Promise} + */ +Traversal.prototype.iterate = function () { + return this._applyStrategies().then(() => { + let it; + while ((it = this._getNext()) && !it.done) { + } + }); +}; + +/** * Async iterator method implementation. * Returns a promise containing an iterator item. * @returns {Promise.<{value, done}>} http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2d7c3632/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json b/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json index aae9eb9..7c4a3d6 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json @@ -30,7 +30,7 @@ }, "scripts": { "test": "./node_modules/.bin/mocha test/unit test/integration -t 5000", - "features": "./node_modules/.bin/cucumber.js --require test/cucumber ../../../../../gremlin-test/features/", + "features": "./node_modules/.bin/cucumber.js --require test/cucumber ../../../../../gremlin-test/features/map/AddVertex.feature", "unit-test": "./node_modules/.bin/mocha test/unit" }, "engines": { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/2d7c3632/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js index 635c7e8..2be504b 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/unit/traversal-test.js @@ -32,7 +32,6 @@ const TraversalStrategies = require('../../lib/process/traversal-strategy').Trav describe('Traversal', function () { describe('#getByteCode()', function () { - it('should add steps for with a string parameter', function () { var g = new graph.Graph().traversal(); var bytecode = g.V().out('created').getBytecode(); @@ -61,7 +60,6 @@ describe('Traversal', function () { }); describe('#next()', function () { - it('should apply the strategies and return a Promise with the iterator item', function () { var strategyMock = { apply: function (traversal) { @@ -175,4 +173,23 @@ describe('Traversal', function () { }); }); }); + + describe('#iterate()', function () { + it('should apply the strategies and return a Promise', function () { + let applied = false; + const strategyMock = { + apply: function (traversal) { + applied = true; + traversal.traversers = [ new t.Traverser('a', 1), new t.Traverser('b', 1) ]; + return utils.resolvedPromise(); + } + }; + const strategies = new TraversalStrategies(); + strategies.addStrategy(strategyMock); + const traversal = new t.Traversal(null, strategies, null); + return traversal.iterate().then(() => { + assert.strictEqual(applied, true); + }); + }); + }); }); \ No newline at end of file