Browse Source

add ciao dummy data script and README on how to use it

pull/468/head
Peter Johnson 9 years ago
parent
commit
63558eb15d
  1. 38
      README.md
  2. 58
      test/ciao_test_data.js

38
README.md

@ -34,3 +34,41 @@ The API recognizes the following properties under the top-level `api` key in you
Please fork and pull request against upstream master on a feature branch. Pretty please; provide unit tests and script Please fork and pull request against upstream master on a feature branch. Pretty please; provide unit tests and script
fixtures in the `test` directory. fixtures in the `test` directory.
## Unit tests
You can run the unit test suite using the command:
```bash
$ npm test
```
## HTTP tests
We have another set of tests which are used to test the HTTP API layer, these tests send expected HTTP requests and then
assert that the responses coming back have the correct geoJSON format and HTTP status codes.
You can run the HTTP test suite using the command:
```bash
$ npm run ciao
```
Note: some of the tests in this suite fail when no data is present in the index, there is a small set of test documents
provided in `./test/ciao_test_data` which can be inserted in order to avoid these errors.
To inject dummy data in to your local index:
```bash
$ node test/ciao_test_data.js
```
You can confirm the dummy data has been inserted with the command:
```bash
$ curl localhost:9200/pelias/_count?pretty
{
"count" : 9,
...
}
```

58
test/ciao_test_data.js

@ -0,0 +1,58 @@
/**
Test data required by the ciao test suite.
Some tests will fail when run against an empty index, you can use this script
to insert some dummy data in to your index before running the tests.
note: as this is dummy data, care should be taken in order to make sure these
documents don't end up in your production index; for that reason the HTTP port
has been hard-coded as port:9200.
**/
// we use the default config to avoid making calls to
// a cluster running on a non-standard port.
var client = require('elasticsearch').Client(),
async = require('async'),
actions = [];
// add one record per 'type' in order to cause the _default_ mapping
// to be copied when the new type is created.
var types = ['venue','address','county','region','county','country','admin0','admin1','admin2'],
sources = ['test'],
layers = ['geonames'];
// iterate over all types/sources/layers and index a test document
types.forEach( function( type, i1 ){
sources.forEach( function( source, i2 ){
layers.forEach( function( layer, i3 ){
actions.push( function( done ){
client.index({
index: 'pelias',
type: type,
id: [i1,i2,i3].join(':'),
body: {
source: source,
layer: layer,
name: { default: 'test' },
phrase: { default: 'test' },
parent: {
country_a: ['USA']
}
}
});
done();
});
});
});
});
// call refresh so the index merges the changes
actions.push( function( done ){
client.indices.refresh( { index: 'pelias' }, done);
});
// perform all actions in series
async.series( actions, function( err, resp ){
console.log('test data inported');
});
Loading…
Cancel
Save