You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

216 lines
5.3 KiB

  1. # frozen_string_literal: true
  2. require 'rails_helper'
  3. RSpec.describe StatusesHelper, type: :helper do
  4. describe 'link_to_newer' do
  5. it 'returns a link to newer content' do
  6. url = 'https://example.com'
  7. result = helper.link_to_newer(url)
  8. expect(result).to match('load-more')
  9. expect(result).to match(I18n.t('statuses.show_newer'))
  10. end
  11. end
  12. describe 'link_to_older' do
  13. it 'returns a link to older content' do
  14. url = 'https://example.com'
  15. result = helper.link_to_older(url)
  16. expect(result).to match('load-more')
  17. expect(result).to match(I18n.t('statuses.show_older'))
  18. end
  19. end
  20. describe 'fa_visibility_icon' do
  21. context 'with a status that is public' do
  22. let(:status) { Status.new(visibility: 'public') }
  23. it 'returns the correct fa icon' do
  24. result = helper.fa_visibility_icon(status)
  25. expect(result).to match('fa-globe')
  26. end
  27. end
  28. context 'with a status that is unlisted' do
  29. let(:status) { Status.new(visibility: 'unlisted') }
  30. it 'returns the correct fa icon' do
  31. result = helper.fa_visibility_icon(status)
  32. expect(result).to match('fa-unlock')
  33. end
  34. end
  35. context 'with a status that is private' do
  36. let(:status) { Status.new(visibility: 'private') }
  37. it 'returns the correct fa icon' do
  38. result = helper.fa_visibility_icon(status)
  39. expect(result).to match('fa-lock')
  40. end
  41. end
  42. context 'with a status that is direct' do
  43. let(:status) { Status.new(visibility: 'direct') }
  44. it 'returns the correct fa icon' do
  45. result = helper.fa_visibility_icon(status)
  46. expect(result).to match('fa-at')
  47. end
  48. end
  49. end
  50. describe '#stream_link_target' do
  51. it 'returns nil if it is not an embedded view' do
  52. set_not_embedded_view
  53. expect(helper.stream_link_target).to be_nil
  54. end
  55. it 'returns _blank if it is an embedded view' do
  56. set_embedded_view
  57. expect(helper.stream_link_target).to eq '_blank'
  58. end
  59. end
  60. def set_not_embedded_view
  61. params[:controller] = "not_#{StatusesHelper::EMBEDDED_CONTROLLER}"
  62. params[:action] = "not_#{StatusesHelper::EMBEDDED_ACTION}"
  63. end
  64. def set_embedded_view
  65. params[:controller] = StatusesHelper::EMBEDDED_CONTROLLER
  66. params[:action] = StatusesHelper::EMBEDDED_ACTION
  67. end
  68. describe '#style_classes' do
  69. it do
  70. status = double(reblog?: false)
  71. classes = helper.style_classes(status, false, false, false)
  72. expect(classes).to eq 'entry'
  73. end
  74. it do
  75. status = double(reblog?: true)
  76. classes = helper.style_classes(status, false, false, false)
  77. expect(classes).to eq 'entry entry-reblog'
  78. end
  79. it do
  80. status = double(reblog?: false)
  81. classes = helper.style_classes(status, true, false, false)
  82. expect(classes).to eq 'entry entry-predecessor'
  83. end
  84. it do
  85. status = double(reblog?: false)
  86. classes = helper.style_classes(status, false, true, false)
  87. expect(classes).to eq 'entry entry-successor'
  88. end
  89. it do
  90. status = double(reblog?: false)
  91. classes = helper.style_classes(status, false, false, true)
  92. expect(classes).to eq 'entry entry-center'
  93. end
  94. it do
  95. status = double(reblog?: true)
  96. classes = helper.style_classes(status, true, true, true)
  97. expect(classes).to eq 'entry entry-predecessor entry-reblog entry-successor entry-center'
  98. end
  99. end
  100. describe '#microformats_classes' do
  101. it do
  102. status = double(reblog?: false)
  103. classes = helper.microformats_classes(status, false, false)
  104. expect(classes).to eq ''
  105. end
  106. it do
  107. status = double(reblog?: false)
  108. classes = helper.microformats_classes(status, true, false)
  109. expect(classes).to eq 'p-in-reply-to'
  110. end
  111. it do
  112. status = double(reblog?: false)
  113. classes = helper.microformats_classes(status, false, true)
  114. expect(classes).to eq 'p-comment'
  115. end
  116. it do
  117. status = double(reblog?: true)
  118. classes = helper.microformats_classes(status, true, false)
  119. expect(classes).to eq 'p-in-reply-to p-repost-of'
  120. end
  121. it do
  122. status = double(reblog?: true)
  123. classes = helper.microformats_classes(status, true, true)
  124. expect(classes).to eq 'p-in-reply-to p-repost-of p-comment'
  125. end
  126. end
  127. describe '#microformats_h_class' do
  128. it do
  129. status = double(reblog?: false)
  130. css_class = helper.microformats_h_class(status, false, false, false)
  131. expect(css_class).to eq 'h-entry'
  132. end
  133. it do
  134. status = double(reblog?: true)
  135. css_class = helper.microformats_h_class(status, false, false, false)
  136. expect(css_class).to eq 'h-cite'
  137. end
  138. it do
  139. status = double(reblog?: false)
  140. css_class = helper.microformats_h_class(status, true, false, false)
  141. expect(css_class).to eq 'h-cite'
  142. end
  143. it do
  144. status = double(reblog?: false)
  145. css_class = helper.microformats_h_class(status, false, true, false)
  146. expect(css_class).to eq 'h-cite'
  147. end
  148. it do
  149. status = double(reblog?: false)
  150. css_class = helper.microformats_h_class(status, false, false, true)
  151. expect(css_class).to eq ''
  152. end
  153. it do
  154. status = double(reblog?: true)
  155. css_class = helper.microformats_h_class(status, true, true, true)
  156. expect(css_class).to eq 'h-cite'
  157. end
  158. end
  159. end