chai-geojson
This plugin extends existing chaijs APIs and introduces new ones for testing GeoJSON elegantly. It provides brief syntax for:
- type assertion
- geographic area and length assertion
Installation
npm install chai-geojson --save-dev
Usage
const chai = require('chai');
chai.use(require('chai-geojson'));
const expect = chai.expect;
const assert = chai.assert;
const should = chai.should();
API
See test cases for complete use examples.
Expect / Should
The a
assertion can be used to assert a GeoJSON object’s type and its geometry coordinates if there is any. Noted this doesn't recursively iterate each features in a FeatureCollection or assert the geometry in a Feature.
Supported types:
- FeatureCollection
- Feature
- Geometry
- Point
- MultiPoint
- LineString
- MultiLineString
- Polygon
- MultiPolygon
expect(geojson).to.be.a('FeatureCollection');
expect(geojson).to.be.a('Feature');
expect(geojson).not.to.be.a('Point');
geojson.should.be.a('FeatureCollection');
geojson.should.not.be.a('Feature');
Sets the geomLength
flag later used as a chain precursor to a value comparison for the geographic length.
expect(geojson).to.have.length.above(2);
-
.lengthOf(value[, precision])
-
@param {Number} value expected length value in meters
-
@param {Number} [precision=0] difference tolerance in percentage of the geographic length
Asserts that the length of LineString feature/geometry has the expected value.
expect(geojson).to.have.lengthOf(250, 0.01);
expect(geojson).not.to.have.lengthOf(250);
Sets the geomArea
flag later used as a chain precursor to a value comparison for the geographic area.
expect(geojson).to.have.area.below(2000);
-
.areaOf(value[, precision])
-
@param {Number} value expected area value in square meters
-
@param {Number} [precision=0] difference tolerance in percentage of the geographic area
Asserts that the area of polygon feature/geometry has the expected value.
expect(geojson).to.have.areaOf(250, 0.05);
-
.equal(value[, precision])
-
@param {Number} value expected value in meters for length or in square meters for square meters
-
@param {Number} [precision=0] difference tolerance in percentage of the expected value
The equal
assertion can be used to assert whether the length or area of a geojson feature/geometry is equal to the expected value.
expect(geojson).to.have.area.equal(500);
expect(geojson).to.have.length.equal(250, 0.05);
The above
assertion can be used to assert whether the length or area of a geojson feature/geometry is above the given value.
expect(geojson).to.have.area.above(500);
expect(geojson).to.have.length.above(250);
The above
assertion can be used to assert whether the length or area of a geojson feature/geometry is at least the given value.
expect(geojson).to.have.area.at.least(500);
expect(geojson).to.have.length.at.least(250);
The above
assertion can be used to assert whether the length or area of a geojson feature/geometry is at most the given value.
expect(geojson).to.have.area.at.most(500);
expect(geojson).to.have.length.at.most(250);
The above
assertion can be used to assert whether the length or area of a geojson feature/geometry is below the given value.
expect(geojson).to.have.area.below(500);
expect(geojson).to.have.length.below(250);
The within
assertion can be used to assert whether the length or area of a geojson feature/geometry is within the given range.
expect(geojson).to.have.area.within(500, 800);
expect(geojson).to.have.length.within(250, 300);
Assert
Same as .a(type)
in expect / should style.
assert.typeOf(geojson, 'Feature');
Same as .not.a(type)
in expect / should style.
assert.notTypeOf(geojson, 'Feature');
Lincense
MIT