ajax.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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 = {context: {CSRF_COOKIE_NAME: 'doesnt-matter'}};
  10. var service = getMisagoService('ajax');
  11. var ajax = service(container);
  12. assert.ok(ajax,
  13. "service factory has returned service instance.");
  14. });
  15. QUnit.test("ajax success", function(assert) {
  16. $.mockjax({
  17. url: '/working-url/',
  18. status: 200,
  19. responseText: {
  20. 'detail': 'ok'
  21. }
  22. });
  23. var container = { context: { CSRF_COOKIE_NAME: 'doesnt-matter' } };
  24. var service = getMisagoService('ajax');
  25. var ajax = service(container);
  26. var done = assert.async();
  27. ajax.ajax('GET', '/working-url/').then(function(data) {
  28. assert.equal(data.detail, 'ok', 'ajax succeeded on /working-url/');
  29. done();
  30. });
  31. });
  32. QUnit.test("ajax fail", function(assert) {
  33. $.mockjax({
  34. url: '/failing-url/',
  35. status: 400,
  36. responseText: {
  37. 'detail': 'fail'
  38. }
  39. });
  40. var container = { context: { CSRF_COOKIE_NAME: 'doesnt-matter' } };
  41. var service = getMisagoService('ajax');
  42. var ajax = service(container);
  43. var done = assert.async();
  44. ajax.ajax('GET', '/failing-url/').then(function() {
  45. assert.ok(false, 'ajax succeeded on /failing-url/');
  46. }, function(rejection) {
  47. assert.equal(rejection.detail, 'fail',
  48. 'ajax handled error from /failing-url/');
  49. done();
  50. });
  51. });
  52. QUnit.test("get", function(assert) {
  53. $.mockjax({
  54. url: '/test-url/',
  55. status: 200,
  56. responseText: {
  57. 'detail': 'backend'
  58. }
  59. });
  60. var container = {
  61. context: {
  62. CSRF_COOKIE_NAME: 'doesnt-matter',
  63. '/test-url/': {
  64. 'detail': 'preloaded'
  65. }
  66. }
  67. };
  68. var service = getMisagoService('ajax');
  69. var ajax = service(container);
  70. var done = assert.async();
  71. ajax.get('/test-url/').then(function(data) {
  72. assert.equal(data.detail, 'preloaded', 'get() read preloaded data');
  73. ajax.get('/test-url/').then(function(data) {
  74. assert.equal(data.detail, 'backend', 'get() read backend data');
  75. done();
  76. });
  77. });
  78. });
  79. }());