Use cucumber-js
Project: http://git-wip-us.apache.org/repos/asf/tinkerpop/repo Commit: http://git-wip-us.apache.org/repos/asf/tinkerpop/commit/a0275d05 Tree: http://git-wip-us.apache.org/repos/asf/tinkerpop/tree/a0275d05 Diff: http://git-wip-us.apache.org/repos/asf/tinkerpop/diff/a0275d05 Branch: refs/heads/TINKERPOP-1489 Commit: a0275d05c993db81b7e6cbc7ccbbcd2c06332f36 Parents: 033c8af Author: Jorge Bay Gondra <jorgebaygon...@gmail.com> Authored: Wed Nov 22 17:44:18 2017 +0100 Committer: Jorge Bay Gondra <jorgebaygon...@gmail.com> Committed: Wed Jan 17 16:16:20 2018 +0100 ---------------------------------------------------------------------- gremlin-javascript/glv/PackageJson.template | 4 +- gremlin-javascript/pom.xml | 16 ++++- .../javascript/gremlin-javascript/package.json | 4 +- .../test/cucumber/feature-steps.js | 69 ++++++++++++++++++++ .../gremlin-javascript/test/cucumber/world.js | 33 ++++++++++ 5 files changed, 121 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a0275d05/gremlin-javascript/glv/PackageJson.template ---------------------------------------------------------------------- diff --git a/gremlin-javascript/glv/PackageJson.template b/gremlin-javascript/glv/PackageJson.template index f61913f..3ff17af 100644 --- a/gremlin-javascript/glv/PackageJson.template +++ b/gremlin-javascript/glv/PackageJson.template @@ -36,7 +36,8 @@ "ws": "^3.0.0" }, "devDependencies": { - "mocha": ">= 1.14.0" + "mocha": "~4.0.1", + "cucumber": "~3.1.0" }, "repository": { "type": "git", @@ -47,6 +48,7 @@ }, "scripts": { "test": "./node_modules/.bin/mocha test --recursive -t 5000", + "features": "./node_modules/.bin/cucumber.js ../../../../../gremlin-test/features/", "unit-test": "./node_modules/.bin/mocha test/unit" }, "engines": { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a0275d05/gremlin-javascript/pom.xml ---------------------------------------------------------------------- diff --git a/gremlin-javascript/pom.xml b/gremlin-javascript/pom.xml index c08b59b..871fd7a 100644 --- a/gremlin-javascript/pom.xml +++ b/gremlin-javascript/pom.xml @@ -269,31 +269,41 @@ server.stop().join() <executions> <execution> <id>install node and npm</id> + <phase>generate-test-resources</phase> <goals> <goal>install-node-and-npm</goal> </goals> - <phase>generate-test-resources</phase> </execution> <execution> <id>npm install</id> + <phase>generate-test-resources</phase> <goals> <goal>npm</goal> </goals> - <phase>generate-test-resources</phase> <configuration> <arguments>install</arguments> </configuration> </execution> <execution> <id>npm test</id> + <phase>integration-test</phase> <goals> <goal>npm</goal> </goals> - <phase>integration-test</phase> <configuration> <arguments>test</arguments> </configuration> </execution> + <execution> + <id>npm test gherkin features</id> + <phase>integration-test</phase> + <goals> + <goal>npm</goal> + </goals> + <configuration> + <arguments>run-script features</arguments> + </configuration> + </execution> </executions> <configuration> <skip>${skipIntegrationTests}</skip> http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a0275d05/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 1228dd4..dfbaff2 100644 --- a/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/package.json @@ -17,7 +17,8 @@ "ws": "^3.0.0" }, "devDependencies": { - "mocha": ">= 1.14.0" + "mocha": "~4.0.1", + "cucumber": "~3.1.0" }, "repository": { "type": "git", @@ -28,6 +29,7 @@ }, "scripts": { "test": "./node_modules/.bin/mocha test --recursive -t 5000", + "features": "./node_modules/.bin/cucumber.js ../../../../../gremlin-test/features/", "unit-test": "./node_modules/.bin/mocha test/unit" }, "engines": { http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a0275d05/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js new file mode 100644 index 0000000..10680b7 --- /dev/null +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/feature-steps.js @@ -0,0 +1,69 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * @author Jorge Bay Gondra + */ +'use strict'; + +const {defineSupportCode} = require('cucumber'); +const vm = require('vm'); + + +defineSupportCode(function({Given, When, Then}) { + Given(/^the (.+) graph$/, function (graphName) { + //TODO: Set context g + }); + // Given('the graph initializer of'); + Given('an unsupported test', () => {}); + + Given('the traversal of', function (traversalText) { + //TODO: make traversal + }); + + Given(/^$/, function (paramName, stringValue) { + //TODO: Add parameter + }); + + When('iterated to list', function () { + //TODO + }); + + When('iterated next', function () { + //TODO + }); + + Then(/^the result should be (\w+)$/, function (characterizedAs, resultTable) { + //TODO + //console.log('--resultTable', resultTable.rows()); + if (typeof resultTable === 'function'){ + return resultTable(); + } + }); + + Then(/^the graph should return (\d+) for count of (.+)$/, function (stringCount, traversalString) { + + }); + + Then(/^the result should have a count of (\d+)$/, function (stringCount) { + + }); + + Then('nothing should happen because', () => {}); +}); \ No newline at end of file http://git-wip-us.apache.org/repos/asf/tinkerpop/blob/a0275d05/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/world.js ---------------------------------------------------------------------- diff --git a/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/world.js b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/world.js new file mode 100644 index 0000000..f1cd7a6 --- /dev/null +++ b/gremlin-javascript/src/main/javascript/gremlin-javascript/test/cucumber/world.js @@ -0,0 +1,33 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +/** + * @author Jorge Bay Gondra + */ +'use strict'; + +const {defineSupportCode} = require('cucumber'); + +defineSupportCode(function ({setWorldConstructor}) { + function TinkerPopWorld(){ + this.g = null; + this.traversal = null; + } + setWorldConstructor(TinkerPopWorld); +}); \ No newline at end of file