spec/core/heartbeat_spec.rb (60 lines of code) (raw):

require 'core/heartbeat' require 'connectors/connector_status' describe Core::Heartbeat do describe '.send' do let(:connector_settings) { double } let(:connector_instance) { double } let(:connector_id) { '123' } let(:service_type) { 'mongo' } let(:configured) { false } let(:is_healthy) { true } let(:configuration) { {} } before(:each) do allow(Core::ElasticConnectorActions).to receive(:update_connector_fields) allow(Connectors::REGISTRY).to receive(:connector).and_return(connector_instance) allow(connector_settings).to receive(:id).and_return(connector_id) allow(connector_settings).to receive(:service_type).and_return(service_type) allow(connector_settings).to receive(:connector_status_allows_sync?).and_return(configured) allow(connector_settings).to receive(:configuration).and_return(configuration) allow(connector_instance).to receive(:is_healthy?).and_return(is_healthy) end describe '.send' do it 'updates last_seen' do expect(Core::ElasticConnectorActions).to receive(:update_connector_fields).with(connector_id, hash_including(:last_seen => anything)) described_class.send(connector_settings) end context 'when it is configured' do let(:configured) { true } context 'when remote source is up' do let(:is_healthy) { true } it 'updates status' do expect(Core::ElasticConnectorActions) .to receive(:update_connector_fields) .with( connector_id, hash_including( :status => Connectors::ConnectorStatus::CONNECTED ) ) described_class.send(connector_settings) end end context 'when remote source is down' do let(:is_healthy) { false } it 'updates status' do expect(Core::ElasticConnectorActions) .to receive(:update_connector_fields) .with( connector_id, hash_including( :status => Connectors::ConnectorStatus::ERROR, :error => /Health check for 3d party service failed/ ) ) described_class.send(connector_settings) end end end end end end