90 lines
2.2 KiB
Ruby
90 lines
2.2 KiB
Ruby
|
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
|