multiple multile-values auto emit spec

This commit is contained in:
Colin Surprenant 2011-11-16 11:02:28 -05:00
parent d270962748
commit 9e6fe10f9f
1 changed files with 33 additions and 2 deletions

View File

@ -297,7 +297,7 @@ describe RedStorm::SimpleBolt do
class RedStorm::Values; end
it "should auto single emit on single value output" do
it "should auto emit on single value output" do
class Bolt1 < RedStorm::SimpleBolt
on_receive {|tuple| tuple}
end
@ -326,7 +326,7 @@ describe RedStorm::SimpleBolt do
bolt.execute("output")
end
it "should auto single emit on multiple value output" do
it "should auto emit on single multiple-value output" do
class Bolt1 < RedStorm::SimpleBolt
on_receive {|tuple| tuple}
end
@ -355,6 +355,37 @@ describe RedStorm::SimpleBolt do
bolt.execute(["output1", "output2"])
end
it "should auto emit on multiple multiple-value output" do
class Bolt1 < RedStorm::SimpleBolt
on_receive {|tuple| tuple}
end
class Bolt2 < RedStorm::SimpleBolt
on_receive :my_method
def my_method(tuple); tuple; end
end
class Bolt3 < RedStorm::SimpleBolt
def on_receive(tuple); tuple; end
end
collector = mock("Collector")
RedStorm::Values.should_receive(:new).with("output1", "output2").exactly(3).times.and_return("values1")
RedStorm::Values.should_receive(:new).with("output3", "output4").exactly(3).times.and_return("values2")
collector.should_receive(:emit).with("values1").exactly(3).times
collector.should_receive(:emit).with("values2").exactly(3).times
bolt = Bolt1.new
bolt.prepare(nil, nil, collector)
bolt.execute([["output1", "output2"], ["output3", "output4"]])
bolt = Bolt2.new
bolt.prepare(nil, nil, collector)
bolt.execute([["output1", "output2"], ["output3", "output4"]])
bolt = Bolt3.new
bolt.prepare(nil, nil, collector)
bolt.execute([["output1", "output2"], ["output3", "output4"]])
end
it "should anchor on single value output" do
class Bolt1 < RedStorm::SimpleBolt
on_receive :anchor => true do |tuple|