diff --git a/lib/stream-chat/client.rb b/lib/stream-chat/client.rb index 00fa892..87f47aa 100644 --- a/lib/stream-chat/client.rb +++ b/lib/stream-chat/client.rb @@ -280,6 +280,14 @@ def deactivate_user(user_id, **options) post("users/#{user_id}/deactivate", params: options) end + # Deactivates a users + sig { params(user_ids: T::Array[String], options: T.untyped).returns(StreamChat::StreamResponse) } + def deactivate_users(user_ids, **options) + raise ArgumentError, 'user_ids should not be empty' if user_ids.empty? + + post('users/deactivate', data: { user_ids: user_ids, **options }) + end + # Reactivates a deactivated user. Use deactivate_user to deactivate a user. sig { params(user_id: String, options: T.untyped).returns(StreamChat::StreamResponse) } def reactivate_user(user_id, **options) diff --git a/spec/client_spec.rb b/spec/client_spec.rb index d5b394d..5112eec 100644 --- a/spec/client_spec.rb +++ b/spec/client_spec.rb @@ -169,6 +169,20 @@ def loop_times(times) expect(response['user']['id']).to eq(@random_user[:id]) end + it 'deactivates multiple users' do + response = @client.deactivate_users([@random_users[0][:id], @random_users[1][:id]]) + expect(response).to include 'task_id' + expect(response['task_id']).not_to be_empty + end + + it 'raises an error if user_ids is not an array' do + expect { @client.deactivate_users('not an array') }.to raise_error(TypeError) + end + + it 'raises an error if user_ids is empty' do + expect { @client.deactivate_users([]) }.to raise_error(ArgumentError) + end + it 'reactivates a user' do @client.deactivate_user(@random_user[:id]) response = @client.reactivate_user(@random_user[:id])