@mapbox/cardboard-list
Version:
Adds feature listing support to cardboard
67 lines (52 loc) • 1.93 kB
JavaScript
var dynamodbTest = require('dynamodb-test');
var tape = require('tape');
var utils = require('@mapbox/cardboard/lib/utils');
var listTableSpec = require('../lib/list-table.json');
var listTable = dynamodbTest(tape, 'cardboard-list', listTableSpec);
var mainToListRecord = require('../lib/main-to-list-record');
var CardboardList = require('..');
var listConfig = {
listTable: listTable.tableName,
endpoint: 'http://localhost:4567',
region: 'test'
};
var nullIslandFeature = {
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [0, 0]
},
properties: {}
}
var nullIslandMainRecord = utils.toDatabaseRecord(nullIslandFeature, 'default');
var nullIslandListRecord = mainToListRecord(nullIslandMainRecord);
listTable.start();
listTable.test('list', [nullIslandListRecord], function(t) {
var cardboardList = CardboardList(listConfig);
cardboardList.listFeatureIds('default', function(err, data) {
t.ifError(err, 'no error');
t.equal(data.length, 1, 'got right number of features');
t.end();
});
});
var states = require('./data/states.json').features.map(function(state) {
state.id = state.properties.name.toLowerCase().replace(/ /g, '-');
return mainToListRecord(utils.toDatabaseRecord(state, 'default'));
});
listTable.test('list stream', states, function(t) {
var cardboardList = CardboardList(listConfig);
var streamed = [];
cardboardList.listFeatureIdsStream('default')
.on('data', function(feature) {
streamed.push(feature);
})
.on('error', function(err) {
t.ifError(err, 'stream error encountered');
})
.on('end', function() {
t.equal(streamed.length, states.length, 'got all the features');
t.ok(streamed.indexOf('new-hampshire') !== -1, 'found new hampshire');
t.end();
});
});
listTable.close();