From c09b8a716473ff251ecd81fe6050a38133ddabb0 Mon Sep 17 00:00:00 2001 From: Matt Jankowski Date: Wed, 13 Mar 2024 10:11:23 -0400 Subject: [PATCH] Add `Account.without_internal` scope (#29559) Co-authored-by: Claire --- app/controllers/application_controller.rb | 2 +- app/helpers/application_helper.rb | 2 +- app/models/account.rb | 1 + spec/models/account_spec.rb | 8 ++++---- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index a046ea19c9..8ba10d64c0 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -129,7 +129,7 @@ class ApplicationController < ActionController::Base end def single_user_mode? - @single_user_mode ||= Rails.configuration.x.single_user_mode && Account.where('id > 0').exists? + @single_user_mode ||= Rails.configuration.x.single_user_mode && Account.without_internal.exists? end def use_seamless_external_login? diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 4f7f66985d..a4f92743c5 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -213,7 +213,7 @@ module ApplicationHelper state_params[:moved_to_account] = current_account.moved_to_account end - state_params[:owner] = Account.local.without_suspended.where('id > 0').first if single_user_mode? + state_params[:owner] = Account.local.without_suspended.without_internal.first if single_user_mode? json = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(state_params), serializer: InitialStateSerializer).to_json # rubocop:disable Rails/OutputSafety diff --git a/app/models/account.rb b/app/models/account.rb index d627fd6b64..0a4c0f3478 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -111,6 +111,7 @@ class Account < ApplicationRecord normalizes :username, with: ->(username) { username.squish } + scope :without_internal, -> { where(id: 1...) } scope :remote, -> { where.not(domain: nil) } scope :local, -> { where(domain: nil) } scope :partitioned, -> { order(Arel.sql('row_number() over (partition by domain)')) } diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb index f6376eb36e..bdb33e53ce 100644 --- a/spec/models/account_spec.rb +++ b/spec/models/account_spec.rb @@ -888,7 +888,7 @@ RSpec.describe Account do { username: 'b', domain: 'b' }, ].map(&method(:Fabricate).curry(2).call(:account)) - expect(described_class.where('id > 0').alphabetic).to eq matches + expect(described_class.without_internal.alphabetic).to eq matches end end @@ -939,7 +939,7 @@ RSpec.describe Account do it 'returns an array of accounts who do not have a domain' do local_account = Fabricate(:account, domain: nil) _account_with_domain = Fabricate(:account, domain: 'example.com') - expect(described_class.where('id > 0').local).to contain_exactly(local_account) + expect(described_class.without_internal.local).to contain_exactly(local_account) end end @@ -950,14 +950,14 @@ RSpec.describe Account do matches[index] = Fabricate(:account, domain: matches[index]) end - expect(described_class.where('id > 0').partitioned).to match_array(matches) + expect(described_class.without_internal.partitioned).to match_array(matches) end end describe 'recent' do it 'returns a relation of accounts sorted by recent creation' do matches = Array.new(2) { Fabricate(:account) } - expect(described_class.where('id > 0').recent).to match_array(matches) + expect(described_class.without_internal.recent).to match_array(matches) end end