thoughtbot--shoulda-matchers/spec/acceptance/active_model_integration_sp...

80 lines
2.1 KiB
Ruby

require 'acceptance_spec_helper'
describe 'shoulda-matchers integrates with an ActiveModel project' do
before do
create_active_model_project
write_file 'lib/user.rb', <<-FILE
require 'active_model'
class User
include ActiveModel::Validations
attr_accessor :gender
validates :gender, inclusion: { in: %w(male female) }
end
FILE
write_file 'spec/user_spec.rb', <<-FILE
require 'spec_helper'
require 'user'
include Shoulda::Matchers::ActiveModel
describe User do
context 'when gender is valid' do
it { is_expected.to validate_inclusion_of(:gender).in_array(%w(male female)) }
end
context 'when gender is invalid' do
it { is_expected.to validate_inclusion_of(:gender).in_array(%w(transgender female)) }
end
end
FILE
write_file 'load_dependencies.rb', <<-FILE
require 'active_model'
require 'shoulda-matchers'
puts ActiveModel::VERSION::STRING
puts "Loaded all dependencies without errors"
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_model'
require 'shoulda-matchers'
Shoulda::Matchers.configure do |config|
config.integrate do |with|
with.test_framework :rspec
with.library :active_model
end
end
FILE
end
end
context 'when using active model library' do
it 'and loads without errors' do
result = run_command_within_bundle('ruby load_dependencies.rb')
expect(result).to have_output('Loaded all dependencies without errors')
end
it 'allows use of inclusion matcher from active model library' do
result = run_rspec_tests('spec/user_spec.rb')
expect(result).to have_output('2 examples, 1 failure')
expect(result).to have_output(
'gender: ["is not included in the list"]',
)
end
end
end