query.create.transform.js 2.3 KB

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