user-menu.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import assert from 'assert';
  2. import React from 'react'; // jshint ignore:line
  3. import ReactDOM from 'react-dom'; // jshint ignore:line
  4. import { UserMenu, UserNav, CompactUserNav } from 'misago/components/user-menu/user-nav'; // jshint ignore:line
  5. import misago from 'misago/index';
  6. import dropdown from 'misago/services/mobile-navbar-dropdown';
  7. import store from 'misago/services/store';
  8. describe("UserMenu", function() {
  9. beforeEach(function() {
  10. window.contextClear(misago);
  11. window.contextAuthenticated(misago);
  12. window.initEmptyStore(store);
  13. window.initDropdown(dropdown);
  14. /* jshint ignore:start */
  15. ReactDOM.render(
  16. <UserMenu user={misago._context.user} />,
  17. document.getElementById('test-mount')
  18. );
  19. /* jshint ignore:end */
  20. });
  21. afterEach(function() {
  22. window.emptyTestContainers();
  23. });
  24. it('renders', function() {
  25. let element = $('#test-mount .dropdown-menu');
  26. assert.ok(element.length, "component renders");
  27. });
  28. });
  29. describe("UserNav", function() {
  30. beforeEach(function() {
  31. window.contextClear(misago);
  32. window.contextAuthenticated(misago);
  33. window.initEmptyStore(store);
  34. window.initDropdown(dropdown);
  35. /* jshint ignore:start */
  36. ReactDOM.render(
  37. <UserNav user={misago._context.user} />,
  38. document.getElementById('test-mount')
  39. );
  40. /* jshint ignore:end */
  41. });
  42. afterEach(function() {
  43. window.emptyTestContainers();
  44. });
  45. it('renders', function() {
  46. let element = $('#test-mount .user-dropdown');
  47. assert.ok(element.length, "component renders");
  48. });
  49. });
  50. describe("CompactUserNav", function() {
  51. beforeEach(function() {
  52. window.contextClear(misago);
  53. window.contextAuthenticated(misago);
  54. store.constructor();
  55. store.addReducer('auth', function(state={}, action=null){
  56. if (action) {
  57. return state;
  58. }
  59. }, {
  60. 'isAuthenticated': misago.get('isAuthenticated'),
  61. 'isAnonymous': !misago.get('isAuthenticated'),
  62. 'user': misago.get('user')
  63. });
  64. store.init();
  65. window.initDropdown(dropdown);
  66. /* jshint ignore:start */
  67. ReactDOM.render(
  68. <CompactUserNav user={misago._context.user} />,
  69. document.getElementById('test-mount')
  70. );
  71. /* jshint ignore:end */
  72. });
  73. afterEach(function() {
  74. window.emptyTestContainers();
  75. });
  76. it('renders', function() {
  77. let element = $('#test-mount img.user-avatar');
  78. assert.ok(element.length, "component renders");
  79. });
  80. it('opens dropdown on click', function() {
  81. window.simulateClick('#test-mount button');
  82. let element = $('#dropdown-mount>.user-dropdown');
  83. assert.ok(element.length, "component opened dropdown");
  84. });
  85. });