edit-signature-test.js 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. import Ember from 'ember';
  2. import { module, test } from 'qunit';
  3. import startApp from '../helpers/start-app';
  4. import getToastMessage from '../helpers/toast-message';
  5. import createUser from '../helpers/create-user';
  6. var application, container, auth;
  7. module('Acceptance: Edit Signature', {
  8. beforeEach: function() {
  9. application = startApp();
  10. container = application.__container__;
  11. auth = container.lookup('service:auth');
  12. },
  13. afterEach: function() {
  14. Ember.run(application, 'destroy');
  15. Ember.$.mockjax.clear();
  16. }
  17. });
  18. test('/options/edit-signature form can be accessed', function(assert) {
  19. var user = createUser();
  20. auth.setProperties({
  21. 'isAuthenticated': true,
  22. 'user': user
  23. });
  24. Ember.$.mockjax({
  25. url: '/api/users/' + user.id + '/signature/',
  26. status: 200,
  27. responseText: {
  28. 'limit': 200,
  29. 'signature': null
  30. }
  31. });
  32. assert.expect(2);
  33. visit('/options/edit-signature/');
  34. andThen(function() {
  35. assert.equal(currentPath(), 'options.signature');
  36. assert.ok(find('#editor-input'));
  37. });
  38. });
  39. test('/options/edit-signature form access is denied', function(assert) {
  40. var user = createUser();
  41. auth.setProperties({
  42. 'isAuthenticated': true,
  43. 'user': user
  44. });
  45. Ember.$.mockjax({
  46. url: '/api/users/' + user.id + '/signature/',
  47. status: 403,
  48. responseText: {
  49. 'detail': 'Nope!',
  50. 'reason': '<p>For testing!</p>'
  51. }
  52. });
  53. assert.expect(3);
  54. visit('/options/edit-signature/');
  55. andThen(function() {
  56. assert.equal(currentPath(), 'options.signature');
  57. var errorLead = Ember.$.trim(find('.panel-error p.lead').text());
  58. assert.equal(errorLead, 'Nope!');
  59. var errorReason = Ember.$.trim(find('.panel-error p').last().text());
  60. assert.equal(errorReason, 'For testing!');
  61. });
  62. });
  63. test('/options/edit-signature form renders set signature', function(assert) {
  64. var user = createUser();
  65. auth.setProperties({
  66. 'isAuthenticated': true,
  67. 'user': user
  68. });
  69. Ember.$.mockjax({
  70. url: '/api/users/' + user.id + '/signature/',
  71. status: 200,
  72. responseText: {
  73. 'limit': 200,
  74. 'signature': {
  75. 'plain': 'Test signature.',
  76. 'html': '<p>Test signature.</p>'
  77. }
  78. }
  79. });
  80. assert.expect(2);
  81. visit('/options/edit-signature/');
  82. andThen(function() {
  83. assert.equal(currentPath(), 'options.signature');
  84. var preview = Ember.$.trim(find('.misago-markup p').text());
  85. assert.equal(preview, 'Test signature.');
  86. });
  87. });
  88. test('/options/edit-signature form submit changes signature', function(assert) {
  89. var user = createUser();
  90. auth.setProperties({
  91. 'isAuthenticated': true,
  92. 'user': user
  93. });
  94. Ember.$.mockjax({
  95. url: '/api/users/' + user.id + '/signature/',
  96. status: 200,
  97. type: 'GET',
  98. responseText: {
  99. 'limit': 200,
  100. 'signature': null
  101. }
  102. });
  103. Ember.$.mockjax({
  104. url: '/api/users/' + user.id + '/signature/',
  105. status: 200,
  106. type: 'POST',
  107. responseText: {
  108. 'limit': 200,
  109. 'signature': {
  110. 'plain': 'Test signature.',
  111. 'html': '<p>Test signature.</p>'
  112. }
  113. }
  114. });
  115. assert.expect(3);
  116. visit('/options/edit-signature/');
  117. click('.edit-signature-form .btn-primary');
  118. andThen(function() {
  119. assert.equal(currentPath(), 'options.signature');
  120. assert.equal(getToastMessage(), 'Your signature was updated.');
  121. var preview = Ember.$.trim(find('.misago-markup p').text());
  122. assert.equal(preview, 'Test signature.');
  123. });
  124. });
  125. test('/options/edit-signature form submit clears signature', function(assert) {
  126. var user = createUser();
  127. auth.setProperties({
  128. 'isAuthenticated': true,
  129. 'user': user
  130. });
  131. Ember.$.mockjax({
  132. url: '/api/users/' + user.id + '/signature/',
  133. status: 200,
  134. type: 'GET',
  135. responseText: {
  136. 'limit': 200,
  137. 'signature': {
  138. 'plain': 'Test signature.',
  139. 'html': '<p>Test signature.</p>'
  140. }
  141. }
  142. });
  143. Ember.$.mockjax({
  144. url: '/api/users/' + user.id + '/signature/',
  145. status: 200,
  146. type: 'POST',
  147. responseText: {
  148. 'limit': 200,
  149. 'signature': null
  150. }
  151. });
  152. assert.expect(3);
  153. visit('/options/edit-signature/');
  154. click('.edit-signature-form .btn-primary');
  155. andThen(function() {
  156. assert.equal(currentPath(), 'options.signature');
  157. assert.equal(getToastMessage(), 'Your signature was cleared.');
  158. assert.ok(Ember.$('.misago-markup').length === 0);
  159. });
  160. });
  161. test('/options/edit-signature form submit errors', function(assert) {
  162. var user = createUser();
  163. auth.setProperties({
  164. 'isAuthenticated': true,
  165. 'user': user
  166. });
  167. Ember.$.mockjax({
  168. url: '/api/users/' + user.id + '/signature/',
  169. status: 200,
  170. type: 'GET',
  171. responseText: {
  172. 'limit': 200,
  173. 'signature': null
  174. }
  175. });
  176. Ember.$.mockjax({
  177. url: '/api/users/' + user.id + '/signature/',
  178. status: 400,
  179. type: 'POST',
  180. responseText: {
  181. 'detail': 'Siggy is too long!'
  182. }
  183. });
  184. assert.expect(1);
  185. visit('/options/edit-signature/');
  186. click('.edit-signature-form .btn-primary');
  187. andThen(function() {
  188. assert.equal(getToastMessage(), 'Siggy is too long!');
  189. });
  190. });