PageRenderTime 29ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/spec/helpers/icons_helper_spec.rb

https://gitlab.com/artofhuman/gitlab-ce
Ruby | 215 lines | 165 code | 50 blank | 0 comment | 0 complexity | ba327137494071453639779011c67496 MD5 | raw file
  1. require 'spec_helper'
  2. describe IconsHelper do
  3. let(:icons_path) { ActionController::Base.helpers.image_path("icons.svg") }
  4. describe 'icon' do
  5. it 'returns aria-hidden by default' do
  6. star = icon('star')
  7. expect(star['aria-hidden']).to eq 'aria-hidden'
  8. end
  9. it 'does not return aria-hidden if aria-label is set' do
  10. up = icon('up', 'aria-label' => 'up')
  11. expect(up['aria-hidden']).to be_nil
  12. expect(up['aria-label']).to eq 'aria-label'
  13. end
  14. end
  15. describe 'sprite_icon_path' do
  16. it 'returns relative path' do
  17. expect(sprite_icon_path)
  18. .to eq icons_path
  19. end
  20. context 'when an asset_host is set in the config it will return an absolute local URL' do
  21. let(:asset_host) { 'http://assets' }
  22. before do
  23. allow(ActionController::Base).to receive(:asset_host).and_return(asset_host)
  24. end
  25. it 'returns an absolute URL on that asset host' do
  26. expect(sprite_icon_path)
  27. .to eq ActionController::Base.helpers.image_path("icons.svg", host: Gitlab.config.gitlab.url)
  28. end
  29. end
  30. end
  31. describe 'sprite_icon' do
  32. icon_name = 'clock'
  33. it 'returns svg icon html' do
  34. expect(sprite_icon(icon_name).to_s)
  35. .to eq "<svg><use xlink:href=\"#{icons_path}##{icon_name}\"></use></svg>"
  36. end
  37. it 'returns svg icon html + size classes' do
  38. expect(sprite_icon(icon_name, size: 72).to_s)
  39. .to eq "<svg class=\"s72\"><use xlink:href=\"#{icons_path}##{icon_name}\"></use></svg>"
  40. end
  41. it 'returns svg icon html + size classes + additional class' do
  42. expect(sprite_icon(icon_name, size: 72, css_class: 'icon-danger').to_s)
  43. .to eq "<svg class=\"s72 icon-danger\"><use xlink:href=\"#{icons_path}##{icon_name}\"></use></svg>"
  44. end
  45. describe 'non existing icon' do
  46. non_existing = 'non_existing_icon_sprite'
  47. it 'should raise in development mode' do
  48. allow(Rails.env).to receive(:development?).and_return(true)
  49. expect { sprite_icon(non_existing) }.to raise_error(ArgumentError, /is not a known icon/)
  50. end
  51. it 'should raise in test mode' do
  52. allow(Rails.env).to receive(:test?).and_return(true)
  53. expect { sprite_icon(non_existing) }.to raise_error(ArgumentError, /is not a known icon/)
  54. end
  55. it 'should not raise in production mode' do
  56. allow(Rails.env).to receive(:test?).and_return(false)
  57. allow(Rails.env).to receive(:development?).and_return(false)
  58. expect { sprite_icon(non_existing) }.not_to raise_error
  59. end
  60. end
  61. end
  62. describe 'audit icon' do
  63. it 'returns right icon name for standard auth' do
  64. icon_name = 'standard'
  65. expect(audit_icon(icon_name).to_s)
  66. .to eq '<i class="fa fa-key"></i>'
  67. end
  68. it 'returns right icon name for two-factor auth' do
  69. icon_name = 'two-factor'
  70. expect(audit_icon(icon_name).to_s)
  71. .to eq '<i class="fa fa-key"></i>'
  72. end
  73. it 'returns right icon name for google_oauth2 auth' do
  74. icon_name = 'google_oauth2'
  75. expect(audit_icon(icon_name).to_s)
  76. .to eq '<i class="fa fa-google"></i>'
  77. end
  78. end
  79. describe 'file_type_icon_class' do
  80. it 'returns folder class' do
  81. expect(file_type_icon_class('folder', 0, 'folder_name')).to eq 'folder'
  82. end
  83. it 'returns share class' do
  84. expect(file_type_icon_class('file', '120000', 'link')).to eq 'share'
  85. end
  86. it 'returns file-pdf-o class with .pdf' do
  87. expect(file_type_icon_class('file', 0, 'filename.pdf')).to eq 'file-pdf-o'
  88. end
  89. it 'returns file-image-o class with .jpg' do
  90. expect(file_type_icon_class('file', 0, 'filename.jpg')).to eq 'file-image-o'
  91. end
  92. it 'returns file-image-o class with .JPG' do
  93. expect(file_type_icon_class('file', 0, 'filename.JPG')).to eq 'file-image-o'
  94. end
  95. it 'returns file-image-o class with .png' do
  96. expect(file_type_icon_class('file', 0, 'filename.png')).to eq 'file-image-o'
  97. end
  98. it 'returns file-archive-o class with .tar' do
  99. expect(file_type_icon_class('file', 0, 'filename.tar')).to eq 'file-archive-o'
  100. end
  101. it 'returns file-archive-o class with .TAR' do
  102. expect(file_type_icon_class('file', 0, 'filename.TAR')).to eq 'file-archive-o'
  103. end
  104. it 'returns file-archive-o class with .tar.gz' do
  105. expect(file_type_icon_class('file', 0, 'filename.tar.gz')).to eq 'file-archive-o'
  106. end
  107. it 'returns file-audio-o class with .mp3' do
  108. expect(file_type_icon_class('file', 0, 'filename.mp3')).to eq 'file-audio-o'
  109. end
  110. it 'returns file-audio-o class with .MP3' do
  111. expect(file_type_icon_class('file', 0, 'filename.MP3')).to eq 'file-audio-o'
  112. end
  113. it 'returns file-audio-o class with .wav' do
  114. expect(file_type_icon_class('file', 0, 'filename.wav')).to eq 'file-audio-o'
  115. end
  116. it 'returns file-video-o class with .avi' do
  117. expect(file_type_icon_class('file', 0, 'filename.avi')).to eq 'file-video-o'
  118. end
  119. it 'returns file-video-o class with .AVI' do
  120. expect(file_type_icon_class('file', 0, 'filename.AVI')).to eq 'file-video-o'
  121. end
  122. it 'returns file-video-o class with .mp4' do
  123. expect(file_type_icon_class('file', 0, 'filename.mp4')).to eq 'file-video-o'
  124. end
  125. it 'returns file-word-o class with .doc' do
  126. expect(file_type_icon_class('file', 0, 'filename.doc')).to eq 'file-word-o'
  127. end
  128. it 'returns file-word-o class with .DOC' do
  129. expect(file_type_icon_class('file', 0, 'filename.DOC')).to eq 'file-word-o'
  130. end
  131. it 'returns file-word-o class with .docx' do
  132. expect(file_type_icon_class('file', 0, 'filename.docx')).to eq 'file-word-o'
  133. end
  134. it 'returns file-excel-o class with .xls' do
  135. expect(file_type_icon_class('file', 0, 'filename.xls')).to eq 'file-excel-o'
  136. end
  137. it 'returns file-excel-o class with .XLS' do
  138. expect(file_type_icon_class('file', 0, 'filename.XLS')).to eq 'file-excel-o'
  139. end
  140. it 'returns file-excel-o class with .xlsx' do
  141. expect(file_type_icon_class('file', 0, 'filename.xlsx')).to eq 'file-excel-o'
  142. end
  143. it 'returns file-excel-o class with .ppt' do
  144. expect(file_type_icon_class('file', 0, 'filename.ppt')).to eq 'file-powerpoint-o'
  145. end
  146. it 'returns file-excel-o class with .PPT' do
  147. expect(file_type_icon_class('file', 0, 'filename.PPT')).to eq 'file-powerpoint-o'
  148. end
  149. it 'returns file-excel-o class with .pptx' do
  150. expect(file_type_icon_class('file', 0, 'filename.pptx')).to eq 'file-powerpoint-o'
  151. end
  152. it 'returns file-text-o class with .unknow' do
  153. expect(file_type_icon_class('file', 0, 'filename.unknow')).to eq 'file-text-o'
  154. end
  155. it 'returns file-text-o class with no extension' do
  156. expect(file_type_icon_class('file', 0, 'CHANGELOG')).to eq 'file-text-o'
  157. end
  158. end
  159. describe '#external_snippet_icon' do
  160. it 'returns external snippet icon' do
  161. expect(external_snippet_icon('download').to_s)
  162. .to eq("<span class=\"gl-snippet-icon gl-snippet-icon-download\"></span>")
  163. end
  164. end
  165. end