query.avg.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. var assert = require('assert');
  2. var Waterline = require('../../../lib/waterline');
  3. describe('Collection Query ::', function() {
  4. describe('.avg()', function() {
  5. var query;
  6. before(function(done) {
  7. // Extend for testing purposes
  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. // Fixture Adapter Def
  26. var adapterDef = {
  27. avg: function(con, query, cb) {
  28. return cb(null, query);
  29. }
  30. };
  31. waterline.registerModel(Model);
  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 average set', function(done) {
  46. query.avg('age').exec(function(err, query) {
  47. if(err) {
  48. return done(err);
  49. }
  50. assert.equal(query.numericAttrName, 'age');
  51. return done();
  52. });
  53. });
  54. it('should NOT accept an array', function(done) {
  55. query.avg(['age', 'percent']).exec(function(err) {
  56. assert(err);
  57. return done();
  58. });
  59. });
  60. });
  61. });