More cucumber tests for the nearest plugin to restore coverage metric

This commit is contained in:
Lev Dragunov 2019-07-31 13:20:59 +03:00
parent 81fb2cc9da
commit f2946163d6
2 changed files with 58 additions and 0 deletions

View File

@ -59,6 +59,31 @@ Feature: Locating Nearest node on a Way - pick closest way
| 3 | u | | 3 | u |
| 4 | w | | 4 | w |
Scenario: Nearest - inside a oneway triangle
Given the node map
"""
c
y z
0 1
2 3 4
a x u w b
"""
And the ways
| nodes | oneway |
| ab | yes |
| bc | yes |
| ca | yes |
When I request nearest I should get
| in | out |
| 0 | y |
| 1 | z |
| 2 | x |
| 3 | u |
| 4 | w |
Scenario: Nearest - High lat/lon Scenario: Nearest - High lat/lon
Given the node locations Given the node locations
| node | lat | lon | | node | lat | lon |
@ -78,3 +103,30 @@ Feature: Locating Nearest node on a Way - pick closest way
| x | a | | x | a |
| y | b | | y | b |
| z | c | | z | c |
Scenario: Nearest - data version
Given the node map
"""
c
y z
0 1
2 3 4
a x u w b
"""
And the ways
| nodes |
| ab |
| bc |
| ca |
And the extract extra arguments "--data_version cucumber_data_version"
When I request nearest I should get
| in | out | data_version |
| 0 | y | cucumber_data_version |
| 1 | z | cucumber_data_version |
| 2 | x | cucumber_data_version |
| 3 | u | cucumber_data_version |
| 4 | w | cucumber_data_version |

View File

@ -5,6 +5,7 @@ module.exports = function () {
this.reprocessAndLoadData((e) => { this.reprocessAndLoadData((e) => {
if (e) return callback(e); if (e) return callback(e);
var testRow = (row, ri, cb) => { var testRow = (row, ri, cb) => {
var inNode = this.findNodeByName(row.in); var inNode = this.findNodeByName(row.in);
if (!inNode) throw new Error(util.format('*** unknown in-node "%s"', row.in)); if (!inNode) throw new Error(util.format('*** unknown in-node "%s"', row.in));
@ -14,6 +15,7 @@ module.exports = function () {
this.requestNearest(inNode, this.queryParams, (err, response) => { this.requestNearest(inNode, this.queryParams, (err, response) => {
if (err) return cb(err); if (err) return cb(err);
var coord; var coord;
var headers = new Set(table.raw()[0]);
if (response.statusCode === 200 && response.body.length) { if (response.statusCode === 200 && response.body.length) {
var json = JSON.parse(response.body); var json = JSON.parse(response.body);
@ -22,6 +24,10 @@ module.exports = function () {
var got = { in: row.in, out: row.out }; var got = { in: row.in, out: row.out };
if (headers.has('data_version')) {
got.data_version = json.data_version || '';
}
Object.keys(row).forEach((key) => { Object.keys(row).forEach((key) => {
if (key === 'out') { if (key === 'out') {
if (this.FuzzyMatch.matchLocation(coord, outNode)) { if (this.FuzzyMatch.matchLocation(coord, outNode)) {