Spec coverage for custom css endpoint (#28706)
This commit is contained in:
		
							parent
							
								
									b86083f0dc
								
							
						
					
					
						commit
						7801db7ba4
					
				| @ -1,8 +1,21 @@ | ||||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class CustomCssController < ActionController::Base # rubocop:disable Rails/ApplicationController | ||||
|   before_action :set_user_roles | ||||
| 
 | ||||
|   def show | ||||
|     expires_in 3.minutes, public: true | ||||
|     render content_type: 'text/css' | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def custom_css_styles | ||||
|     Setting.custom_css | ||||
|   end | ||||
|   helper_method :custom_css_styles | ||||
| 
 | ||||
|   def set_user_roles | ||||
|     @user_roles = UserRole.where(highlighted: true).where.not(color: [nil, '']) | ||||
|   end | ||||
| end | ||||
|  | ||||
| @ -1,8 +1,8 @@ | ||||
| <%- if Setting.custom_css.present? %> | ||||
| <%= raw Setting.custom_css %> | ||||
| <%- if custom_css_styles.present? %> | ||||
| <%= raw custom_css_styles %> | ||||
| 
 | ||||
| <%- end %> | ||||
| <%- UserRole.where(highlighted: true).select { |role| role.color.present? }.each do |role| %> | ||||
| <%- @user_roles.each do |role| %> | ||||
| .user-role-<%= role.id %> { | ||||
|   --user-role-accent: <%= role.color %>; | ||||
| } | ||||
|  | ||||
							
								
								
									
										60
									
								
								spec/requests/custom_css_spec.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								spec/requests/custom_css_spec.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | ||||
| # frozen_string_literal: true | ||||
| 
 | ||||
| require 'rails_helper' | ||||
| 
 | ||||
| describe 'Custom CSS' do | ||||
|   include RoutingHelper | ||||
| 
 | ||||
|   describe 'GET /custom.css' do | ||||
|     context 'without any CSS or User Roles' do | ||||
|       it 'returns empty stylesheet' do | ||||
|         get '/custom.css' | ||||
| 
 | ||||
|         expect(response.content_type).to include('text/css') | ||||
|         expect(response.body.presence).to be_nil | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with CSS settings' do | ||||
|       before do | ||||
|         Setting.custom_css = expected_css | ||||
|       end | ||||
| 
 | ||||
|       it 'returns stylesheet from settings' do | ||||
|         get '/custom.css' | ||||
| 
 | ||||
|         expect(response.content_type).to include('text/css') | ||||
|         expect(response.body.strip).to eq(expected_css) | ||||
|       end | ||||
| 
 | ||||
|       def expected_css | ||||
|         <<~CSS.strip | ||||
|           body { background-color: red; } | ||||
|         CSS | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     context 'with highlighted colored UserRole records' do | ||||
|       before do | ||||
|         _highlighted_colored = Fabricate :user_role, highlighted: true, color: '#336699', id: '123_123_123' | ||||
|         _highlighted_no_color = Fabricate :user_role, highlighted: true, color: '' | ||||
|         _no_highlight_with_color = Fabricate :user_role, highlighted: false, color: '' | ||||
|       end | ||||
| 
 | ||||
|       it 'returns stylesheet from settings' do | ||||
|         get '/custom.css' | ||||
| 
 | ||||
|         expect(response.content_type).to include('text/css') | ||||
|         expect(response.body.strip).to eq(expected_css) | ||||
|       end | ||||
| 
 | ||||
|       def expected_css | ||||
|         <<~CSS.strip | ||||
|           .user-role-123123123 { | ||||
|             --user-role-accent: #336699; | ||||
|           } | ||||
|         CSS | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user