2015-10-11 10:41:23 +01:00
require 'rails_helper'
2013-05-08 15:20:38 +10:00
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 ,
2015-01-23 18:25:43 +01:00
" visible " = > true ,
2015-01-23 20:31:48 +01:00
" automatic_membership_email_domains " = > nil ,
2015-04-10 12:17:28 +10:00
" automatic_membership_retroactive " = > false ,
" title " = > nil ,
2015-09-01 16:52:05 -04:00
" primary_group " = > false ,
2015-12-07 12:39:28 +01:00
" grant_trust_level " = > nil ,
2015-12-14 23:17:09 +01:00
" incoming_email " = > nil ,
2016-01-27 23:40:45 +11:00
" notification_level " = > 2 ,
2016-03-02 23:48:17 +05:30
" has_messages " = > false ,
2016-07-09 00:50:04 +05:30
" is_member " = > true ,
2016-03-02 23:48:17 +05:30
" mentionable " = > false
2015-01-09 14:04:02 -03:00
} ] )
2015-01-05 18:51:45 +01:00
end
end
2015-10-26 15:56:59 -04:00
context " .bulk " do
it " can assign users to a group by email or username " do
group = Fabricate ( :group , name : " test " , primary_group : true , title : 'WAT' )
user = Fabricate ( :user )
user2 = Fabricate ( :user )
xhr :put , :bulk_perform , group_id : group . id , users : [ user . username . upcase , user2 . email , 'doesnt_exist' ]
expect ( response ) . to be_success
user . reload
expect ( user . primary_group ) . to eq ( group )
expect ( user . title ) . to eq ( " WAT " )
user2 . reload
expect ( user2 . primary_group ) . to eq ( group )
end
end
2015-01-05 18:51:45 +01:00
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
2015-01-23 18:25:43 +01:00
it " doesn't launch the 'automatic group membership' job when it's not retroactive " do
Jobs . expects ( :enqueue ) . never
2015-04-10 12:17:28 +10:00
group = Fabricate ( :group )
xhr :put , :update , id : group . id , automatic_membership_retroactive : " false "
2015-01-23 18:25:43 +01:00
expect ( response ) . to be_success
end
it " launches the 'automatic group membership' job when it's retroactive " do
2015-04-10 12:17:28 +10:00
group = Fabricate ( :group )
Jobs . expects ( :enqueue ) . with ( :automatic_group_membership , group_id : group . id )
xhr :put , :update , id : group . id , automatic_membership_retroactive : " true "
2015-01-23 18:25:43 +01:00
expect ( response ) . to be_success
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
2014-11-20 09:29:56 -08:00
2015-01-05 18:51:45 +01:00
2013-05-08 15:20:38 +10:00
end