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.

53 lines
1.5 KiB

  1. require 'rails_helper'
  2. RSpec.describe Admin::SettingsController, type: :controller do
  3. render_views
  4. describe 'When signed in as an admin' do
  5. before do
  6. sign_in Fabricate(:user, admin: true), scope: :user
  7. end
  8. describe 'GET #index' do
  9. it 'returns http success' do
  10. get :index
  11. expect(response).to have_http_status(:success)
  12. end
  13. end
  14. describe 'PUT #update' do
  15. describe 'for a record that doesnt exist' do
  16. after do
  17. Setting.new_setting_key = nil
  18. end
  19. it 'creates a settings value that didnt exist before' do
  20. expect(Setting.new_setting_key).to be_nil
  21. patch :update, params: { id: 'new_setting_key', setting: { value: 'New key value' } }
  22. expect(response).to redirect_to(admin_settings_path)
  23. expect(Setting.new_setting_key).to eq 'New key value'
  24. end
  25. end
  26. it 'updates a settings value' do
  27. Setting.site_title = 'Original'
  28. patch :update, params: { id: 'site_title', setting: { value: 'New title' } }
  29. expect(response).to redirect_to(admin_settings_path)
  30. expect(Setting.site_title).to eq 'New title'
  31. end
  32. it 'typecasts open_registrations to boolean' do
  33. Setting.open_registrations = false
  34. patch :update, params: { id: 'open_registrations', setting: { value: 'true' } }
  35. expect(response).to redirect_to(admin_settings_path)
  36. expect(Setting.open_registrations).to eq true
  37. end
  38. end
  39. end
  40. end