query.destroy.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. var assert = require('assert');
  2. var Waterline = require('../../../lib/waterline');
  3. describe('Collection Query ::', function() {
  4. describe('.destroy()', function() {
  5. describe('with Auto PK', 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. name: {
  18. type: 'string',
  19. defaultsTo: 'Foo Bar'
  20. }
  21. }
  22. });
  23. waterline.registerModel(Model);
  24. // Fixture Adapter Def
  25. var adapterDef = { destroy: function(con, query, cb) { return cb(); }};
  26. var connections = {
  27. 'foo': {
  28. adapter: 'foobar'
  29. }
  30. };
  31. waterline.initialize({ adapters: { foobar: adapterDef }, datastores: connections }, function(err, orm) {
  32. if (err) {
  33. return done(err);
  34. }
  35. query = orm.collections.user;
  36. return done();
  37. });
  38. });
  39. it('should not return an error', function(done) {
  40. query.destroy({}, function(err) {
  41. if (err) {
  42. return done(err);
  43. }
  44. return done();
  45. });
  46. });
  47. it('should allow a query to be built using deferreds', function(done) {
  48. query.destroy()
  49. .where({})
  50. .exec(function(err) {
  51. if (err) {
  52. return done(err);
  53. }
  54. return done();
  55. });
  56. });
  57. });
  58. describe('with custom columnName set', function() {
  59. var query;
  60. before(function(done) {
  61. var waterline = new Waterline();
  62. // Extend for testing purposes
  63. var Model = Waterline.Model.extend({
  64. identity: 'user',
  65. datastore: 'foo',
  66. primaryKey: 'myPk',
  67. attributes: {
  68. name: {
  69. type: 'string',
  70. defaultsTo: 'Foo Bar'
  71. },
  72. myPk: {
  73. type: 'number',
  74. columnName: 'pkColumn'
  75. }
  76. }
  77. });
  78. waterline.registerModel(Model);
  79. // Fixture Adapter Def
  80. var adapterDef = { destroy: function(con, query, cb) { return cb(null, query.criteria); }};
  81. var connections = {
  82. 'foo': {
  83. adapter: 'foobar'
  84. }
  85. };
  86. waterline.initialize({ adapters: { foobar: adapterDef }, datastores: connections }, function(err, orm) {
  87. if (err) {
  88. return done(err);
  89. }
  90. query = orm.collections.user;
  91. return done();
  92. });
  93. });
  94. it('should use the custom primary key when a single value is passed in', function(done) {
  95. query.destroy(1, function(err) {
  96. if (err) {
  97. return done(err);
  98. }
  99. return done();
  100. });
  101. });
  102. });
  103. });
  104. });