2013-05-08 15:20:38 +10:00
require 'spec_helper'
describe Admin :: GroupsController do
2013-07-16 16:17:44 +10:00
2013-07-21 22:37:01 -04:00
before do
@admin = log_in ( :admin )
end
2013-05-08 15:20:38 +10:00
it " is a subclass of AdminController " do
2015-01-09 14:04:02 -03:00
expect ( Admin :: GroupsController < Admin :: AdminController ) . to eq ( true )
2013-05-08 15:20:38 +10:00
end
2015-01-05 18:51:45 +01:00
context " .index " do
it " produces valid json for groups " do
group = Fabricate . build ( :group , name : " test " )
group . add ( @admin )
group . save
xhr :get , :index
2015-01-09 14:04:02 -03:00
expect ( response . status ) . to eq ( 200 )
expect ( :: JSON . parse ( response . body ) . keep_if { | r | r [ " id " ] == group . id } ) . to eq ( [ {
2015-01-05 18:51:45 +01:00
" id " = > group . id ,
" name " = > group . name ,
" user_count " = > 1 ,
" automatic " = > false ,
" alias_level " = > 0 ,
" visible " = > true
2015-01-09 14:04:02 -03:00
} ] )
2015-01-05 18:51:45 +01:00
end
end
context " .create " do
it " strip spaces on the group name " do
xhr :post , :create , name : " bob "
2015-01-09 14:04:02 -03:00
expect ( response . status ) . to eq ( 200 )
2015-01-05 18:51:45 +01:00
groups = Group . where ( name : " bob " ) . to_a
2015-01-09 14:04:02 -03:00
expect ( groups . count ) . to eq ( 1 )
expect ( groups [ 0 ] . name ) . to eq ( " bob " )
2015-01-05 18:51:45 +01:00
end
2013-05-08 15:20:38 +10:00
end
2015-01-05 18:51:45 +01:00
context " .update " do
it " ignore name change on automatic group " do
xhr :put , :update , id : 1 , name : " WAT " , visible : " true "
2015-01-09 14:04:02 -03:00
expect ( response ) . to be_success
2015-01-05 18:51:45 +01:00
group = Group . find ( 1 )
2015-01-09 14:04:02 -03:00
expect ( group . name ) . not_to eq ( " WAT " )
expect ( group . visible ) . to eq ( true )
2015-01-05 18:51:45 +01:00
end
2013-05-08 15:20:38 +10:00
end
2013-05-09 11:33:56 +10:00
2015-01-05 18:51:45 +01:00
context " .destroy " do
2013-07-21 22:37:01 -04:00
it " returns a 422 if the group is automatic " do
group = Fabricate ( :group , automatic : true )
xhr :delete , :destroy , id : group . id
2015-01-09 14:04:02 -03:00
expect ( response . status ) . to eq ( 422 )
expect ( Group . where ( id : group . id ) . count ) . to eq ( 1 )
2013-07-21 22:37:01 -04:00
end
it " is able to destroy a non-automatic group " do
group = Fabricate ( :group )
xhr :delete , :destroy , id : group . id
2015-01-09 14:04:02 -03:00
expect ( response . status ) . to eq ( 200 )
expect ( Group . where ( id : group . id ) . count ) . to eq ( 0 )
2013-07-21 22:37:01 -04:00
end
2015-01-05 18:51:45 +01:00
2013-05-09 11:33:56 +10:00
end
2015-01-05 18:51:45 +01:00
context " .refresh_automatic_groups " do
2013-05-09 11:33:56 +10:00
2015-01-05 18:51:45 +01:00
it " is able to refresh automatic groups " do
Group . expects ( :refresh_automatic_groups! ) . returns ( true )
2013-07-24 00:00:17 -04:00
2015-01-05 18:51:45 +01:00
xhr :post , :refresh_automatic_groups
2015-01-09 14:04:02 -03:00
expect ( response . status ) . to eq ( 200 )
2013-07-24 00:00:17 -04:00
end
2013-05-09 11:33:56 +10:00
end
2015-01-05 18:51:45 +01:00
context " .add_members " do
2014-11-20 09:29:56 -08:00
2015-01-05 18:51:45 +01:00
it " cannot add members to automatic groups " do
2015-01-21 20:52:48 +01:00
xhr :put , :add_members , id : 1 , usernames : " l77t "
2015-01-09 14:04:02 -03:00
expect ( response . status ) . to eq ( 422 )
2015-01-05 18:51:45 +01:00
end
it " is able to add several members to a group " do
2014-11-20 09:29:56 -08:00
user1 = Fabricate ( :user )
user2 = Fabricate ( :user )
2015-01-05 18:51:45 +01:00
group = Fabricate ( :group )
2014-11-20 09:29:56 -08:00
2015-01-21 20:52:48 +01:00
xhr :put , :add_members , id : group . id , usernames : [ user1 . username , user2 . username ] . join ( " , " )
2014-11-20 09:29:56 -08:00
2015-01-09 14:04:02 -03:00
expect ( response ) . to be_success
2014-11-20 09:29:56 -08:00
group . reload
2015-01-09 14:04:02 -03:00
expect ( group . users . count ) . to eq ( 2 )
2014-11-20 09:29:56 -08:00
end
2015-01-05 18:51:45 +01:00
end
context " .remove_member " do
it " cannot remove members from automatic groups " do
2015-01-21 20:52:48 +01:00
xhr :put , :remove_member , id : 1 , user_id : 42
2015-01-09 14:04:02 -03:00
expect ( response . status ) . to eq ( 422 )
2015-01-05 18:51:45 +01:00
end
it " is able to remove a member " do
group = Fabricate ( :group )
user = Fabricate ( :user )
group . add ( user )
group . save
2015-01-21 20:52:48 +01:00
xhr :delete , :remove_member , id : group . id , user_id : user . id
2015-01-05 18:51:45 +01:00
2015-01-09 14:04:02 -03:00
expect ( response ) . to be_success
2015-01-05 18:51:45 +01:00
group . reload
2015-01-09 14:04:02 -03:00
expect ( group . users . count ) . to eq ( 0 )
2014-11-20 09:29:56 -08:00
end
2015-01-05 18:51:45 +01:00
2013-05-09 11:33:56 +10:00
end
2015-01-05 18:51:45 +01:00
2013-05-08 15:20:38 +10:00
end