query.update.transform.js 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. var assert = require('assert');
  2. var _ = require('@sailshq/lodash');
  3. var Waterline = require('../../../lib/waterline');
  4. describe('Collection Query ::', function() {
  5. describe('.update()', 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. update: function(con, query, cb) {
  27. assert(query.criteria.where.login);
  28. return cb(undefined);
  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.update({ where: { name: 'foo' }}, { name: 'foo' }, done);
  41. });
  42. });
  43. it('should transform values before sending to adapter', function(done) {
  44. var waterline = new Waterline();
  45. waterline.registerModel(Waterline.Model.extend(_.extend({}, modelDef)));
  46. // Fixture Adapter Def
  47. var adapterDef = {
  48. update: function(con, query, cb) {
  49. assert(query.valuesToSet.login);
  50. return cb(undefined);
  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.update({ where: { name: 'foo' }}, { name: 'foo' }, done);
  63. });
  64. });
  65. it('should transform values after receiving from adapter', function(done) {
  66. var waterline = new Waterline();
  67. waterline.registerModel(Waterline.Model.extend(_.extend({}, modelDef)));
  68. // Fixture Adapter Def
  69. var adapterDef = {
  70. update: function(con, query, cb) {
  71. assert(query.valuesToSet.login);
  72. query.valuesToSet.id = 1;
  73. return cb(undefined, [query.valuesToSet]);
  74. }
  75. };
  76. var connections = {
  77. 'foo': {
  78. adapter: 'foobar'
  79. }
  80. };
  81. waterline.initialize({ adapters: { foobar: adapterDef }, datastores: connections }, function(err, orm) {
  82. if (err) {
  83. return done(err);
  84. }
  85. orm.collections.user.update({}, { name: 'foo' }, function(err, values) {
  86. if (err) {
  87. return done(err);
  88. }
  89. assert(values[0].name);
  90. assert(!values[0].login);
  91. return done();
  92. }, { fetch: true });
  93. });
  94. });
  95. });
  96. });
  97. });