Update and fix test kitchet to be conformant with poltergeist

This commit is contained in:
KalabiYau 2014-07-04 22:35:47 +02:00 committed by Artem Chernikov
parent 7f710ec72d
commit dbb210908b
6 changed files with 62 additions and 34 deletions

View file

@ -13,11 +13,15 @@ describe Admin::ConferenceController do
let(:participant) { create(:participant) }
shared_examples 'access as administration or organizer' do
describe 'PATCH #update' do
context 'valid attributes' do
it 'locates the requested conference' do
patch :update, id: conference.short_title, conference:
attributes_for(:conference, title: 'Example Con')
expect(assigns(:conference)).to eq(conference)
end
@ -192,7 +196,7 @@ describe Admin::ConferenceController do
describe 'administrator access' do
before(:each) do
before do
sign_in(admin)
end

View file

@ -12,6 +12,7 @@ feature Sponsor do
conference = create(:conference)
conference.sponsorship_levels << create(:sponsorship_level, conference: conference)
sign_in create(user)
visit admin_conference_sponsors_path(
conference_id: conference.short_title)
# Add sponsors
@ -36,6 +37,7 @@ feature Sponsor do
find(:css, "select[id^='conference_sponsors_attributes_']"\
"[id$='_sponsorship_level_id']").
find(:option, 'Platin').select_option
click_button 'Update Conference'
expect(flash).to eq('Sponsorships were successfully updated.')
@ -55,7 +57,7 @@ feature Sponsor do
value).to eq('http://www.example.com')
expect(find('div.nested-fields:nth-of-type(1)'\
' div:nth-of-type(5) select:nth-of-type(1)').
' div:nth-of-type(5) select:nth-of-type(1)').find('option[selected]').
text).to eq('Platin')
# Remove sponsor

View file

@ -103,9 +103,10 @@ feature Conference do
expect(find('div.vpositions div.nested-fields:nth-of-type(1)'\
' div:nth-of-type(2) textarea').
value).to eq('Example Description')
expect(find('div.vpositions div.nested-fields:nth-of-type(1)'\
' div:nth-of-type(3) select:nth-of-type(1)').
text).to eq("#{Date.today.strftime}")
' div:nth-of-type(3) select:nth-of-type(1)').find('option[selected]').
text).to eq(Date.today.strftime)
# Remove vposition
click_link 'Remove vposition'

View file

@ -5,6 +5,12 @@ ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
require 'rspec/rails'
# To avoid confusion on missed migrations - use Rails 4 checker to ensure
# all migrations applied
ActiveRecord::Migration.maintain_test_schema!
# Add poltergeist to use it as JS driver
require 'capybara/poltergeist'
# Requires supporting ruby files with custom matchers and macros, etc, in
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
@ -24,9 +30,6 @@ RSpec.configure do |config|
# config.mock_with :flexmock
# config.mock_with :rr
# Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
config.fixture_path = "#{::Rails.root}/spec/fixtures"
# If you're not using ActiveRecord, or you'd prefer not to run each of your
# examples within a transaction, remove the following line or assign false
# instead of true.
@ -38,33 +41,44 @@ RSpec.configure do |config|
# --seed 1234
config.order = 'random'
# Include factory_girls syntax
# Setting up DB cleaning to maintain empty rows
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end
# poltergeist as a underlying mech for Capybara
Capybara.javascript_driver = :poltergeist
# Includes helpers and connect them to specific types of tests
config.include FactoryGirl::Syntax::Methods
# Enables devise sign_in function
config.include OmniauthMacros
config.include Devise::TestHelpers, type: :controller
# Enables devise sign_in function
config.include Devise::TestHelpers, type: :view
# Use capybara-webkit as default javascript driver
Capybara.javascript_driver = :webkit
# Includes support/login_macros for feature tests
config.include LoginMacros, type: :feature
# Includes omniauth macro
config.include(OmniauthMacros)
# Includes support/flash for feature tests
config.include Flash, type: :feature
config.include Sidebar, type: :view
config.include Devise::TestHelpers, type: :view
# As we start from scratch in April 2014, let's forbid the old :should syntax
config.expect_with :rspec do |c|
c.syntax = :expect
end
config.use_transactional_fixtures = true
# Reuse rspec as mocking framework
config.mock_framework = :rspec
# Types of tests (controller, feature, model) will
# be inferred from subfolder name
config.infer_spec_type_from_file_location!
end
OmniAuth.config.test_mode = true

View file

@ -0,0 +1,10 @@
class ActiveRecord::Base
mattr_accessor :shared_connection
@@shared_connection = nil
def self.connection
@@shared_connection || retrieve_connection
end
end
ActiveRecord::Base.shared_connection = ActiveRecord::Base.connection

View file

@ -1,17 +1,14 @@
module LoginMacros
include Warden::Test::Helpers
Warden.test_mode!
def sign_in(user)
visit new_user_session_path
fill_in 'user_email', with: user.email
fill_in 'user_password', with: user.password
find(:xpath, "//div[@id='content']//button[@type='submit']").click
expect(page.has_content?('Signed in successfully')).to be true
login_as(user, :scope => :user)
end
def sign_out
Capybara.current_session.driver.browser.clear_cookies
visit root_path
expect(page.has_content?('Sign In')).to be true
logout(:user)
end
end