|
|
|
@ -98,34 +98,44 @@ RSpec.describe SessionActivation do
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
context 'when id exists' do
|
|
|
|
|
let(:id) { '1' }
|
|
|
|
|
let!(:session_activation) { Fabricate(:session_activation) }
|
|
|
|
|
|
|
|
|
|
it 'calls where.destroy_all' do
|
|
|
|
|
expect(described_class).to receive_message_chain(:where, :destroy_all)
|
|
|
|
|
.with(session_id: id).with(no_args)
|
|
|
|
|
it 'destroys the record' do
|
|
|
|
|
described_class.deactivate(session_activation.session_id)
|
|
|
|
|
|
|
|
|
|
described_class.deactivate(id)
|
|
|
|
|
expect { session_activation.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe '.purge_old' do
|
|
|
|
|
it 'calls order.offset.destroy_all' do
|
|
|
|
|
expect(described_class).to receive_message_chain(:order, :offset, :destroy_all)
|
|
|
|
|
.with('created_at desc').with(Rails.configuration.x.max_session_activations).with(no_args)
|
|
|
|
|
around do |example|
|
|
|
|
|
before = Rails.configuration.x.max_session_activations
|
|
|
|
|
Rails.configuration.x.max_session_activations = 1
|
|
|
|
|
example.run
|
|
|
|
|
Rails.configuration.x.max_session_activations = before
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
let!(:oldest_session_activation) { Fabricate(:session_activation, created_at: 10.days.ago) }
|
|
|
|
|
let!(:newest_session_activation) { Fabricate(:session_activation, created_at: 5.days.ago) }
|
|
|
|
|
|
|
|
|
|
it 'preserves the newest X records based on config' do
|
|
|
|
|
described_class.purge_old
|
|
|
|
|
|
|
|
|
|
expect { oldest_session_activation.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
|
|
|
|
expect { newest_session_activation.reload }.to_not raise_error
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
describe '.exclusive' do
|
|
|
|
|
let(:id) { '1' }
|
|
|
|
|
let!(:unwanted_session_activation) { Fabricate(:session_activation) }
|
|
|
|
|
let!(:wanted_session_activation) { Fabricate(:session_activation) }
|
|
|
|
|
|
|
|
|
|
it 'calls where.destroy_all' do
|
|
|
|
|
expect(described_class).to receive_message_chain(:where, :not, :destroy_all)
|
|
|
|
|
.with(session_id: id).with(no_args)
|
|
|
|
|
it 'preserves supplied record and destroys all others' do
|
|
|
|
|
described_class.exclusive(wanted_session_activation.session_id)
|
|
|
|
|
|
|
|
|
|
described_class.exclusive(id)
|
|
|
|
|
expect { unwanted_session_activation.reload }.to raise_error(ActiveRecord::RecordNotFound)
|
|
|
|
|
expect { wanted_session_activation.reload }.to_not raise_error
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|