toolbar-header.test.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. }
  20. describe('cobranding logo', function () {
  21. it('is not displayed by default', function () {
  22. render(<ToolbarHeader {...defaultProps} />)
  23. expect(screen.queryByRole('link', { name: 'variation' })).to.not.exist
  24. })
  25. it('is displayed when cobranding data is available', function () {
  26. const props = {
  27. ...defaultProps,
  28. cobranding: {
  29. brandVariationHomeUrl: 'http://cobranding',
  30. brandVariationName: 'variation',
  31. logoImgUrl: 'http://cobranding/logo',
  32. },
  33. }
  34. render(<ToolbarHeader {...props} />)
  35. screen.getByRole('link', { name: 'variation' })
  36. })
  37. })
  38. describe('pdf toggle button', function () {
  39. it('is not displayed by default', function () {
  40. render(<ToolbarHeader {...defaultProps} />)
  41. expect(screen.queryByText('PDF')).to.not.exist
  42. })
  43. it('is displayed when "pdfButtonIsVisible" prop is set to true', function () {
  44. const props = {
  45. ...defaultProps,
  46. pdfButtonIsVisible: true,
  47. }
  48. render(<ToolbarHeader {...props} />)
  49. screen.getByText('PDF')
  50. })
  51. })
  52. describe('track changes toggle button', function () {
  53. it('is displayed by default', function () {
  54. render(<ToolbarHeader {...defaultProps} />)
  55. screen.getByText('Review')
  56. })
  57. it('is not displayed when "isRestrictedTokenMember" prop is set to true', function () {
  58. const props = {
  59. ...defaultProps,
  60. isRestrictedTokenMember: true,
  61. }
  62. render(<ToolbarHeader {...props} />)
  63. expect(screen.queryByText('Review')).to.not.exist
  64. })
  65. it('is not displayed when "trackChangesVisible" prop is set to false', function () {
  66. const props = {
  67. ...defaultProps,
  68. trackChangesVisible: false,
  69. }
  70. render(<ToolbarHeader {...props} />)
  71. expect(screen.queryByText('Review')).to.not.exist
  72. })
  73. })
  74. describe('History toggle button', function () {
  75. it('is displayed by default', function () {
  76. render(<ToolbarHeader {...defaultProps} />)
  77. screen.getByText('History')
  78. })
  79. it('is not displayed when "isRestrictedTokenMember" prop is set to true', function () {
  80. const props = {
  81. ...defaultProps,
  82. isRestrictedTokenMember: true,
  83. }
  84. render(<ToolbarHeader {...props} />)
  85. expect(screen.queryByText('History')).to.not.exist
  86. })
  87. })
  88. describe('Chat toggle button', function () {
  89. it('is displayed by default', function () {
  90. render(<ToolbarHeader {...defaultProps} />)
  91. screen.getByText('Chat')
  92. })
  93. it('is not displayed when "isRestrictedTokenMember" prop is set to true', function () {
  94. const props = {
  95. ...defaultProps,
  96. isRestrictedTokenMember: true,
  97. }
  98. render(<ToolbarHeader {...props} />)
  99. expect(screen.queryByText('Chat')).to.not.exist
  100. })
  101. })
  102. describe('Publish button', function () {
  103. it('is displayed by default', function () {
  104. render(<ToolbarHeader {...defaultProps} />)
  105. screen.getByText('Submit')
  106. })
  107. it('is not displayed for users with no publish permissions', function () {
  108. const props = {
  109. ...defaultProps,
  110. hasPublishPermissions: false,
  111. }
  112. render(<ToolbarHeader {...props} />)
  113. expect(screen.queryByText('Submit')).to.not.exist
  114. })
  115. })
  116. })