Skip to content

Commit 2116bdb

Browse files
committed
fix: fixed tests
1 parent e20768d commit 2116bdb

2 files changed

Lines changed: 36 additions & 25 deletions

File tree

lib/stream-chat/channel_batch_updater.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ def add_members(filter, members)
3333

3434
# removeMembers - Remove members from channels matching the filter
3535
# @param filter [StringKeyHash] Filter to select channels
36-
# @param members [T::Array[String]] Member IDs to remove
36+
# @param members [T::Array[StringKeyHash]] Members to remove (each with user_id key)
3737
# @return [StreamChat::StreamResponse] The server response
38-
sig { params(filter: StringKeyHash, members: T::Array[String]).returns(StreamChat::StreamResponse) }
38+
sig { params(filter: StringKeyHash, members: T::Array[StringKeyHash]).returns(StreamChat::StreamResponse) }
3939
def remove_members(filter, members)
4040
@client.update_channels_batch(
4141
{
@@ -136,9 +136,9 @@ def show(filter)
136136

137137
# archive - Archive channels matching the filter for specified members
138138
# @param filter [StringKeyHash] Filter to select channels
139-
# @param members [T::Array[String]] Member IDs to archive the channels for
139+
# @param members [T::Array[StringKeyHash]] Members to archive channels for (each with user_id key)
140140
# @return [StreamChat::StreamResponse] The server response
141-
sig { params(filter: StringKeyHash, members: T::Array[String]).returns(StreamChat::StreamResponse) }
141+
sig { params(filter: StringKeyHash, members: T::Array[StringKeyHash]).returns(StreamChat::StreamResponse) }
142142
def archive(filter, members)
143143
@client.update_channels_batch(
144144
{
@@ -151,9 +151,9 @@ def archive(filter, members)
151151

152152
# unarchive - Unarchive channels matching the filter for specified members
153153
# @param filter [StringKeyHash] Filter to select channels
154-
# @param members [T::Array[String]] Member IDs to unarchive the channels for
154+
# @param members [T::Array[StringKeyHash]] Members to unarchive channels for (each with user_id key)
155155
# @return [StreamChat::StreamResponse] The server response
156-
sig { params(filter: StringKeyHash, members: T::Array[String]).returns(StreamChat::StreamResponse) }
156+
sig { params(filter: StringKeyHash, members: T::Array[StringKeyHash]).returns(StreamChat::StreamResponse) }
157157
def unarchive(filter, members)
158158
@client.update_channels_batch(
159159
{

spec/channel_batch_updater_spec.rb

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,31 @@ def loop_times(times)
1818
end
1919
end
2020

21+
def rate_limit_error?(task)
22+
result = task['result']
23+
return false unless result.is_a?(Hash)
24+
25+
description = result['description']
26+
return false unless description.is_a?(String)
27+
28+
description.downcase.include?('rate limit')
29+
end
30+
31+
def fetch_task_with_retry(task_id, attempt)
32+
@client.get_task(task_id)
33+
rescue StandardError => e
34+
raise e if attempt >= 10
35+
36+
sleep(1)
37+
nil
38+
end
39+
2140
def wait_for_task(task_id, timeout_seconds: 120)
2241
sleep(2) # Initial delay
2342

2443
timeout_seconds.times do |i|
25-
begin
26-
task = @client.get_task(task_id)
27-
rescue StandardError => e
28-
if i < 10
29-
sleep(1)
30-
next
31-
end
32-
raise e
33-
end
44+
task = fetch_task_with_retry(task_id, i)
45+
next if task.nil?
3446

3547
expect(task['id']).to eq(task_id)
3648

@@ -40,11 +52,9 @@ def wait_for_task(task_id, timeout_seconds: 120)
4052
when 'completed'
4153
return task
4254
when 'failed'
43-
if task['result']&.dig('description')&.downcase&.include?('rate limit')
44-
sleep(2)
45-
next
46-
end
47-
raise "Task failed with result: #{task['result']}"
55+
raise "Task failed with result: #{task['result']}" unless rate_limit_error?(task)
56+
57+
sleep(2)
4858
end
4959
end
5060

@@ -108,7 +118,7 @@ def wait_for_task(task_id, timeout_seconds: 120)
108118
{
109119
operation: 'addMembers',
110120
filter: { cid: { '$in' => [@channel1.cid, @channel2.cid] } },
111-
members: [@random_users[0][:id]]
121+
members: [{ 'user_id' => @random_users[0][:id] }]
112122
}
113123
)
114124

@@ -120,7 +130,8 @@ def wait_for_task(task_id, timeout_seconds: 120)
120130
it 'adds members to channels matching filter' do
121131
updater = @client.channel_batch_updater
122132

123-
members = @random_users.map { |u| u[:id] }
133+
member_ids = @random_users.map { |u| u[:id] }
134+
members = member_ids.map { |id| { 'user_id' => id } }
124135
response = updater.add_members(
125136
{ cid: { '$in' => [@channel1.cid, @channel2.cid] } },
126137
members
@@ -136,7 +147,7 @@ def wait_for_task(task_id, timeout_seconds: 120)
136147
ch1_state = @channel1.query
137148
ch1_member_ids = ch1_state['members'].map { |m| m['user_id'] }
138149

139-
members.each do |member_id|
150+
member_ids.each do |member_id|
140151
expect(ch1_member_ids).to include(member_id)
141152
end
142153
end
@@ -174,7 +185,7 @@ def wait_for_task(task_id, timeout_seconds: 120)
174185

175186
response = updater.remove_members(
176187
{ cid: { '$in' => [@channel1.cid, @channel2.cid] } },
177-
[member_to_remove]
188+
[{ 'user_id' => member_to_remove }]
178189
)
179190

180191
expect(response['task_id']).not_to be_empty
@@ -211,7 +222,7 @@ def wait_for_task(task_id, timeout_seconds: 120)
211222

212223
response = updater.archive(
213224
{ cid: { '$in' => [@channel1.cid, @channel2.cid] } },
214-
[member_to_archive]
225+
[{ 'user_id' => member_to_archive }]
215226
)
216227

217228
expect(response['task_id']).not_to be_empty

0 commit comments

Comments
 (0)