query.sum.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. var assert = require('assert');
  2. var _ = require('@sailshq/lodash');
  3. var Waterline = require('../../../lib/waterline');
  4. describe('Collection Query ::', function() {
  5. describe('.sum()', function() {
  6. var query;
  7. before(function(done) {
  8. var waterline = new Waterline();
  9. var Model = Waterline.Model.extend({
  10. identity: 'user',
  11. datastore: 'foo',
  12. primaryKey: 'id',
  13. attributes: {
  14. id: {
  15. type: 'number'
  16. },
  17. age: {
  18. type: 'number'
  19. },
  20. percent: {
  21. type: 'number'
  22. }
  23. }
  24. });
  25. waterline.registerModel(Model);
  26. // Fixture Adapter Def
  27. var adapterDef = {
  28. sum: function(con, query, cb) {
  29. return cb(undefined, [query]);
  30. }
  31. };
  32. var connections = {
  33. 'foo': {
  34. adapter: 'foobar'
  35. }
  36. };
  37. waterline.initialize({ adapters: { foobar: adapterDef }, datastores: connections }, function(err, orm) {
  38. if (err) {
  39. return done(err);
  40. }
  41. query = orm.collections.user;
  42. return done();
  43. });
  44. });
  45. it('should return criteria with sum set', function(done) {
  46. query.sum('age')
  47. .exec(function(err, obj) {
  48. if (err) {
  49. return done(err);
  50. }
  51. assert.equal(_.first(obj).method, 'sum');
  52. assert.equal(_.first(obj).numericAttrName, 'age');
  53. return done();
  54. });
  55. });
  56. it('should NOT accept an array', function(done) {
  57. query.sum(['age', 'percent'])
  58. .exec(function(err) {
  59. assert(err);
  60. return done();
  61. });
  62. });
  63. });
  64. });