mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Refactor AR::Querying to extract QUERYING_METHODS
list
This makes to ease testing `QUERYING_METHODS`.
This commit is contained in:
parent
b02a6936f7
commit
a88b6f257b
2 changed files with 33 additions and 27 deletions
|
@ -2,19 +2,23 @@
|
|||
|
||||
module ActiveRecord
|
||||
module Querying
|
||||
delegate :find, :take, :take!, :first, :first!, :last, :last!, :exists?, :any?, :many?, :none?, :one?, to: :all
|
||||
delegate :second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!, to: :all
|
||||
delegate :first_or_create, :first_or_create!, :first_or_initialize, to: :all
|
||||
delegate :find_or_create_by, :find_or_create_by!, :create_or_find_by, :create_or_find_by!, :find_or_initialize_by, to: :all
|
||||
delegate :find_by, :find_by!, to: :all
|
||||
delegate :destroy_all, :delete_all, :update_all, :destroy_by, :delete_by, to: :all
|
||||
delegate :find_each, :find_in_batches, :in_batches, to: :all
|
||||
delegate :select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or,
|
||||
:where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending,
|
||||
:having, :create_with, :distinct, :references, :none, :unscope, :merge,
|
||||
:reselect, to: :all
|
||||
delegate :count, :average, :minimum, :maximum, :sum, :calculate, to: :all
|
||||
delegate :pluck, :pick, :ids, to: :all
|
||||
QUERYING_METHODS = [
|
||||
:find, :find_by, :find_by!, :take, :take!, :first, :first!, :last, :last!,
|
||||
:second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!,
|
||||
:forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!,
|
||||
:exists?, :any?, :many?, :none?, :one?,
|
||||
:first_or_create, :first_or_create!, :first_or_initialize,
|
||||
:find_or_create_by, :find_or_create_by!, :find_or_initialize_by,
|
||||
:create_or_find_by, :create_or_find_by!,
|
||||
:destroy_all, :delete_all, :update_all, :destroy_by, :delete_by,
|
||||
:find_each, :find_in_batches, :in_batches,
|
||||
:select, :reselect, :order, :reorder, :group, :limit, :offset, :joins, :left_joins, :left_outer_joins,
|
||||
:where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending, :or,
|
||||
:having, :create_with, :distinct, :references, :none, :unscope, :merge, :except,
|
||||
:count, :average, :minimum, :maximum, :sum, :calculate,
|
||||
:pluck, :pick, :ids
|
||||
].freeze # :nodoc:
|
||||
delegate(*QUERYING_METHODS, to: :all)
|
||||
|
||||
# Executes a custom SQL query against your database and returns all the results. The results will
|
||||
# be returned as an array, with the requested columns encapsulated as attributes of the model you call
|
||||
|
|
|
@ -44,26 +44,28 @@ module ActiveRecord
|
|||
end
|
||||
|
||||
class QueryingMethodsDelegationTest < ActiveRecord::TestCase
|
||||
QUERYING_METHODS = [
|
||||
:find, :take, :take!, :first, :first!, :last, :last!, :exists?, :any?, :many?, :none?, :one?,
|
||||
:second, :second!, :third, :third!, :fourth, :fourth!, :fifth, :fifth!, :forty_two, :forty_two!, :third_to_last, :third_to_last!, :second_to_last, :second_to_last!,
|
||||
:first_or_create, :first_or_create!, :first_or_initialize,
|
||||
:find_or_create_by, :find_or_create_by!, :create_or_find_by, :create_or_find_by!, :find_or_initialize_by,
|
||||
:find_by, :find_by!,
|
||||
:destroy_all, :delete_all, :update_all, :delete_by, :destroy_by,
|
||||
:find_each, :find_in_batches, :in_batches,
|
||||
:select, :group, :order, :except, :reorder, :limit, :offset, :joins, :left_joins, :left_outer_joins, :or,
|
||||
:where, :rewhere, :preload, :eager_load, :includes, :from, :lock, :readonly, :extending,
|
||||
:having, :create_with, :distinct, :references, :none, :unscope, :merge,
|
||||
:count, :average, :minimum, :maximum, :sum, :calculate,
|
||||
:pluck, :pick, :ids, :reselect,
|
||||
]
|
||||
QUERYING_METHODS =
|
||||
ActiveRecord::Batches.public_instance_methods(false) +
|
||||
ActiveRecord::Calculations.public_instance_methods(false) +
|
||||
ActiveRecord::FinderMethods.public_instance_methods(false) - [:raise_record_not_found_exception!] +
|
||||
ActiveRecord::SpawnMethods.public_instance_methods(false) - [:spawn, :merge!, :only] +
|
||||
ActiveRecord::QueryMethods.public_instance_methods(false).reject { |method|
|
||||
method.to_s.end_with?("=", "!", "value", "values", "clause")
|
||||
} - [:reverse_order, :arel, :extensions] + [
|
||||
:any?, :many?, :none?, :one?,
|
||||
:first_or_create, :first_or_create!, :first_or_initialize,
|
||||
:find_or_create_by, :find_or_create_by!, :find_or_initialize_by,
|
||||
:create_or_find_by, :create_or_find_by!,
|
||||
:destroy_all, :delete_all, :update_all, :delete_by, :destroy_by
|
||||
]
|
||||
|
||||
def test_delegate_querying_methods
|
||||
klass = Class.new(ActiveRecord::Base) do
|
||||
self.table_name = "posts"
|
||||
end
|
||||
|
||||
assert_equal QUERYING_METHODS.sort, ActiveRecord::Querying::QUERYING_METHODS.sort
|
||||
|
||||
QUERYING_METHODS.each do |method|
|
||||
assert_respond_to klass.all, method
|
||||
assert_respond_to klass, method
|
||||
|
|
Loading…
Reference in a new issue