Sha256: b34c0e0fda639cefeff00a1926de65eea121790554a823a6771746d09af7e97f

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

require 'test_helper'

class BackrubRedisTest < MiniTest::Unit::TestCase
  def setup
    @backlog = 20
    @config = {}
    @store = Backrub::Store::Redis.new(@config, @backlog)
    @redis = @store.redis
  end

  def test_backlog
    backlog = 20.times.map {|n| "a" * (n+1)}
    channel = "test"
    count = 5
    @redis.expects(:lrange).with(channel, 0, count - 1).returns(backlog[0...count])

    received_backlog = []

    @store.backlog(channel, count) do |channel, message|
      received_backlog << message
    end

    assert_equal backlog[0...count].reverse, received_backlog
  end

  def test_publishing
    channel = "test"
    message = "data"
    @redis.expects(:publish).with(channel, message)
    @redis.expects(:lpush).with(channel, message)
    @redis.expects(:ltrim).with(channel, 0, @backlog - 1)

    @store.publish(channel, message)
  end

  def test_subscribing
    test_messages = [["test", "data"], ["test2", "data2"]]

    mock_redis = mock()
    mock_message_handler = mock()
    mock_message_handler.expects(:message).multiple_yields(*test_messages)
    mock_redis.expects(:subscribe).with("test", "test2").yields(mock_message_handler)
    mock_redis.expects(:quit)
    ::Redis.expects(:new).returns(mock_redis)

    @store.subscribe("test", "test2") do |channel, message|
      assert_equal test_messages.shift, [channel, message]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
backrub-2.0.0 test/backrub/store/redis_test.rb