avatar-controls.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import assert from 'assert';
  2. import React from 'react'; // jshint ignore:line
  3. import AvatarControls from 'misago/components/profile/moderation/avatar-controls'; // jshint ignore:line
  4. import snackbar from 'misago/services/snackbar';
  5. import * as testUtils from 'misago/utils/test-utils';
  6. let snackbarStore = null;
  7. let profileMock = {
  8. is_followed: false,
  9. followers: 0,
  10. api_url: {
  11. moderate_avatar: '/test-api/users/123/moderate_avatar/'
  12. }
  13. };
  14. describe("User Profile Moderation Avatar Controls", function() {
  15. beforeEach(function() {
  16. snackbarStore = testUtils.snackbarStoreMock();
  17. snackbar.init(snackbarStore);
  18. });
  19. afterEach(function() {
  20. testUtils.unmountComponents();
  21. testUtils.snackbarClear(snackbar);
  22. $.mockjax.clear();
  23. });
  24. it("renders", function(done) {
  25. $.mockjax({
  26. url: profileMock.api_url.moderate_avatar,
  27. status: 200,
  28. responseText: {
  29. is_avatar_locked: false,
  30. avatar_lock_user_message: null,
  31. avatar_lock_staff_message: null
  32. }
  33. });
  34. /* jshint ignore:start */
  35. testUtils.render(<AvatarControls profile={profileMock} />);
  36. /* jshint ignore:end */
  37. testUtils.onElement('#test-mount form', function(element) {
  38. assert.ok(element.length, "component loads");
  39. done();
  40. });
  41. });
  42. it("handles backend error", function(done) {
  43. $.mockjax({
  44. url: profileMock.api_url.moderate_avatar,
  45. status: 500
  46. });
  47. /* jshint ignore:start */
  48. testUtils.render(<AvatarControls profile={profileMock} />);
  49. /* jshint ignore:end */
  50. testUtils.onElement('#test-mount .modal-message', function(element) {
  51. assert.equal(element.find('p.lead').text(), "Unknown error has occured.",
  52. "error message renders");
  53. done();
  54. });
  55. });
  56. it("handles load rejection", function(done) {
  57. $.mockjax({
  58. url: profileMock.api_url.moderate_avatar,
  59. status: 403,
  60. responseText: {
  61. detail: "You can't mod user avatar!"
  62. }
  63. });
  64. /* jshint ignore:start */
  65. testUtils.render(<AvatarControls profile={profileMock} />);
  66. /* jshint ignore:end */
  67. testUtils.onElement('#test-mount .modal-message', function(element) {
  68. assert.equal(element.find('p.lead').text(), "You can't mod user avatar!",
  69. "error message renders");
  70. done();
  71. });
  72. });
  73. });