2015-10-11 10:41:23 +01:00
require 'rails_helper'
2013-02-05 14:16:51 -05:00
describe Admin :: SiteSettingsController do
it " is a subclass of AdminController " do
2015-01-09 14:04:02 -03:00
expect ( Admin :: SiteSettingsController < Admin :: AdminController ) . to eq ( true )
2013-02-05 14:16:51 -05:00
end
context 'while logged in as an admin' do
before do
@user = log_in ( :admin )
end
context 'index' do
it 'returns success' do
xhr :get , :index
2015-01-09 14:04:02 -03:00
expect ( response ) . to be_success
2013-02-05 14:16:51 -05:00
end
it 'returns JSON' do
xhr :get , :index
2015-01-09 14:04:02 -03:00
expect ( :: JSON . parse ( response . body ) ) . to be_present
2013-02-25 19:42:20 +03:00
end
2013-02-05 14:16:51 -05:00
end
context 'update' do
2014-01-27 13:05:35 -05:00
before do
SiteSetting . setting ( :test_setting , " default " )
end
2013-02-05 14:16:51 -05:00
it 'sets the value when the param is present' do
SiteSetting . expects ( :'test_setting=' ) . with ( 'hello' ) . once
2014-01-06 13:03:53 +01:00
xhr :put , :update , id : 'test_setting' , test_setting : 'hello'
2013-02-05 14:16:51 -05:00
end
2013-06-11 14:31:38 -04:00
it 'allows value to be a blank string' do
SiteSetting . expects ( :'test_setting=' ) . with ( '' ) . once
2014-01-06 13:03:53 +01:00
xhr :put , :update , id : 'test_setting' , test_setting : ''
2013-06-11 14:31:38 -04:00
end
2013-08-19 16:58:38 -04:00
it 'logs the change' do
SiteSetting . stubs ( :test_setting ) . returns ( 'previous' )
SiteSetting . expects ( :'test_setting=' ) . with ( 'hello' ) . once
StaffActionLogger . any_instance . expects ( :log_site_setting_change ) . with ( 'test_setting' , 'previous' , 'hello' )
2014-01-06 13:03:53 +01:00
xhr :put , :update , id : 'test_setting' , test_setting : 'hello'
2013-08-19 16:58:38 -04:00
end
2014-01-27 13:05:35 -05:00
2016-07-28 09:03:00 +10:00
it 'does not allow changing of hidden settings' do
SiteSetting . setting ( :hidden_setting , " hidden " , hidden : true )
result = xhr :put , :update , id : 'hidden_setting' , hidden_setting : 'not allowed'
expect ( SiteSetting . hidden_setting ) . to eq ( " hidden " )
expect ( result . status ) . to eq ( 422 )
end
2014-01-27 13:05:35 -05:00
it 'fails when a setting does not exist' do
expect {
xhr :put , :update , id : 'provider' , provider : 'gotcha'
} . to raise_error ( ArgumentError )
end
2013-02-05 14:16:51 -05:00
end
end
2013-02-25 19:42:20 +03:00
end