const testTileJSONArray = function (url) { describe(url + ' is array of TileJSONs', function () { it('is json', function (done) { supertest(app) .get(url) .expect(200) .expect('Content-Type', /application\/json/, done); }); it('is non-empty array', function (done) { supertest(app) .get(url) .expect(function (res) { expect(res.body).to.be.a('array'); expect(res.body.length).to.be.greaterThan(0); }) .end(done); }); }); }; const testTileJSON = function (url) { describe(url + ' is TileJSON', function () { it('is json', function (done) { supertest(app) .get(url) .expect(200) .expect('Content-Type', /application\/json/, done); }); it('has valid tiles', function (done) { supertest(app) .get(url) .expect(function (res) { expect(res.body.tiles.length).to.be.greaterThan(0); }) .end(done); }); }); }; describe('Metadata', function () { describe('/health', function () { it('returns 200', function (done) { supertest(app).get('/health').expect(200, done); }); }); testTileJSONArray('/index.json'); testTileJSONArray('/rendered.json'); testTileJSONArray('/data.json'); describe('/styles.json is valid array', function () { it('is json', function (done) { supertest(app) .get('/styles.json') .expect(200) .expect('Content-Type', /application\/json/, done); }); it('contains valid item', function (done) { supertest(app) .get('/styles.json') .expect(function (res) { expect(res.body).to.be.a('array'); expect(res.body.length).to.be.greaterThan(0); expect(res.body[0].version).to.be.equal(8); expect(res.body[0].id).to.be.a('string'); expect(res.body[0].name).to.be.a('string'); }) .end(done); }); }); testTileJSON('/styles/test-style.json'); testTileJSON('/data/openmaptiles.json'); });