query.findOne.transform.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. var assert = require('assert');
  2. var _ = require('@sailshq/lodash');
  3. var Waterline = require('../../../lib/waterline');
  4. describe('Collection Query ::', function() {
  5. describe('.findOne()', function() {
  6. describe('with transformed values', function() {
  7. var modelDef = {
  8. identity: 'user',
  9. datastore: 'foo',
  10. primaryKey: 'id',
  11. attributes: {
  12. id: {
  13. type: 'number'
  14. },
  15. name: {
  16. type: 'string',
  17. columnName: 'login'
  18. }
  19. }
  20. };
  21. it('should transform criteria before sending to adapter', function(done) {
  22. var waterline = new Waterline();
  23. waterline.registerModel(Waterline.Model.extend(_.extend({}, modelDef)));
  24. // Fixture Adapter Def
  25. var adapterDef = {
  26. find: function(con, query, cb) {
  27. assert(query.criteria.where.login);
  28. return cb(null, [{id: 1, criteria: query.criteria}]);
  29. }
  30. };
  31. var connections = {
  32. 'foo': {
  33. adapter: 'foobar'
  34. }
  35. };
  36. waterline.initialize({ adapters: { foobar: adapterDef }, datastores: connections }, function(err, orm) {
  37. if (err) {
  38. return done(err);
  39. }
  40. orm.collections.user.findOne({ where: { name: 'foo' }}, done);
  41. });
  42. });
  43. it('should transform values after receiving from adapter', function(done) {
  44. var waterline = new Waterline();
  45. waterline.registerModel(Waterline.Model.extend(_.extend({}, modelDef)));
  46. // Fixture Adapter Def
  47. var adapterDef = {
  48. find: function(con, query, cb) {
  49. assert(query.criteria.where.login);
  50. return cb(null, [{ id: 1, login: 'foo' }]);
  51. }
  52. };
  53. var connections = {
  54. 'foo': {
  55. adapter: 'foobar'
  56. }
  57. };
  58. waterline.initialize({ adapters: { foobar: adapterDef }, datastores: connections }, function(err, orm) {
  59. if (err) {
  60. return done(err);
  61. }
  62. orm.collections.user.findOne({ name: 'foo' }, function(err, values) {
  63. if (err) {
  64. return done(err);
  65. }
  66. assert(values.name);
  67. assert(!values.login);
  68. return done();
  69. });
  70. });
  71. });
  72. });
  73. });
  74. });