| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- "use strict";
- var assert = require("assert"),
- DocumentSource = require("../../../../lib/pipeline/documentSources/DocumentSource"),
- GeoNearDocumentSource = require("../../../../lib/pipeline/documentSources/GeoNearDocumentSource"),
- CursorDocumentSource = require("../../../../lib/pipeline/documentSources/CursorDocumentSource"),
- Cursor = require("../../../../lib/Cursor"),
- FieldPath = require("../../../../lib/pipeline/FieldPath");
- var createGeoNear = function(ctx) {
- var ds = new GeoNearDocumentSource(ctx);
- return ds;
- };
- module.exports = {
- "GeoNearDocumentSource": {
- "constructor()":{
- "should not throw when constructing without args":function() {
- assert.doesNotThrow(function(){
- var gnds = createGeoNear();
- });
- },
- "check defaults":function() {
- var gnds = createGeoNear();
- assert.equal(gnds.coordsIsArray, false);
- assert.equal(gnds.limit, 100);
- assert.equal(gnds.maxDistance, -1.0);
- assert.equal(gnds.spherical, false);
- assert.equal(gnds.distanceMultiplier, 1.0);
- assert.equal(gnds.uniqueDocs, true);
- }
- },
- "#getSourceName()":{
- "should return the correct source name; $geoNear": function() {
- var gnds = createGeoNear();
- assert.strictEqual(gnds.getSourceName(), "$geoNear");
- }
- },
- "#getNext()":{
- "callback is required":function() {
- var gnds = createGeoNear();
- assert.throws(gnds.getNext.bind(gnds));
- }
- },
- "#setSource()":{
- "check that setting source of GeoNearDocumentSource throws error":function() {
- var cwc = new CursorDocumentSource.CursorWithContext();
- var input = [{}];
- cwc._cursor = new Cursor( input );
- var cds = new CursorDocumentSource(cwc);
- var gnds = createGeoNear();
- assert.throws(function(){
- gnds.setSource(cds);
- });
- }
- },
- "#createFromJson()":{
- "method creates GeoNearDocumentSource with appropriate options":function() {
- var opts = {
- // example options
- near:[40.724, -73.997],
- limit:25,
- query:{type:'public'},
- distanceField: "dist.calculated",
- maxDistance:0.8,
- uniqueDocs:true,
- includeLocs:"dist.location"
- },
- gnds = GeoNearDocumentSource.createFromJson(opts);
- assert.equal(gnds.source, null);
- assert.equal(gnds.limit, opts.limit);
- assert.deepEqual(gnds.query, opts.query);
- assert.ok(gnds.distanceField instanceof FieldPath);
- assert.equal(gnds.maxDistance, opts.maxDistance);
- assert.equal(gnds.uniqueDocs, opts.uniqueDocs);
- assert.ok(gnds.includeLocs instanceof FieldPath);
- }
- }
- }
- };
- if (!module.parent)(new(require("mocha"))()).ui("exports").reporter("spec").addFile(__filename).grep(process.env.MOCHA_GREP || '').run(process.exit);
|