Skip to content

Commit

Permalink
Fix exception raised by ActiveSupport Object#in?
Browse files Browse the repository at this point in the history
  • Loading branch information
vsppedro committed Jan 30, 2021
1 parent bf850fa commit 183ac64
Show file tree
Hide file tree
Showing 5 changed files with 117 additions and 2 deletions.
Expand Up @@ -327,8 +327,8 @@ def association?
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

Expand Down
89 changes: 89 additions & 0 deletions spec/acceptance/active_record_integration_spec.rb
@@ -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
2 changes: 2 additions & 0 deletions spec/support/acceptance/helpers.rb
@@ -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'
Expand All @@ -20,6 +21,7 @@ def self.configure_example_group(example_group)
end

include ActiveModelHelpers
include ActiveRecordHelpers
include BaseHelpers
include CommandHelpers
include GemHelpers
Expand Down
11 changes: 11 additions & 0 deletions spec/support/acceptance/helpers/active_record_helpers.rb
@@ -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
13 changes: 13 additions & 0 deletions spec/support/acceptance/helpers/step_helpers.rb
Expand Up @@ -17,6 +17,19 @@ def create_active_model_project
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
Expand Down

0 comments on commit 183ac64

Please sign in to comment.