header.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import assert from 'assert';
  2. import React from 'react'; // jshint ignore:line
  3. import Header from 'misago/components/threads/header'; // jshint ignore:line
  4. import * as testUtils from 'misago/utils/test-utils';
  5. let route = null;
  6. describe("Threads List Header", function() {
  7. beforeEach(function() {
  8. route = {
  9. lists: [],
  10. list: {
  11. name: "All",
  12. nameLong: "All threads",
  13. path: ''
  14. },
  15. category: {
  16. name: "Root",
  17. parent: null
  18. }
  19. };
  20. });
  21. afterEach(function() {
  22. testUtils.unmountComponents();
  23. });
  24. it("renders title", function() {
  25. /* jshint ignore:start */
  26. testUtils.render(<Header route={route} title="Lorem Ipsum" />);
  27. /* jshint ignore:end */
  28. let element = $('#test-mount .page-header h1');
  29. assert.ok(element.length, "component renders");
  30. assert.equal(element.text(), "Lorem Ipsum", "heading has valid text");
  31. });
  32. it("renders without nav", function() {
  33. /* jshint ignore:start */
  34. testUtils.render(<Header route={route} title="Test" />);
  35. /* jshint ignore:end */
  36. let element = $('#test-mount .page-header');
  37. assert.ok(element.length, "component renders");
  38. assert.ok(!element.hasClass('tabbed'), "tabbed class is not present");
  39. assert.ok(!element.find('.page-tabs').length, "tabs are hidden");
  40. assert.ok(!element.find('.btn').length, "toggle nav button is hidden");
  41. });
  42. it("renders with nav", function(done) { // jshint ignore:line
  43. /* jshint ignore:start */
  44. route = {
  45. lists: [
  46. {
  47. name: "All",
  48. nameLong: "All threads",
  49. path: ''
  50. },
  51. {
  52. name: "New",
  53. nameLong: "New threads",
  54. path: 'new/'
  55. }
  56. ],
  57. list: {
  58. name: "All",
  59. nameLong: "All threads",
  60. path: ''
  61. },
  62. category: {
  63. name: "Root",
  64. parent: null
  65. }
  66. };
  67. let callback = function() {
  68. assert.ok(true, "toggleNav() was called");
  69. done();
  70. };
  71. testUtils.render(
  72. <Header route={route}
  73. title="Test"
  74. toggleNav={callback} />
  75. );
  76. /* jshint ignore:end */
  77. let element = $('#test-mount .page-header');
  78. assert.ok(element.length, "heading renders");
  79. assert.ok(element.hasClass('tabbed'), "tabbed class is not present");
  80. assert.ok(element.find('.page-tabs').length, "tabs are hidden");
  81. assert.ok(element.find('.btn').length, "toggle nav button is hidden");
  82. testUtils.simulateClick('#test-mount .btn-dropdown-toggle');
  83. });
  84. it("renders go back button", function() {
  85. /* jshint ignore:start */
  86. route.list= {
  87. name: "New",
  88. nameLong: "New threads",
  89. path: 'new/'
  90. };
  91. route.category.parent = {
  92. name: "Parent",
  93. absolute_url: '/parent-12/'
  94. }
  95. testUtils.render(<Header route={route} title="Lorem Ipsum" />);
  96. /* jshint ignore:end */
  97. let element = $('#test-mount .page-header .btn-go-back');
  98. assert.ok(element.length, "button renders");
  99. });
  100. });