From cb4f1cc89c732b751ef1d44b1839fb86e68ba0c8 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 26 Nov 2025 05:26:39 -0500 Subject: [PATCH] Improve `SessionActivation.activate` spec (#36983) --- app/models/session_activation.rb | 4 +--- spec/models/session_activation_spec.rb | 26 +++++++++++++++----------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb index d99ecf8adb..55b1428be6 100644 --- a/app/models/session_activation.rb +++ b/app/models/session_activation.rb @@ -38,9 +38,7 @@ class SessionActivation < ApplicationRecord end def activate(**) - activation = create!(**) - purge_old - activation + create!(**).tap { purge_old } end def deactivate(id) diff --git a/spec/models/session_activation_spec.rb b/spec/models/session_activation_spec.rb index 63d22f0208..036a6848cb 100644 --- a/spec/models/session_activation_spec.rb +++ b/spec/models/session_activation_spec.rb @@ -39,20 +39,24 @@ RSpec.describe SessionActivation do end describe '.activate' do - let(:options) { { user: Fabricate(:user), session_id: '1' } } + let(:user) { Fabricate :user } + let!(:session_activation) { Fabricate :session_activation, user: } - it 'calls create! and purge_old' do - allow(described_class).to receive(:create!).with(**options) - allow(described_class).to receive(:purge_old) - - described_class.activate(**options) - - expect(described_class).to have_received(:create!).with(**options) - expect(described_class).to have_received(:purge_old) + around do |example| + original = Rails.configuration.x.max_session_activations + Rails.configuration.x.max_session_activations = 1 + example.run + Rails.configuration.x.max_session_activations = original end - it 'returns an instance of SessionActivation' do - expect(described_class.activate(**options)).to be_a described_class + it 'creates a new activation and purges older ones' do + result = described_class.activate(user: user, session_id: '123') + + expect(result) + .to be_a(described_class) + .and have_attributes(session_id: '123', user:) + expect { session_activation.reload } + .to raise_error(ActiveRecord::RecordNotFound) end end