Merge commit 'a90696011e563e62100cba56e2d52f6babbaff00' into glitch-soc/merge-upstream
This commit is contained in:
		
						commit
						1323dfac80
					
				
					 11 changed files with 130 additions and 15 deletions
				
			
		|  | @ -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 | ||||
|  |  | |||
|  | @ -489,7 +489,7 @@ | |||
|   "onboarding.profile.lead": "Du kannst das später in den Einstellungen vervollständigen, wo noch mehr Anpassungsmöglichkeiten zur Verfügung stehen.", | ||||
|   "onboarding.profile.note": "Über mich", | ||||
|   "onboarding.profile.note_hint": "Du kannst andere @Profile erwähnen oder #Hashtags verwenden …", | ||||
|   "onboarding.profile.save_and_continue": "Speichern und fortsetzen", | ||||
|   "onboarding.profile.save_and_continue": "Speichern und fortfahren", | ||||
|   "onboarding.profile.title": "Profil einrichten", | ||||
|   "onboarding.profile.upload_avatar": "Profilbild hochladen", | ||||
|   "onboarding.profile.upload_header": "Titelbild hochladen", | ||||
|  |  | |||
|  | @ -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 %>; | ||||
| } | ||||
|  |  | |||
|  | @ -21,7 +21,7 @@ | |||
| 
 | ||||
| .report-header | ||||
|   .report-header__card | ||||
|     = render 'card', strike: @strike | ||||
|     = render 'disputes/strikes/card', strike: @strike | ||||
| 
 | ||||
|   .report-header__details | ||||
|     .report-header__details__item | ||||
|  |  | |||
|  | @ -1445,7 +1445,7 @@ eu: | |||
|       cooldown: Migratu eta gero egonaldi tarte bat egongo da eta bitartean ezin izango duzu berriro migratu | ||||
|       disabled_account: Zure uneko kontua ezin izango da gero erabili. Hala ere, datua exporatu ahal izango dituzu, eta berriro aktibatu. | ||||
|       followers: Ekintza honek jarraitzaile guztiak eramango ditu uneko kontutik kontu berrira | ||||
|       only_redirect_html: Bestela, <a href="%{path}">zure profilean birbideratze soil bat jarri</a> dezakezu. | ||||
|       only_redirect_html: Bestela, <a href="%{path}">zure profilean birbideratze bat jar</a> dezakezu. | ||||
|       other_data: Ez da beste daturik migratuko automatikoki | ||||
|       redirect: Zure uneko kontuaren profila eguneratuko da birbideratze ohar batekin eta bilaketetatik kenduko da | ||||
|   moderation: | ||||
|  |  | |||
|  | @ -93,6 +93,7 @@ ro: | |||
|       moderation: | ||||
|         active: Activ | ||||
|         all: Toate | ||||
|         disabled: Dezactivat | ||||
|         pending: În așteptare | ||||
|         silenced: Limitat | ||||
|         suspended: Suspendate | ||||
|  |  | |||
|  | @ -184,6 +184,7 @@ sk: | |||
|         create_domain_block: Vytvor zákaz domény | ||||
|         create_email_domain_block: Vytvor zákaz emailovej domény | ||||
|         create_ip_block: Vytvor IP pravidlo | ||||
|         create_unavailable_domain: Vytvor nedostupnú doménu | ||||
|         create_user_role: Vytvoriť rolu | ||||
|         demote_user: Zniž užívateľskú rolu | ||||
|         destroy_announcement: Vymaž oboznámenie | ||||
|  | @ -245,6 +246,7 @@ sk: | |||
|         destroy_email_domain_block_html: "%{name} odblokoval/a e-mailovú doménu %{target}" | ||||
|         destroy_ip_block_html: "%{name} vymazal/a pravidlo pre IP %{target}" | ||||
|         destroy_status_html: "%{name} zmazal/a príspevok od %{target}" | ||||
|         destroy_unavailable_domain_html: "%{name} znova spustil/a doručovanie pre doménu %{target}" | ||||
|         destroy_user_role_html: "%{name} vymazal/a rolu pre %{target}" | ||||
|         enable_user_html: "%{name} povolil/a prihlásenie pre používateľa %{target}" | ||||
|         memorialize_account_html: "%{name} zmenil/a účet %{target} na pamätnú stránku" | ||||
|  |  | |||
|  | @ -3,6 +3,8 @@ | |||
| if Rake::Task.task_defined?('spec:system') | ||||
|   namespace :spec do | ||||
|     task :enable_system_specs do # rubocop:disable Rails/RakeEnvironment | ||||
|       ENV['LOCAL_DOMAIN'] = 'localhost:3000' | ||||
|       ENV['LOCAL_HTTPS'] = 'false' | ||||
|       ENV['RUN_SYSTEM_SPECS'] = 'true' | ||||
|     end | ||||
|   end | ||||
|  |  | |||
|  | @ -10,19 +10,38 @@ RSpec.describe Disputes::AppealsController do | |||
|   let!(:admin) { Fabricate(:user, role: UserRole.find_by(name: 'Admin')) } | ||||
| 
 | ||||
