register-button.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import assert from 'assert';
  2. import React from 'react'; // jshint ignore:line
  3. import ReactDOM from 'react-dom'; // jshint ignore:line
  4. import RegisterButton from 'misago/components/register-button'; // jshint ignore:line
  5. import misago from 'misago/index';
  6. import captcha from 'misago/services/captcha';
  7. import modal from 'misago/services/modal';
  8. import snackbar from 'misago/services/snackbar';
  9. import zxcvbn from 'misago/services/zxcvbn';
  10. let snackbarStore = null;
  11. describe("RegisterButton", function() {
  12. beforeEach(function() {
  13. snackbarStore = window.snackbarStoreMock();
  14. snackbar.init(snackbarStore);
  15. window.initModal(modal);
  16. window.contextClear(misago);
  17. /* jshint ignore:start */
  18. ReactDOM.render(
  19. <RegisterButton />,
  20. document.getElementById('test-mount')
  21. );
  22. /* jshint ignore:end */
  23. });
  24. afterEach(function() {
  25. delete window.zxcvbn;
  26. window.emptyTestContainers();
  27. });
  28. it('renders', function() {
  29. let element = $('#test-mount button');
  30. assert.ok(element.length, "component rendered");
  31. });
  32. it('alerts about closed registration', function(done) {
  33. window.misago._context = {
  34. SETTINGS: {
  35. account_activation: 'closed'
  36. }
  37. };
  38. snackbarStore.callback(function(message) {
  39. assert.deepEqual(message, {
  40. message: "New registrations are currently disabled.",
  41. type: 'info'
  42. }, "valid alert is raised");
  43. done();
  44. });
  45. window.simulateClick('#test-mount button');
  46. });
  47. it('opens registration modal', function(done) {
  48. window.misago._context = {
  49. SETTINGS: {
  50. captcha_type: 'no',
  51. account_activation: 'none'
  52. }
  53. };
  54. captcha.init(misago, {}, {}, {});
  55. zxcvbn.init({
  56. include: function(file) {
  57. assert.equal(file, 'misago/js/zxcvbn.js', "zxcvbn.js is requested");
  58. window.setTimeout(function() {
  59. window.zxcvbn = function() {
  60. return 0;
  61. };
  62. }, 200);
  63. }
  64. });
  65. window.simulateClick('#test-mount button');
  66. window.onElement('#modal-mount .modal-register', function() {
  67. let element = $('#modal-mount .modal-register');
  68. assert.ok(element.length, "registration modal was opened");
  69. done();
  70. });
  71. });
  72. });