From f03066e580aa12284455670030f6d6b193bfa85a Mon Sep 17 00:00:00 2001 From: Quincy Morgan Date: Thu, 21 Mar 2019 11:44:30 -0400 Subject: [PATCH] Add tests for private_data validation --- test/index.html | 1 + test/spec/validations/private_data.js | 72 +++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 test/spec/validations/private_data.js diff --git a/test/index.html b/test/index.html index 5bd094eca..aeb58f00c 100644 --- a/test/index.html +++ b/test/index.html @@ -153,6 +153,7 @@ + diff --git a/test/spec/validations/private_data.js b/test/spec/validations/private_data.js new file mode 100644 index 000000000..065575788 --- /dev/null +++ b/test/spec/validations/private_data.js @@ -0,0 +1,72 @@ +describe('iD.validations.private_data', function () { + var context; + + beforeEach(function() { + context = iD.coreContext(); + }); + + function createWay(tags) { + var n1 = iD.osmNode({id: 'n-1', loc: [4,4]}); + var n2 = iD.osmNode({id: 'n-2', loc: [4,5]}); + var n3 = iD.osmNode({id: 'n-3', loc: [5,5]}); + var w = iD.osmWay({id: 'w-1', nodes: ['n-1', 'n-2', 'n-3'], tags: tags}); + + context.perform( + iD.actionAddEntity(n1), + iD.actionAddEntity(n2), + iD.actionAddEntity(n3), + iD.actionAddEntity(w) + ); + } + + function validate() { + var validator = iD.validationPrivateData(); + var changes = context.history().changes(); + var entities = changes.modified.concat(changes.created); + var issues = []; + entities.forEach(function(entity) { + issues = issues.concat(validator(entity, context)); + }); + return issues; + } + + it('has no errors on init', function() { + var issues = validate(); + expect(issues).to.have.lengthOf(0); + }); + + it('ignores way with no tags', function() { + createWay({}); + var issues = validate(); + expect(issues).to.have.lengthOf(0); + }); + + it('ignores way with phone tag', function() { + createWay({ phone: '123-456-7890' }); + var issues = validate(); + expect(issues).to.have.lengthOf(0); + }); + + it('ignores generic building with phone tag', function() { + createWay({ building: 'yes', phone: '123-456-7890' }); + var issues = validate(); + expect(issues).to.have.lengthOf(0); + }); + + it('ignores guest house with phone tag', function() { + createWay({ building: 'house', phone: '123-456-7890', tourism: 'guest_house' }); + var issues = validate(); + expect(issues).to.have.lengthOf(0); + }); + + it('flags house with phone tag', function() { + createWay({ building: 'house', phone: '123-456-7890' }); + var issues = validate(); + expect(issues).to.have.lengthOf(1); + var issue = issues[0]; + expect(issue.type).to.eql('private_data'); + expect(issue.entities).to.have.lengthOf(1); + expect(issue.entities[0].id).to.eql('w-1'); + }); + +});