rpc-test.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import Ember from 'ember';
  2. import { default as rpc, buildUrl, ajax } from '../../../utils/rpc';
  3. import { module, test } from 'qunit';
  4. module('RPC', {
  5. afterEach: function() {
  6. Ember.$.mockjax.clear();
  7. }
  8. });
  9. test('buildUrl builds valid urls', function(assert) {
  10. assert.expect(3);
  11. assert.equal(buildUrl('some/procedure', {
  12. API_HOST: '',
  13. API_NAMESPACE: 'api/v2',
  14. API_ADD_TRAILING_SLASHES: true
  15. }), '/api/v2/some/procedure/');
  16. assert.equal(buildUrl('some/procedure', {
  17. API_HOST: '',
  18. API_NAMESPACE: 'api/v2',
  19. API_ADD_TRAILING_SLASHES: false
  20. }), '/api/v2/some/procedure');
  21. assert.equal(buildUrl('some/procedure', {
  22. API_HOST: 'https://api.testsite.com',
  23. API_NAMESPACE: 'api/v2',
  24. API_ADD_TRAILING_SLASHES: false
  25. }), 'https://api.testsite.com/api/v2/some/procedure');
  26. });
  27. var conf = {
  28. API_HOST: '',
  29. API_NAMESPACE: 'api',
  30. API_ADD_TRAILING_SLASHES: true
  31. };
  32. test('successfull rpc call passes', function(assert) {
  33. assert.expect(1);
  34. var done = assert.async();
  35. Ember.$.mockjax({
  36. url: "/api/some-rpc/",
  37. status: 200,
  38. responseText: {
  39. 'detail': 'it works'
  40. }
  41. });
  42. rpc('some-rpc', {}, conf).then(function(data) {
  43. assert.equal(data.detail, 'it works');
  44. }, function() {
  45. assert.fail("rpc call should pass");
  46. }).finally(function() {
  47. done();
  48. });
  49. });
  50. test('invalid rpc call fails', function(assert) {
  51. assert.expect(1);
  52. var done = assert.async();
  53. Ember.$.mockjax({
  54. url: "/api/some-rpc/",
  55. status: 400,
  56. responseText: {
  57. 'detail': 'nope'
  58. }
  59. });
  60. rpc('some-rpc', {}, conf).then(function() {
  61. assert.fail("rpc call should fail");
  62. }, function(jqXHR) {
  63. assert.equal(jqXHR.responseJSON.detail, 'nope');
  64. }).finally(function() {
  65. done();
  66. });
  67. });