ajax.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. (function () {
  2. 'use strict';
  3. QUnit.module("Ajax", {
  4. afterEach: function() {
  5. $.mockjax.clear();
  6. }
  7. });
  8. QUnit.test("service factory", function(assert) {
  9. var container = {
  10. context: {
  11. CSRF_COOKIE_NAME: 'doesnt-matter'
  12. }
  13. };
  14. var service = getMisagoService('ajax');
  15. var ajax = service(container);
  16. assert.ok(ajax,
  17. "service factory has returned service instance.");
  18. });
  19. QUnit.test("ajax success", function(assert) {
  20. $.mockjax({
  21. url: '/working-url/',
  22. status: 200,
  23. responseText: {
  24. 'detail': 'ok'
  25. }
  26. });
  27. var container = {
  28. context: {
  29. CSRF_COOKIE_NAME: 'doesnt-matter'
  30. }
  31. };
  32. var service = getMisagoService('ajax');
  33. var ajax = service(container);
  34. var done = assert.async();
  35. ajax.ajax('GET', '/working-url/').then(function(data) {
  36. assert.equal(data.detail, 'ok', 'ajax succeeded on /working-url/');
  37. done();
  38. });
  39. });
  40. QUnit.test("ajax fail", function(assert) {
  41. $.mockjax({
  42. url: '/failing-url/',
  43. status: 400,
  44. responseText: {
  45. 'detail': 'fail'
  46. }
  47. });
  48. var container = {
  49. context: {
  50. CSRF_COOKIE_NAME: 'doesnt-matter'
  51. }
  52. };
  53. var service = getMisagoService('ajax');
  54. var ajax = service(container);
  55. var done = assert.async();
  56. ajax.ajax('GET', '/failing-url/').then(function() {
  57. assert.ok(false, 'ajax succeeded on /failing-url/');
  58. }, function(rejection) {
  59. assert.equal(rejection.detail, 'fail',
  60. 'ajax handled error from /failing-url/');
  61. done();
  62. });
  63. });
  64. QUnit.test("get", function(assert) {
  65. $.mockjax({
  66. url: '/test-url/',
  67. status: 200,
  68. responseText: {
  69. 'detail': 'backend'
  70. }
  71. });
  72. var container = {
  73. context: {
  74. CSRF_COOKIE_NAME: 'doesnt-matter',
  75. '/test-url/': {
  76. 'detail': 'preloaded'
  77. }
  78. }
  79. };
  80. var service = getMisagoService('ajax');
  81. var ajax = service(container);
  82. var done = assert.async();
  83. ajax.get('/test-url/').then(function(data) {
  84. assert.equal(data.detail, 'preloaded', 'get() read preloaded data');
  85. ajax.get('/test-url/').then(function(data) {
  86. assert.equal(data.detail, 'backend', 'get() read backend data');
  87. done();
  88. });
  89. });
  90. });
  91. QUnit.test("post, patch, put, delete", function(assert) {
  92. $.mockjax({
  93. type: 'POST',
  94. url: '/test-url/',
  95. status: 200,
  96. responseText: {
  97. 'detail': 'posted'
  98. }
  99. });
  100. $.mockjax({
  101. type: 'PATCH',
  102. url: '/test-url/',
  103. status: 200,
  104. responseText: {
  105. 'detail': 'patched'
  106. }
  107. });
  108. $.mockjax({
  109. type: 'PUT',
  110. url: '/test-url/',
  111. status: 200,
  112. responseText: {
  113. 'detail': 'put'
  114. }
  115. });
  116. $.mockjax({
  117. type: 'DELETE',
  118. url: '/test-url/',
  119. status: 200,
  120. responseText: {
  121. 'detail': 'deleted'
  122. }
  123. });
  124. var container = {
  125. context: {
  126. CSRF_COOKIE_NAME: 'doesnt-matter',
  127. '/test-url/': {
  128. 'detail': 'preloaded'
  129. }
  130. }
  131. };
  132. var service = getMisagoService('ajax');
  133. var ajax = service(container);
  134. var donePost = assert.async();
  135. var donePatch = assert.async();
  136. var donePut = assert.async();
  137. var doneDelete = assert.async();
  138. ajax.post('/test-url/', {}).then(function(data) {
  139. assert.equal(data.detail, 'posted', 'post() call succeeded');
  140. donePost();
  141. });
  142. ajax.patch('/test-url/', {}).then(function(data) {
  143. assert.equal(data.detail, 'patched', 'patch() call succeeded');
  144. donePatch();
  145. });
  146. ajax.put('/test-url/', {}).then(function(data) {
  147. assert.equal(data.detail, 'put', 'put() call succeeded');
  148. donePut();
  149. });
  150. ajax.delete('/test-url/').then(function(data) {
  151. assert.equal(data.detail, 'deleted', 'delete() call succeeded');
  152. doneDelete();
  153. });
  154. });
  155. }());