1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
require 'spec_helper'
describe Mongo::Server::Description::Inspector::PrimaryElected do
let(:listeners) do
Mongo::Event::Listeners.new
end
let(:inspection) do
described_class.new(listeners)
end
let(:address) do
Mongo::Address.new('127.0.0.1:27017')
end
describe '#run' do
let(:config) do
{
'ismaster' => false,
'secondary' => true,
'hosts' => [ '127.0.0.1:27018', '127.0.0.1:27019' ],
'setName' => 'test'
}
end
let(:description) do
Mongo::Server::Description.new(address, config, listeners)
end
let(:updated) do
Mongo::Server::Description.new(address, new_config, listeners)
end
let(:listener) do
double('listener')
end
before do
listeners.add_listener(Mongo::Event::PRIMARY_ELECTED, listener)
end
context 'when the server becomes primary' do
let(:new_config) do
{
'ismaster' => true,
'secondary' => false,
'hosts' => [ '127.0.0.1:27018', '127.0.0.1:27019' ],
'setName' => 'test'
}
end
it 'fires a primary elected event' do
expect(listener).to receive(:handle).with(updated)
inspection.run(description, updated)
end
end
context 'when the server stays the same' do
let(:new_config) do
{
'ismaster' => false,
'secondary' => true,
'hosts' => [ '127.0.0.1:27018', '127.0.0.1:27019' ],
'setName' => 'test'
}
end
it 'fires no event' do
expect(listener).to_not receive(:handle)
inspection.run(description, updated)
end
end
context 'when the server becomes mongos' do
let(:new_config) do
{
'ismaster' => true,
'secondary' => false,
'msg' => 'isdbgrid'
}
end
it 'fires a primary elected event' do
expect(listener).to receive(:handle).with(updated)
inspection.run(description, updated)
end
end
end
end
|