diff --git a/test/index.html b/test/index.html index b2254e67c..188b9084c 100644 --- a/test/index.html +++ b/test/index.html @@ -110,6 +110,7 @@ + diff --git a/test/spec/svg/gpx.js b/test/spec/svg/gpx.js new file mode 100644 index 000000000..e185f7f61 --- /dev/null +++ b/test/spec/svg/gpx.js @@ -0,0 +1,97 @@ +describe('iD.svgGpx', function () { + var context; + var surface; + var dispatch = d3.dispatch('change'); + var projection = d3.geoProjection(function(x, y) { return [x, -y]; }) + .translate([0, 0]) + .scale(iD.geoZoomToScale(17)) + .clipExtent([[0, 0], [Infinity, Infinity]]); + + beforeEach(function () { + context = iD.coreContext(); + d3.select(document.createElement('div')) + .attr('id', 'map') + .call(context.map().centerZoom([0, 0], 17)); + surface = context.surface(); + }); + + + it('creates layer-gpx', function () { + var render = iD.svgGpx(projection, context, dispatch); + surface.call(render); + + var layers = surface.selectAll('g.layer-gpx').nodes(); + expect(layers.length).to.eql(1); + expect(d3.select(layers[0]).classed('layer-gpx')).to.be.true; + }); + + it('draws geojson', function () { + var gj = {}; // add test fixture + var render = iD.svgGpx(projection, context, dispatch).geojson(gj); + surface.call(render); + + var elements = surface.selectAll('path.gpx').nodes(); + // expect(elements.length).to.eql(1); + // tests that the path has data + }); + + describe('#files', function() { + it('handles gpx files', function () { + var files = []; // add test fixture + var render = iD.svgGpx(projection, context, dispatch).files(files); + surface.call(render); + + var elements = surface.selectAll('path.gpx').nodes(); + // expect(elements.length).to.eql(1); + // tests that the path has data + }); + + it('handles geojson files', function () { + var files = []; // add test fixture + var render = iD.svgGpx(projection, context, dispatch).files(files); + surface.call(render); + + var elements = surface.selectAll('path.gpx').nodes(); + // expect(elements.length).to.eql(1); + // tests that the path has data + }); + + it('handles kml files', function () { + var files = []; // add test fixture + var render = iD.svgGpx(projection, context, dispatch).files(files); + surface.call(render); + + var elements = surface.selectAll('path.gpx').nodes(); + // expect(elements.length).to.eql(1); + // tests that the path has data + }); + }); + + + describe('#showLabels', function() { + it('shows labels by default', function () { + var gj = {}; // add test fixture + var render = iD.svgGpx(projection, context, dispatch).geojson(gj); + surface.call(render); + + var elements = surface.selectAll('text.gpxlabel').nodes(); + // expect(elements.length).to.eql(1); + // tests that the text has data + + var halo = surface.selectAll('text.gpxlabel-halo').nodes(); + // expect(halo.length).to.eql(1); + // tests that the text halo has data + }); + + + it('hides labels with showLabels(false)', function () { + var gj = {}; // add test fixture + var render = iD.svgGpx(projection, context, dispatch).geojson(gj).showLabels(false); + surface.call(render); + + expect(surface.selectAll('text.gpxlabel').empty()).to.be.ok; + expect(surface.selectAll('text.gpxlabel-halo').empty()).to.be.ok; + }); + }); + +});