2015-10-11 10:41:23 +01:00
require 'rails_helper'
2014-03-05 18:22:20 +05:30
describe Admin :: BadgesController do
context " while logged in as an admin " do
let! ( :user ) { log_in ( :admin ) }
let! ( :badge ) { Fabricate ( :badge ) }
2014-07-30 08:35:15 +10:00
context 'index' do
it 'returns badge index' do
xhr :get , :index
2015-01-09 14:04:02 -03:00
expect ( response ) . to be_success
2014-07-30 08:35:15 +10:00
end
end
2016-07-28 09:03:00 +10:00
context 'preview' do
it 'allows preview enable_badge_sql is enabled' do
SiteSetting . enable_badge_sql = true
result = xhr :get , :preview , sql : 'select id as user_id, created_at granted_at from users'
expect ( JSON . parse ( result . body ) [ " grant_count " ] ) . to be > 0
end
it 'does not allow anything if enable_badge_sql is disabled' do
SiteSetting . enable_badge_sql = false
result = xhr :get , :preview , sql : 'select id as user_id, created_at granted_at from users'
expect ( result . status ) . to eq ( 403 )
end
end
2014-07-27 18:22:01 +10:00
context '.save_badge_groupings' do
it 'can save badge groupings' do
groupings = BadgeGrouping . all . order ( :position ) . to_a
groupings << BadgeGrouping . new ( name : 'Test 1' )
groupings << BadgeGrouping . new ( name : 'Test 2' )
groupings . shuffle!
names = groupings . map { | g | g . name }
ids = groupings . map { | g | g . id . to_s }
xhr :post , :save_badge_groupings , ids : ids , names : names
groupings2 = BadgeGrouping . all . order ( :position ) . to_a
2015-01-09 14:04:02 -03:00
expect ( groupings2 . map { | g | g . name } ) . to eq ( names )
expect ( ( groupings . map ( & :id ) - groupings2 . map { | g | g . id } ) . compact ) . to be_blank
2014-07-27 18:22:01 +10:00
2015-01-09 14:04:02 -03:00
expect ( :: JSON . parse ( response . body ) [ " badge_groupings " ] . length ) . to eq ( groupings2 . length )
2014-07-27 18:22:01 +10:00
end
end
2014-03-05 18:22:20 +05:30
context '.badge_types' do
it 'returns success' do
xhr :get , :badge_types
2015-01-09 14:04:02 -03:00
expect ( response ) . to be_success
2014-03-05 18:22:20 +05:30
end
it 'returns JSON' do
xhr :get , :badge_types
2015-01-09 14:04:02 -03:00
expect ( :: JSON . parse ( response . body ) [ " badge_types " ] ) . to be_present
2014-03-05 18:22:20 +05:30
end
end
context '.destroy' do
it 'returns success' do
xhr :delete , :destroy , id : badge . id
2015-01-09 14:04:02 -03:00
expect ( response ) . to be_success
2014-03-05 18:22:20 +05:30
end
it 'deletes the badge' do
xhr :delete , :destroy , id : badge . id
2015-01-09 14:04:02 -03:00
expect ( Badge . where ( id : badge . id ) . count ) . to eq ( 0 )
2014-03-05 18:22:20 +05:30
end
end
context '.update' do
2016-07-28 09:03:00 +10:00
it 'does not allow query updates if badge_sql is disabled' do
badge . query = " select 123 "
badge . save
SiteSetting . enable_badge_sql = false
xhr :put , :update ,
id : badge . id ,
name : " 123456 " ,
query : " select id user_id, created_at granted_at from users " ,
badge_type_id : badge . badge_type_id ,
allow_title : false ,
multiple_grant : false ,
enabled : true
2015-01-09 14:04:02 -03:00
expect ( response ) . to be_success
2016-07-28 09:03:00 +10:00
badge . reload
expect ( badge . name ) . to eq ( '123456' )
expect ( badge . query ) . to eq ( 'select 123' )
2014-03-05 18:22:20 +05:30
end
it 'updates the badge' do
2016-07-28 09:03:00 +10:00
SiteSetting . enable_badge_sql = true
sql = " select id user_id, created_at granted_at from users "
xhr :put , :update ,
id : badge . id ,
name : " 123456 " ,
query : sql ,
badge_type_id : badge . badge_type_id ,
allow_title : false ,
multiple_grant : false ,
enabled : true
expect ( response ) . to be_success
badge . reload
expect ( badge . name ) . to eq ( '123456' )
expect ( badge . query ) . to eq ( sql )
2014-03-05 18:22:20 +05:30
end
end
end
end