Fix exception raised by ActiveSupport Object#in? (#1405)
This commit is contained in:
parent
e1d622c09d
commit
cd71a958a7
|
@ -327,8 +327,8 @@ validation for you? Instead of using `validate_presence_of`, try
|
|||
end
|
||||
|
||||
def collection_association?
|
||||
association? && association_reflection.macro.in?(
|
||||
[:has_many, :has_and_belongs_to_many],
|
||||
association? && [:has_many, :has_and_belongs_to_many].include?(
|
||||
association_reflection.macro,
|
||||
)
|
||||
end
|
||||
|
||||
|
|
|
@ -0,0 +1,89 @@
|
|||
require 'acceptance_spec_helper'
|
||||
|
||||
describe 'shoulda-matchers integrates with active record' do
|
||||
before do
|
||||
create_active_record_project
|
||||
|
||||
write_file 'Rakefile', <<-FILE
|
||||
require 'active_record'
|
||||
require 'sqlite3'
|
||||
|
||||
namespace :db do
|
||||
desc 'Create the database'
|
||||
task :create do
|
||||
File.unlink 'test.sqlite3' if File.exist?('test.sqlite3')
|
||||
db = SQLite3::Database.new('test.sqlite3')
|
||||
db.execute("CREATE TABLE users (id integer)")
|
||||
db.execute("CREATE TABLE profiles (id integer, user_id integer)")
|
||||
end
|
||||
end
|
||||
FILE
|
||||
|
||||
run_rake_tasks!('db:create')
|
||||
|
||||
write_file 'lib/user.rb', <<-FILE
|
||||
require 'active_record'
|
||||
|
||||
class User < ActiveRecord::Base
|
||||
end
|
||||
FILE
|
||||
|
||||
write_file 'lib/profile.rb', <<-FILE
|
||||
require 'active_record'
|
||||
require 'user'
|
||||
|
||||
class Profile < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
validates_presence_of :user
|
||||
end
|
||||
FILE
|
||||
|
||||
write_file 'spec/profile_spec.rb', <<-FILE
|
||||
require 'spec_helper'
|
||||
require 'profile'
|
||||
|
||||
describe Profile, type: :model do
|
||||
it { should validate_presence_of(:user) }
|
||||
end
|
||||
FILE
|
||||
|
||||
updating_bundle do
|
||||
add_rspec_to_project
|
||||
add_shoulda_matchers_to_project(
|
||||
manually: true,
|
||||
with_configuration: false,
|
||||
)
|
||||
|
||||
write_file 'spec/spec_helper.rb', <<-FILE
|
||||
require 'active_record'
|
||||
require 'shoulda-matchers'
|
||||
|
||||
RSpec.configure do |config|
|
||||
config.before(:suite) do
|
||||
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: 'test.sqlite3')
|
||||
end
|
||||
end
|
||||
|
||||
Shoulda::Matchers.configure do |config|
|
||||
config.integrate do |with|
|
||||
with.test_framework :rspec
|
||||
|
||||
with.library :active_record
|
||||
with.library :active_model
|
||||
end
|
||||
end
|
||||
FILE
|
||||
end
|
||||
end
|
||||
|
||||
context 'when using both active_record and active_model libraries' do
|
||||
it 'allows the use of matchers from both libraries' do
|
||||
result = run_rspec_tests('spec/profile_spec.rb')
|
||||
|
||||
expect(result).to have_output('1 example, 0 failures')
|
||||
expect(result).to have_output(
|
||||
'is expected to validate that :user cannot be empty/falsy',
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,4 +1,5 @@
|
|||
require_relative 'helpers/active_model_helpers'
|
||||
require_relative 'helpers/active_record_helpers'
|
||||
require_relative 'helpers/base_helpers'
|
||||
require_relative 'helpers/command_helpers'
|
||||
require_relative 'helpers/gem_helpers'
|
||||
|
@ -20,6 +21,7 @@ module AcceptanceTests
|
|||
end
|
||||
|
||||
include ActiveModelHelpers
|
||||
include ActiveRecordHelpers
|
||||
include BaseHelpers
|
||||
include CommandHelpers
|
||||
include GemHelpers
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
require_relative 'gem_helpers'
|
||||
|
||||
module AcceptanceTests
|
||||
module ActiveRecordHelpers
|
||||
include GemHelpers
|
||||
|
||||
def active_record_version
|
||||
bundle_version_of('activerecord')
|
||||
end
|
||||
end
|
||||
end
|
|
@ -17,6 +17,19 @@ module AcceptanceTests
|
|||
add_gem 'activemodel', active_model_version
|
||||
end
|
||||
|
||||
def create_active_record_project
|
||||
create_generic_bundler_project
|
||||
add_gem 'activemodel', active_model_version
|
||||
add_gem 'activerecord', active_record_version
|
||||
add_gem 'rake'
|
||||
|
||||
if rails_version =~ '~> 6.0'
|
||||
add_gem 'sqlite3', '~>1.4'
|
||||
else
|
||||
add_gem 'sqlite3', '~>1.3.6'
|
||||
end
|
||||
end
|
||||
|
||||
def create_generic_bundler_project
|
||||
fs.clean
|
||||
fs.create
|
||||
|
|
Loading…
Reference in New Issue