rpc-test.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. import Ember from 'ember';
  2. import {buildUrl, ajax, rpc} 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.equal(buildUrl('some/procedure', {
  11. API_HOST: '',
  12. API_NAMESPACE: 'api/v2',
  13. API_ADD_TRAILING_SLASHES: true
  14. }), '/api/v2/some/procedure/');
  15. assert.equal(buildUrl('some/procedure', {
  16. API_HOST: '',
  17. API_NAMESPACE: 'api/v2',
  18. API_ADD_TRAILING_SLASHES: false
  19. }), '/api/v2/some/procedure');
  20. assert.equal(buildUrl('some/procedure', {
  21. API_HOST: 'https://api.testsite.com',
  22. API_NAMESPACE: 'api/v2',
  23. API_ADD_TRAILING_SLASHES: false
  24. }), 'https://api.testsite.com/api/v2/some/procedure');
  25. });
  26. var conf = {
  27. API_HOST: '',
  28. API_NAMESPACE: 'api',
  29. API_ADD_TRAILING_SLASHES: true
  30. };
  31. test('successfull rpc call passes', function(assert) {
  32. var done = assert.async();
  33. Ember.$.mockjax({
  34. url: "/api/some-rpc/",
  35. status: 200,
  36. responseText: {
  37. 'detail': 'it works'
  38. }
  39. });
  40. rpc('some-rpc', {}, conf).then(function(json) {
  41. assert.equal(json.detail, 'it works');
  42. }, function() {
  43. assert.fail("rpc call should pass");
  44. }).finally(function() {
  45. done();
  46. });
  47. });
  48. test('invalid rpc call fails', function(assert) {
  49. var done = assert.async();
  50. Ember.$.mockjax({
  51. url: "/api/some-rpc/",
  52. status: 400,
  53. responseText: {
  54. 'detail': 'nope'
  55. }
  56. });
  57. rpc('some-rpc', {}, conf).then(function() {
  58. assert.fail("rpc call should fail");
  59. }, function(json) {
  60. assert.equal(json.detail, 'nope');
  61. }).finally(function() {
  62. done();
  63. });
  64. });