promise.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import Promise from '../src/promise';
  2. describe('Vue.promise ' + (window.Promise !== undefined ? '(native)' : '(polyfill)'), function () {
  3. it('then fulfill', function (done) {
  4. Promise.resolve(1).then(function (value) {
  5. expect(value).toBe(1);
  6. done();
  7. });
  8. });
  9. it('then reject', function (done) {
  10. Promise.reject(1).then(undefined, function (value) {
  11. expect(value).toBe(1);
  12. done();
  13. });
  14. });
  15. it('catch', function (done) {
  16. Promise.reject(1).catch(function (value) {
  17. expect(value).toBe(1);
  18. done();
  19. });
  20. });
  21. it('finally fulfill', function (done) {
  22. Promise.resolve(1).finally(function (arg) {
  23. expect(arg).toBe(undefined);
  24. }).then(function (arg) {
  25. expect(arg).toBe(1);
  26. done();
  27. });
  28. });
  29. it('finally reject', function (done) {
  30. Promise.reject(1).finally(function (arg) {
  31. expect(arg).toBe(undefined);
  32. }).catch(function (arg) {
  33. expect(arg).toBe(1);
  34. done();
  35. });
  36. });
  37. it('all', function (done) {
  38. Promise.all([
  39. Promise.resolve(1),
  40. Promise.resolve(2)
  41. ]).then(function (values) {
  42. expect(values[0]).toBe(1);
  43. expect(values[1]).toBe(2);
  44. done();
  45. });
  46. });
  47. it('duplicate', function (done) {
  48. Promise.all([
  49. Promise.resolve(1).then(function (value) {
  50. expect(value).toBe(1);
  51. }),
  52. Promise.resolve(2).then(function (value) {
  53. expect(value).toBe(2);
  54. })
  55. ]).then(done);
  56. });
  57. it('context', function (done) {
  58. var context = {foo: 'bar'};
  59. Promise.resolve().bind(context).then(function () {
  60. expect(this).toBe(context);
  61. done();
  62. });
  63. });
  64. it('context chain fulfill', function (done) {
  65. var context = {foo: 'bar'};
  66. Promise.resolve().bind(context).catch(undefined).finally(function () {
  67. expect(this).toBe(context);
  68. }).then(function () {
  69. expect(this).toBe(context);
  70. done();
  71. });
  72. });
  73. it('context chain reject', function (done) {
  74. var context = {foo: 'bar'};
  75. Promise.reject().bind(context).catch(function () {
  76. expect(this).toBe(context);
  77. return Promise.reject();
  78. }).finally(function () {
  79. expect(this).toBe(context);
  80. }).catch(function () {
  81. expect(this).toBe(context);
  82. done();
  83. });
  84. });
  85. });