2016-03-08 00:52:19 +00:00
# frozen_string_literal: true
2010-09-17 23:56:32 +00:00
require 'spec_helper'
2009-12-31 18:51:22 +00:00
2014-04-03 17:25:03 +00:00
RSpec . describe Capybara do
2015-04-14 20:56:30 +00:00
describe 'default_max_wait_time' do
2009-12-31 18:51:22 +00:00
after do
2015-04-14 20:56:30 +00:00
Capybara . default_max_wait_time = @previous_default_time
2009-12-31 18:51:22 +00:00
end
2010-09-15 16:19:25 +00:00
2009-12-31 18:51:22 +00:00
it " should be changeable " do
2015-04-14 20:56:30 +00:00
@previous_default_time = Capybara . default_max_wait_time
Capybara . default_max_wait_time = 5
expect ( Capybara . default_max_wait_time ) . to eq ( 5 )
end
it " should be accesible as the deprecated default_wait_time " do
expect_any_instance_of ( Kernel ) . to receive ( :warn ) . once . with ( 'DEPRECATED: #default_wait_time= is deprecated, please use #default_max_wait_time= instead' )
expect_any_instance_of ( Kernel ) . to receive ( :warn ) . once . with ( 'DEPRECATED: #default_wait_time is deprecated, please use #default_max_wait_time instead' )
@previous_default_time = Capybara . default_max_wait_time
2009-12-31 18:51:22 +00:00
Capybara . default_wait_time = 5
2013-11-14 17:43:36 +00:00
expect ( Capybara . default_wait_time ) . to eq ( 5 )
2015-04-14 20:56:30 +00:00
expect ( Capybara . default_max_wait_time ) . to eq ( 5 )
2009-12-31 18:51:22 +00:00
end
end
2010-07-29 13:20:11 +00:00
describe '.register_driver' do
it " should add a new driver " do
Capybara . register_driver :schmoo do | app |
2011-04-08 15:14:05 +00:00
Capybara :: RackTest :: Driver . new ( app )
2010-07-29 13:20:11 +00:00
end
session = Capybara :: Session . new ( :schmoo , TestApp )
session . visit ( '/' )
2013-11-14 17:43:36 +00:00
expect ( session . body ) . to include ( " Hello world! " )
2010-07-29 13:20:11 +00:00
end
end
2010-09-15 16:19:25 +00:00
2016-02-16 21:37:17 +00:00
describe '.register_server' do
before do
Capybara . reuse_server = false
@old_server = Capybara . server
end
after do
Capybara . server ( & @old_server )
Capybara . reuse_server = true
end
it " should add a new server " do
2016-10-14 02:50:03 +00:00
skip " JRuby fails this because of path issues to geckodriver I think. Its tested in other runs - not worth figuring out at this time " if RUBY_PLATFORM == 'java'
require 'rack/handler/webrick'
2016-02-16 21:37:17 +00:00
Capybara . register_server :blob do | app , port , host |
2016-10-04 18:10:29 +00:00
Rack :: Handler :: WEBrick . run ( app , Host : host , Port : port , AccessLog : [ ] , Logger : WEBrick :: Log :: new ( nil , 0 ) )
2016-02-16 21:37:17 +00:00
end
Capybara . server = :blob
2016-10-14 02:50:03 +00:00
session = Capybara :: Session . new ( :selenium , TestApp . new )
2016-02-16 21:37:17 +00:00
session . visit ( '/' )
expect ( session . body ) . to include ( " Hello world! " )
end
end
2010-10-28 02:53:59 +00:00
describe " .server " do
2016-02-16 21:37:17 +00:00
before do
@old_server = Capybara . server
end
2010-10-28 02:53:59 +00:00
after do
2016-02-16 21:37:17 +00:00
Capybara . server ( & @old_server )
2010-10-28 02:53:59 +00:00
end
it " should default to a proc that calls run_default_server " do
2013-09-27 11:39:05 +00:00
mock_app = double ( 'app' )
2013-11-14 17:43:36 +00:00
expect ( Capybara ) . to receive ( :run_default_server ) . with ( mock_app , 8000 )
2010-10-28 02:53:59 +00:00
Capybara . server . call ( mock_app , 8000 )
end
it " should return a custom server proc " do
server = lambda { | app , port | }
Capybara . server ( & server )
2013-11-14 17:43:36 +00:00
expect ( Capybara . server ) . to eq ( server )
2010-10-28 02:53:59 +00:00
end
end
2016-05-06 17:15:59 +00:00
describe 'app_host' do
after do
Capybara . app_host = nil
end
it " should warn if not a valid URL " do
expect { Capybara . app_host = " www.example.com " } . to raise_error ( ArgumentError , / Capybara \ .app_host should be set to a url / )
end
it " should not warn if a valid URL " do
expect { Capybara . app_host = " http://www.example.com " } . not_to raise_error
end
it " should not warn if nil " do
expect { Capybara . app_host = nil } . not_to raise_error
end
end
describe 'default_host' do
around do | test |
old_default = Capybara . default_host
test . run
Capybara . default_host = old_default
end
it " should warn if not a valid URL " do
expect { Capybara . default_host = " www.example.com " } . to raise_error ( ArgumentError , / Capybara \ .default_host should be set to a url / )
end
it " should not warn if a valid URL " do
expect { Capybara . default_host = " http://www.example.com " } . not_to raise_error
end
end
2012-07-21 20:44:10 +00:00
end
2010-10-28 02:53:59 +00:00
2014-04-03 17:25:03 +00:00
RSpec . describe Capybara :: Session do
2012-07-21 20:44:10 +00:00
context 'with non-existant driver' do
it " should raise an error " do
2012-10-30 13:26:19 +00:00
expect {
2012-07-21 20:44:10 +00:00
Capybara :: Session . new ( :quox , TestApp ) . driver
2012-10-30 13:26:19 +00:00
} . to raise_error ( Capybara :: DriverNotFoundError )
2012-07-21 20:44:10 +00:00
end
end
2010-07-29 13:20:11 +00:00
end