query.count.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. var assert = require('assert');
  2. var Waterline = require('../../../lib/waterline');
  3. describe('Collection Query ::', function() {
  4. describe('.count()', function() {
  5. var orm;
  6. before(function (done) {
  7. Waterline.start({
  8. adapters: {
  9. 'sails-foobar': {
  10. identity: 'sails-foobar',
  11. count: function(datastoreName, s3q, cb) {
  12. return cb(undefined, 1);
  13. }
  14. }
  15. },
  16. datastores: {
  17. default: {
  18. adapter: 'sails-foobar'
  19. }
  20. },
  21. models: {
  22. user: {
  23. identity: 'user',
  24. datastore: 'default',
  25. primaryKey: 'id',
  26. attributes: {
  27. id: { type: 'number' },
  28. name: { type: 'string' }
  29. }
  30. }
  31. }
  32. }, function (err, _orm) {
  33. if (err) { return done(err); }
  34. orm = _orm;
  35. return done();
  36. });
  37. });//</before>
  38. after(function(done) {
  39. // Note that we don't bother attempting to stop the orm
  40. // if it doesn't even exist (i.e. because `.start()` failed).
  41. if (!orm) { return done(); }
  42. Waterline.stop(orm, done);
  43. });
  44. it('should return a number representing the number of things', function(done) {
  45. Waterline.getModel('user', orm)
  46. .count({ name: 'foo' }, function(err, count) {
  47. if(err) { return done(err); }
  48. try {
  49. assert(typeof count === 'number');
  50. assert(count > 0);
  51. } catch (e) { return done(e); }
  52. return done();
  53. });
  54. });//</it>
  55. it('should allow a query to be built using deferreds', function(done) {
  56. Waterline.getModel('user', orm)
  57. .count()
  58. .exec(function(err, result) {
  59. if(err) { return done(err); }
  60. try {
  61. assert(result);
  62. } catch (e) { return done(e); }
  63. return done();
  64. });
  65. });//</it>
  66. });//</describe>
  67. });//</describe>