test-retry-wrap.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. var common = require('../common');
  2. var assert = common.assert;
  3. var fake = common.fake.create();
  4. var retry = require(common.dir.lib + '/retry');
  5. function getLib() {
  6. return {
  7. fn1: function() {},
  8. fn2: function() {},
  9. fn3: function() {}
  10. };
  11. }
  12. (function wrapAll() {
  13. var lib = getLib();
  14. retry.wrap(lib);
  15. assert.equal(lib.fn1.name, 'retryWrapper');
  16. assert.equal(lib.fn2.name, 'retryWrapper');
  17. assert.equal(lib.fn3.name, 'retryWrapper');
  18. }());
  19. (function wrapAllPassOptions() {
  20. var lib = getLib();
  21. retry.wrap(lib, {retries: 2});
  22. assert.equal(lib.fn1.name, 'retryWrapper');
  23. assert.equal(lib.fn2.name, 'retryWrapper');
  24. assert.equal(lib.fn3.name, 'retryWrapper');
  25. assert.equal(lib.fn1.options.retries, 2);
  26. assert.equal(lib.fn2.options.retries, 2);
  27. assert.equal(lib.fn3.options.retries, 2);
  28. }());
  29. (function wrapDefined() {
  30. var lib = getLib();
  31. retry.wrap(lib, ['fn2', 'fn3']);
  32. assert.notEqual(lib.fn1.name, 'retryWrapper');
  33. assert.equal(lib.fn2.name, 'retryWrapper');
  34. assert.equal(lib.fn3.name, 'retryWrapper');
  35. }());
  36. (function wrapDefinedAndPassOptions() {
  37. var lib = getLib();
  38. retry.wrap(lib, {retries: 2}, ['fn2', 'fn3']);
  39. assert.notEqual(lib.fn1.name, 'retryWrapper');
  40. assert.equal(lib.fn2.name, 'retryWrapper');
  41. assert.equal(lib.fn3.name, 'retryWrapper');
  42. assert.equal(lib.fn2.options.retries, 2);
  43. assert.equal(lib.fn3.options.retries, 2);
  44. }());
  45. (function runWrappedWithoutError() {
  46. var callbackCalled;
  47. var lib = {method: function(a, b, callback) {
  48. assert.equal(a, 1);
  49. assert.equal(b, 2);
  50. assert.equal(typeof callback, 'function');
  51. callback();
  52. }};
  53. retry.wrap(lib);
  54. lib.method(1, 2, function() {
  55. callbackCalled = true;
  56. });
  57. assert.ok(callbackCalled);
  58. }());
  59. (function runWrappedWithError() {
  60. var callbackCalled;
  61. var lib = {method: function(callback) {
  62. callback(new Error('Some error'));
  63. }};
  64. retry.wrap(lib, {retries: 1});
  65. lib.method(function(err) {
  66. callbackCalled = true;
  67. assert.ok(err instanceof Error);
  68. });
  69. assert.ok(!callbackCalled);
  70. }());