Sha256: c62d30b8559306bf1a88d83843c7311e6a65ef3763248eb9119afe6308891c35
Contents?: true
Size: 1.97 KB
Versions: 5
Compression:
Stored size: 1.97 KB
Contents
require 'spec_helper' describe "Publishing an event in the future" do before(:each) do Timecop.freeze(now) allow(QueueBus).to receive(:generate_uuid).and_return("idfhlkj") end after(:each) do Timecop.return end let(:delayed_attrs) { { "bus_delayed_until" => future.to_i, "bus_id" => "#{now.to_i}-idfhlkj", "bus_app_hostname" => `hostname 2>&1`.strip.sub(/.local/,'')} } let(:bus_attrs) { delayed_attrs.merge({"bus_published_at" => worktime.to_i})} let(:now) { Time.parse("01/01/2013 5:00")} let(:future) { Time.at(now.to_i + 60) } let(:worktime) {Time.at(future.to_i + 1)} it "should add it to Redis then to the real queue" do hash = {:one => 1, "two" => "here", "id" => 12 } event_name = "event_name" QueueBus.publish_at(future, event_name, hash) schedule = QueueBus.redis { |redis| redis.zrange("delayed_queue_schedule", 0, 1) } expect(schedule).to eq([future.to_i.to_s]) val = QueueBus.redis { |redis| redis.lpop("delayed:#{future.to_i}") } hash = JSON.parse(val) expect(hash["class"]).to eq("QueueBus::Worker") expect(hash["args"].size).to eq(1) expect(JSON.parse(hash["args"].first)).to eq({"bus_class_proxy"=>"QueueBus::Publisher", "bus_event_type"=>"event_name", "two"=>"here", "one"=>1, "id" => 12}.merge(delayed_attrs)) expect(hash["queue"]).to eq("bus_incoming") val = QueueBus.redis { |redis| redis.lpop("queue:bus_incoming") } expect(val).to eq(nil) # nothing really added Timecop.freeze(worktime) QueueBus::Publisher.perform(JSON.parse(hash["args"].first)) val = QueueBus.redis { |redis| redis.lpop("queue:bus_incoming") } hash = JSON.parse(val) expect(hash["class"]).to eq("QueueBus::Worker") expect(hash["args"].size).to eq(1) expect(JSON.parse(hash["args"].first)).to eq({"bus_class_proxy"=>"QueueBus::Driver", "bus_event_type"=>"event_name", "two"=>"here", "one"=>1, "id" => 12}.merge(bus_attrs)) end end
Version data entries
5 entries across 5 versions & 1 rubygems