Commit 5c3ca746 authored by Toon Claes's avatar Toon Claes

More the specs more robust

By actually checking if it deletes the correct Geo Event Log events.
parent f56731fc
......@@ -31,7 +31,7 @@ module Geo
end
log_info('Delete Geo Event Log entries up to id', geo_event_log_id: cursor_last_event_ids.min)
Geo::EventLog.delete_all(['id < ?', cursor_last_event_ids.min])
Geo::EventLog.where('id < ?', cursor_last_event_ids.min).delete_all
end
end
end
......
......@@ -43,10 +43,11 @@ describe Geo::PruneEventLogWorker, :geo do
end
it 'deletes everything from the Geo event log' do
create_list(:geo_event_log, 2)
expect(worker).to receive(:log_info).with('No secondary nodes, delete all Geo Event Log entries')
expect(Geo::EventLog).to receive(:delete_all)
worker.perform
expect { worker.perform }.to change { Geo::EventLog.count }.by(-2)
end
end
......@@ -64,28 +65,29 @@ describe Geo::PruneEventLogWorker, :geo do
it 'contacts all secondary nodes for their status' do
expect(node_status_service).to receive(:call).twice { healthy_status }
expect(worker).to receive(:log_info).with('Delete Geo Event Log entries up to id', anything)
expect(Geo::EventLog).to receive(:delete_all)
worker.perform
end
it 'aborts when there are unhealthy nodes' do
create_list(:geo_event_log, 2)
expect(node_status_service).to receive(:call).twice.and_return(healthy_status, unhealthy_status)
expect(worker).to receive(:log_info).with('Could not get status of all nodes, not deleting any entries from Geo Event Log', unhealthy_node_count: 1)
expect(Geo::EventLog).not_to receive(:delete_all)
worker.perform
expect { worker.perform }.not_to change { Geo::EventLog.count }
end
it 'takes the integer-minimum value of all nodes' do
it 'takes the integer-minimum value of all cursor_last_event_ids' do
events = create_list(:geo_event_log, 12)
allow(node_status_service).to receive(:call).twice.and_return(
build(:geo_node_status, :healthy, cursor_last_event_id: 3),
build(:geo_node_status, :healthy, cursor_last_event_id: 10)
build(:geo_node_status, :healthy, cursor_last_event_id: events[3]),
build(:geo_node_status, :healthy, cursor_last_event_id: events.last)
)
expect(worker).to receive(:log_info).with('Delete Geo Event Log entries up to id', geo_event_log_id: 3)
expect(Geo::EventLog).to receive(:delete_all).with(['id < ?', 3])
expect(worker).to receive(:log_info).with('Delete Geo Event Log entries up to id', geo_event_log_id: events[3])
worker.perform
expect { worker.perform }.to change { Geo::EventLog.count }.by(-3)
end
end
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment