Skip to content

Commit 1df6176

Browse files
Revert "Enhance helper spec to support Async::Queue for chunk processing"
This reverts commit 41f5eb9.
1 parent 41f5eb9 commit 1df6176

File tree

1 file changed

+7
-55
lines changed

1 file changed

+7
-55
lines changed

spec/dummy/spec/helpers/react_on_rails_pro_helper_spec.rb

Lines changed: 7 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
# frozen_string_literal: true
22

3-
require "async"
4-
require "async/queue"
53
require "rails_helper"
64
require "support/script_tag_utils"
75

@@ -329,7 +327,6 @@ def response; end
329327
HTML
330328
end
331329

332-
# Mock chunks can be Async::Queue or Array
333330
def mock_request_and_response(mock_chunks = chunks, count: 1)
334331
# Reset connection instance variables to ensure clean state for tests
335332
ReactOnRailsPro::Request.instance_variable_set(:@connection, nil)
@@ -342,16 +339,9 @@ def mock_request_and_response(mock_chunks = chunks, count: 1)
342339
chunks_read.clear
343340
mock_streaming_response(%r{http://localhost:3800/bundles/[a-f0-9]{32}-test/render/[a-f0-9]{32}}, 200,
344341
count: count) do |yielder|
345-
if mock_chunks.is_a?(Async::Queue)
346-
while (chunk = mock_chunks.dequeue)
347-
chunks_read << chunk
348-
yielder.call("#{chunk.to_json}\n")
349-
end
350-
else
351-
mock_chunks.each do |chunk|
352-
chunks_read << chunk
353-
yielder.call("#{chunk.to_json}\n")
354-
end
342+
mock_chunks.each do |chunk|
343+
chunks_read << chunk
344+
yielder.call("#{chunk.to_json}\n")
355345
end
356346
end
357347
end
@@ -421,7 +411,6 @@ def mock_request_and_response(mock_chunks = chunks, count: 1)
421411
describe "stream_view_containing_react_components" do # rubocop:disable RSpec/MultipleMemoizedHelpers
422412
let(:mocked_stream) { instance_double(ActionController::Live::Buffer) }
423413
let(:written_chunks) { [] }
424-
let(:chunks_queue) { Async::Queue.new }
425414

426415
before do
427416
written_chunks.clear
@@ -439,55 +428,18 @@ def mock_request_and_response(mock_chunks = chunks, count: 1)
439428

440429
allow(mocked_stream).to receive(:write) do |chunk|
441430
written_chunks << chunk
431+
# Ensures that any chunk received is written immediately to the stream
432+
expect(written_chunks.count).to eq(chunks_read.count) # rubocop:disable RSpec/ExpectInHook
442433
end
443434
allow(mocked_stream).to receive(:close)
444435
mocked_response = instance_double(ActionDispatch::Response)
445436
allow(mocked_response).to receive(:stream).and_return(mocked_stream)
446437
allow(self).to receive(:response).and_return(mocked_response)
447-
mock_request_and_response(chunks_queue)
448-
end
449-
450-
def run_stream
451-
queue = chunks_queue
452-
Sync do |parent|
453-
parent.async do
454-
stream_view_containing_react_components(template: template_path)
455-
end
456-
457-
writer = Object.new
458-
chunks_to_write = chunks.dup
459-
writer.define_singleton_method(:write_next_chunk) do
460-
chunk = chunks_to_write.shift
461-
if chunk.nil?
462-
queue.close
463-
parent.sleep 0.05
464-
return nil
465-
end
466-
467-
queue.enqueue(chunk)
468-
parent.sleep 0.05
469-
chunk
470-
end
471-
writer.define_singleton_method(:write_rest_of_chunks) do
472-
while (chunk = chunks_to_write.shift)
473-
queue.enqueue(chunk)
474-
end
475-
parent.sleep 0.1
476-
end
477-
yield(writer)
478-
end
438+
mock_request_and_response
479439
end
480440

481441
it "writes the chunk to stream as soon as it is received" do
482-
run_stream do |writer|
483-
expect(self).to have_received(:render_to_string)
484-
485-
while writer.write_next_chunk
486-
# Ensures that any chunk received is written immediately to the stream
487-
expect(written_chunks.count).to eq(chunks_read.count)
488-
end
489-
end
490-
442+
stream_view_containing_react_components(template: template_path)
491443
expect(self).to have_received(:render_to_string).once.with(template: template_path)
492444
expect(chunks_read.count).to eq(chunks.count)
493445
expect(written_chunks.count).to eq(chunks.count)

0 commit comments

Comments
 (0)