toolbar-header.test.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. import { expect } from 'chai'
  2. import { render, screen } from '@testing-library/react'
  3. import ToolbarHeader from '../../../../../frontend/js/features/editor-navigation-toolbar/components/toolbar-header'
  4. describe('<ToolbarHeader />', function () {
  5. const defaultProps = {
  6. onShowLeftMenuClick: () => {},
  7. toggleChatOpen: () => {},
  8. toggleReviewPanelOpen: () => {},
  9. toggleHistoryOpen: () => {},
  10. unreadMessageCount: 0,
  11. onlineUsers: [],
  12. goToUser: () => {},
  13. projectName: 'test project',
  14. renameProject: () => {},
  15. openShareModal: () => {},
  16. togglePdfView: () => {},
  17. hasPublishPermissions: true,
  18. trackChangesVisible: true,
  19. handleChangeLayout: () => {},
  20. pdfLayout: '',
  21. view: '',
  22. reattach: () => {},
  23. detach: () => {},
  24. }
  25. describe('cobranding logo', function () {
  26. it('is not displayed by default', function () {
  27. render(<ToolbarHeader {...defaultProps} />)
  28. expect(screen.queryByRole('link', { name: 'variation' })).to.not.exist
  29. })
  30. it('is displayed when cobranding data is available', function () {
  31. const props = {
  32. ...defaultProps,
  33. cobranding: {
  34. brandVariationHomeUrl: 'http://cobranding',
  35. brandVariationName: 'variation',
  36. logoImgUrl: 'http://cobranding/logo',
  37. },
  38. }
  39. render(<ToolbarHeader {...props} />)
  40. screen.getByRole('link', { name: 'variation' })
  41. })
  42. })
  43. describe('pdf toggle button', function () {
  44. it('is not displayed by default', function () {
  45. render(<ToolbarHeader {...defaultProps} />)
  46. expect(screen.queryByText('PDF')).to.not.exist
  47. })
  48. it('is displayed when "pdfButtonIsVisible" prop is set to true', function () {
  49. const props = {
  50. ...defaultProps,
  51. pdfButtonIsVisible: true,
  52. }
  53. render(<ToolbarHeader {...props} />)
  54. screen.getByText('PDF')
  55. })
  56. })
  57. describe('track changes toggle button', function () {
  58. it('is displayed by default', function () {
  59. render(<ToolbarHeader {...defaultProps} />)
  60. screen.getByText('Review')
  61. })
  62. it('is not displayed when "isRestrictedTokenMember" prop is set to true', function () {
  63. const props = {
  64. ...defaultProps,
  65. isRestrictedTokenMember: true,
  66. }
  67. render(<ToolbarHeader {...props} />)
  68. expect(screen.queryByText('Review')).to.not.exist
  69. })
  70. it('is not displayed when "trackChangesVisible" prop is set to false', function () {
  71. const props = {
  72. ...defaultProps,
  73. trackChangesVisible: false,
  74. }
  75. render(<ToolbarHeader {...props} />)
  76. expect(screen.queryByText('Review')).to.not.exist
  77. })
  78. })
  79. describe('History toggle button', function () {
  80. it('is displayed by default', function () {
  81. render(<ToolbarHeader {...defaultProps} />)
  82. screen.getByText('History')
  83. })
  84. it('is not displayed when "isRestrictedTokenMember" prop is set to true', function () {
  85. const props = {
  86. ...defaultProps,
  87. isRestrictedTokenMember: true,
  88. }
  89. render(<ToolbarHeader {...props} />)
  90. expect(screen.queryByText('History')).to.not.exist
  91. })
  92. })
  93. describe('Chat toggle button', function () {
  94. it('is displayed by default', function () {
  95. render(<ToolbarHeader {...defaultProps} />)
  96. screen.getByText('Chat')
  97. })
  98. it('is not displayed when "isRestrictedTokenMember" prop is set to true', function () {
  99. const props = {
  100. ...defaultProps,
  101. isRestrictedTokenMember: true,
  102. }
  103. render(<ToolbarHeader {...props} />)
  104. expect(screen.queryByText('Chat')).to.not.exist
  105. })
  106. })
  107. describe('Publish button', function () {
  108. it('is displayed by default', function () {
  109. render(<ToolbarHeader {...defaultProps} />)
  110. screen.getByText('Submit')
  111. })
  112. it('is not displayed for users with no publish permissions', function () {
  113. const props = {
  114. ...defaultProps,
  115. hasPublishPermissions: false,
  116. }
  117. render(<ToolbarHeader {...props} />)
  118. expect(screen.queryByText('Submit')).to.not.exist
  119. })
  120. })
  121. })