diff --git a/packages/index-model/lib/model.js b/packages/index-model/lib/model.js index a94b46a4798..9765acdc506 100644 --- a/packages/index-model/lib/model.js +++ b/packages/index-model/lib/model.js @@ -47,7 +47,7 @@ var IndexModel = Model.extend({ ttl: { deps: ['extra'], fn: function() { - return !!this.extra.expireAfterSeconds; + return this.extra.expireAfterSeconds > -1; } }, hashed: { diff --git a/packages/index-model/test/index.test.js b/packages/index-model/test/index.test.js index 45ac2b7d361..b8d71711318 100644 --- a/packages/index-model/test/index.test.js +++ b/packages/index-model/test/index.test.js @@ -1,4 +1,5 @@ var assert = require('assert'); +var IndexModel = require('../'); var IndexCollection = require('../').Collection; var _ = require('lodash'); @@ -140,6 +141,32 @@ describe('mongodb-index-model', function() { assert.ok('columnstore' in index); assert.ok('text' in index); }); + + it('calculates correct ttl', function() { + assert.equal( + (new IndexModel(new IndexModel().parse({expireAfterSeconds: 20}))).ttl, + true, + 'its ttl when expireAfterSeconds is 20' + ); + + assert.equal( + (new IndexModel(new IndexModel().parse({expireAfterSeconds: 0}))).ttl, + true, + 'its ttl when expireAfterSeconds is 0' + ); + + assert.equal( + (new IndexModel(new IndexModel().parse({expireAfterSeconds: undefined}))).ttl, + false, + 'its not ttl when expireAfterSeconds is undefined' + ); + + assert.equal( + (new IndexModel(new IndexModel().parse({}))).ttl, + false, + 'its just not ttl' + ); + }); }); context('IndexField', function() {