|   describe '#create' do | ||||
|     let(:current_user) { Fabricate(:user) } | ||||
|     let(:strike) { Fabricate(:account_warning, target_account: current_user.account) } | ||||
|     context 'with valid params' do | ||||
|       let(:current_user) { Fabricate(:user) } | ||||
|       let(:strike) { Fabricate(:account_warning, target_account: current_user.account) } | ||||
| 
 | ||||
|     before do | ||||
|       post :create, params: { strike_id: strike.id, appeal: { text: 'Foo' } } | ||||
|       before do | ||||
|         post :create, params: { strike_id: strike.id, appeal: { text: 'Foo' } } | ||||
|       end | ||||
| 
 | ||||
|       it 'notifies staff about new appeal', :sidekiq_inline do | ||||
|         expect(ActionMailer::Base.deliveries.first.to).to eq([admin.email]) | ||||
|       end | ||||
| 
 | ||||
|       it 'redirects back to the strike page' do | ||||
|         expect(response).to redirect_to(disputes_strike_path(strike.id)) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     it 'notifies staff about new appeal', :sidekiq_inline do | ||||
|       expect(ActionMailer::Base.deliveries.first.to).to eq([admin.email]) | ||||
|     end | ||||
|     context 'with invalid params' do | ||||
|       let(:current_user) { Fabricate(:user) } | ||||
|       let(:strike) { Fabricate(:account_warning, target_account: current_user.account) } | ||||
| 
 | ||||
|     it 'redirects back to the strike page' do | ||||
|       expect(response).to redirect_to(disputes_strike_path(strike.id)) | ||||
|       before do | ||||
|         post :create, params: { strike_id: strike.id, appeal: { text: '' } } | ||||
|       end | ||||
| 
 | ||||
|       it 'does not send email', :sidekiq_inline do | ||||
|         expect(ActionMailer::Base.deliveries.size).to eq(0) | ||||
|       end | ||||
| 
 | ||||
|       it 'renders the strike show page' do | ||||
|         expect(response).to render_template('disputes/strikes/show') | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
|  |  | |||
							
								
								
									
										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 | ||||
							
								
								
									
										18
									
								
								spec/support/javascript_errors.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								spec/support/javascript_errors.rb
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| RSpec.configure do |config| | ||||
|   config.after(:each, type: :system) do | ||||
|     errors = page.driver.browser.logs.get(:browser) | ||||
|     if errors.present? | ||||
|       aggregate_failures 'javascript errrors' do | ||||
|         errors.each do |error| | ||||
|           expect(error.level).to_not eq('SEVERE'), error.message | ||||
|           next unless error.level == 'WARNING' | ||||
| 
 | ||||
|           $stderr.warn 'WARN: javascript warning' | ||||
|           $stderr.warn error.message | ||||
|         end | ||||
|       end | ||||
|     end | ||||
|   end | ||||
| end | ||||
		Loading…
	
		Reference in a new issue