polonium 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. data/CHANGES +7 -0
  2. data/README +27 -12
  3. data/Rakefile +2 -2
  4. data/init.rb +9 -0
  5. data/lib/polonium/adapters/rspec.rb +19 -13
  6. data/lib/polonium/adapters/test_unit.rb +1 -1
  7. data/lib/polonium/configuration.rb +32 -97
  8. data/lib/polonium/driver.rb +25 -28
  9. data/lib/polonium/dsl/selenium_dsl.rb +67 -8
  10. data/lib/polonium/element.rb +60 -30
  11. data/lib/polonium/page.rb +13 -2
  12. data/lib/polonium/server_runners/external_server_runner.rb +20 -0
  13. data/lib/polonium/server_runners/mongrel_server_runner.rb +63 -0
  14. data/lib/polonium/server_runners/server_runner.rb +36 -0
  15. data/lib/polonium/server_runners/webrick_server_runner.rb +49 -0
  16. data/lib/polonium/test_case.rb +1 -19
  17. data/lib/polonium/wait_for.rb +4 -1
  18. data/lib/polonium.rb +6 -4
  19. data/spec/polonium/configuration_spec.rb +41 -99
  20. data/spec/polonium/driver_spec.rb +112 -62
  21. data/spec/polonium/element_spec.rb +69 -24
  22. data/spec/polonium/server_runners/external_server_runner_spec.rb +33 -0
  23. data/spec/polonium/server_runners/mongrel_server_runner_spec.rb +69 -0
  24. data/spec/polonium/server_runners/server_runner_spec.rb +36 -0
  25. data/spec/polonium/server_runners/webrick_server_runner_spec.rb +121 -0
  26. data/spec/polonium/test_case_spec.rb +538 -649
  27. data/spec/rspec/options_spec.rb +23 -22
  28. data/spec/spec_helper.rb +0 -18
  29. data/spec/spec_suite.rb +1 -1
  30. data/spec/test_unit/testrunnermediator_spec.rb +2 -2
  31. metadata +50 -41
  32. data/lib/polonium/dsl/test_unit_dsl.rb +0 -61
  33. data/lib/polonium/mongrel_selenium_server_runner.rb +0 -37
  34. data/lib/polonium/server_runner.rb +0 -33
  35. data/lib/polonium/webrick_selenium_server_runner.rb +0 -33
  36. data/spec/polonium/mongrel_selenium_server_runner_spec.rb +0 -35
  37. data/spec/polonium/server_runner_spec.rb +0 -42
  38. data/spec/polonium/webrick_selenium_server_runner_spec.rb +0 -117
@@ -9,16 +9,15 @@ module Polonium
9
9
  end
10
10
 
11
11
  def assert_element_present(params={})
12
- driver.wait_for_is_element_present(locator, params)
12
+ driver.assert_element_present(locator, params)
13
13
  end
14
14
 
15
15
  def assert_element_not_present(params={})
16
- driver.wait_for_is_element_not_present(locator, params)
16
+ driver.assert_element_not_present(locator, params)
17
17
  end
18
18
 
19
19
  def assert_value(expected_value)
20
- assert_element_present
21
- wait_for do |configuration|
20
+ wait_for_element do |configuration|
22
21
  actual_value = driver.get_value(locator)
23
22
  configuration.message = "Expected '#{locator}' to be '#{expected_value}' but was '#{actual_value}'"
24
23
  has_value? expected_value, actual_value
@@ -26,18 +25,25 @@ module Polonium
26
25
  end
27
26
 
28
27
  def assert_attribute(expected_name, expected_value)
29
- assert_element_present
30
28
  attr_locator = "#{locator}@#{expected_name}"
31
- wait_for do |configuration|
29
+ wait_for_element do |configuration|
32
30
  actual = driver.get_attribute(attr_locator) #todo: actual value
33
31
  configuration.message = "Expected attribute '#{attr_locator}' to be '#{expected_value}' but was '#{actual}'"
34
32
  values_match? actual, expected_value
35
33
  end
36
34
  end
37
35
 
36
+ def assert_attribute_does_not_contain(attribute_name, illegal_value)
37
+ attr_locator = "#{locator}@#{attribute_name}"
38
+ wait_for_element do |configuration|
39
+ actual = driver.get_attribute(attr_locator) #todo: actual value
40
+ configuration.message = "Expected attribute '#{attr_locator}' to not contain '#{illegal_value}' but was '#{actual}'"
41
+ !actual.match(illegal_value)
42
+ end
43
+ end
44
+
38
45
  def assert_selected(expected_value)
39
- assert_element_present
40
- wait_for do |configuration|
46
+ wait_for_element do |configuration|
41
47
  actual = driver.get_selected_label(locator)
42
48
  configuration.message = "Expected '#{locator}' to be selected with '#{expected_value}' but was '#{actual}"
43
49
  values_match? actual, expected_value
@@ -45,42 +51,37 @@ module Polonium
45
51
  end
46
52
 
47
53
  def assert_visible(options={})
48
- assert_element_present
49
54
  options = {
50
55
  :message => "Expected '#{locator}' to be visible, but it wasn't"
51
56
  }.merge(options)
52
- wait_for(options) do
57
+ wait_for_element(options) do
53
58
  driver.is_visible(locator)
54
59
  end
55
60
  end
56
61
 
57
62
  def assert_not_visible(options={})
58
- assert_element_present
59
63
  options = {
60
64
  :message => "Expected '#{locator}' to be hidden, but it wasn't"
61
65
  }.merge(options)
62
- wait_for(options) do
66
+ wait_for_element(options) do
63
67
  !driver.is_visible(locator)
64
68
  end
65
69
  end
66
70
 
67
71
  def assert_checked
68
- assert_element_present
69
- wait_for(:message => "Expected '#{locator}' to be checked") do
72
+ wait_for_element(:message => "Expected '#{locator}' to be checked") do
70
73
  driver.is_checked(locator)
71
74
  end
72
75
  end
73
76
 
74
77
  def assert_not_checked
75
- assert_element_present
76
- wait_for(:message => "Expected '#{locator}' to not be checked") do
78
+ wait_for_element(:message => "Expected '#{locator}' to not be checked") do
77
79
  !driver.is_checked(locator)
78
80
  end
79
81
  end
80
82
 
81
83
  def assert_text(expected_text, options={})
82
- assert_element_present
83
- wait_for(options) do |configuration|
84
+ wait_for_element(options) do |configuration|
84
85
  actual = driver.get_text(locator)
85
86
  configuration.message = "Expected text '#{expected_text}' to be full contents of #{locator} but was '#{actual}')"
86
87
  values_match? actual, expected_text
@@ -89,34 +90,32 @@ module Polonium
89
90
 
90
91
  def assert_contains(expected_text, options={})
91
92
  return assert_contains_in_order(*expected_text) if expected_text.is_a? Array
92
- assert_element_present
93
- options = {
94
- :message => "#{locator} should contain #{expected_text}"
95
- }.merge(options)
96
- wait_for(options) do
97
- contains?(expected_text)
93
+ wait_for_element(options) do |configuration|
94
+ if contains?(expected_text)
95
+ true
96
+ else
97
+ configuration.message = "#{locator} should contain #{expected_text}"
98
+ false
99
+ end
98
100
  end
99
101
  end
100
102
 
101
103
  def assert_does_not_contain(expected_text, options={})
102
- assert_element_present
103
- wait_for(options) do
104
+ wait_for_element(options) do
104
105
  !contains?(expected_text)
105
106
  end
106
107
  end
107
108
 
108
109
  def assert_next_sibling(expected_sibling_id, options = {})
109
- assert_element_present
110
110
  eval_js = "this.page().findElement('#{locator}').nextSibling.id"
111
- wait_for(:message => "id '#{locator}' should be next to '#{expected_sibling_id}'") do
111
+ wait_for_element(:message => "id '#{locator}' should be next to '#{expected_sibling_id}'") do
112
112
  actual_sibling_id = driver.get_eval(eval_js)
113
113
  expected_sibling_id == actual_sibling_id
114
114
  end
115
115
  end
116
116
 
117
117
  def assert_contains_in_order(*text_fragments)
118
- assert_element_present
119
- wait_for do |configuration|
118
+ wait_for_element do |configuration|
120
119
  success = false
121
120
 
122
121
  html = driver.get_text(locator)
@@ -139,7 +138,26 @@ module Polonium
139
138
  success
140
139
  end
141
140
  end
141
+
142
+ def assert_number_of_children(expected_number)
143
+ eval_js = "this.page().findElement('#{locator}').childNodes.length"
144
+ wait_for_element(:message => "id '#{locator}' should contain exactly #{expected_number} children") do
145
+ actual_number = driver.get_eval(eval_js)
146
+ expected_number == actual_number.to_i
147
+ end
148
+ end
142
149
 
150
+ def click
151
+ driver.click locator
152
+ end
153
+
154
+ def type(text)
155
+ driver.type(locator, text)
156
+ end
157
+
158
+ def select(option_locator)
159
+ driver.select(locator, option_locator)
160
+ end
143
161
 
144
162
  def is_present?
145
163
  driver.is_element_present(locator)
@@ -169,6 +187,18 @@ module Polonium
169
187
  end
170
188
 
171
189
  protected
190
+ def wait_for_element(options={})
191
+ wait_for(options) do |configuration|
192
+ if is_present?
193
+ configuration.message = ""
194
+ yield(configuration)
195
+ else
196
+ configuration.message = "Expected element '#{locator}' to be present, but it was not"
197
+ false
198
+ end
199
+ end
200
+ end
201
+
172
202
  def method_missing(method_name, *args, &blk)
173
203
  if driver.respond_to?(method_name)
174
204
  driver_args = [locator] + args
data/lib/polonium/page.rb CHANGED
@@ -2,7 +2,18 @@ module Polonium
2
2
  class Page
3
3
  include WaitFor, ValuesMatch
4
4
  attr_reader :driver
5
- PAGE_LOADED_COMMAND = "this.browserbot.getDocument().body ? true : false"
5
+ PAGE_LOADED_COMMAND = <<-JS
6
+ (function(selenium) {
7
+ BrowserBot.prototype.bodyText = function() {
8
+ if (!this.getDocument().body) {
9
+ return "";
10
+ }
11
+ return getText(this.getDocument().body);
12
+ };
13
+ selenium.browserbot.bodyText = BrowserBot.prototype.bodyText;
14
+ return selenium.browserbot.getDocument().body ? true : false;
15
+ })(this);
16
+ JS
6
17
 
7
18
  def initialize(driver)
8
19
  @driver = driver
@@ -91,4 +102,4 @@ module Polonium
91
102
  end
92
103
  end
93
104
  end
94
- end
105
+ end
@@ -0,0 +1,20 @@
1
+ module Polonium
2
+ module ServerRunners
3
+ class ExternalServerRunner < ServerRunner
4
+ protected
5
+ def start_server
6
+ stop_server
7
+ system("cd #{configuration.rails_root}; script/server -e #{configuration.rails_env} -p #{configuration.internal_app_server_port} -c #{configuration.rails_root}")
8
+ rescue Exception => e
9
+ puts e.message
10
+ puts e.backtrace
11
+ raise e
12
+ end
13
+
14
+ def stop_server
15
+ cmd = "ps ax | grep 'script/server -e #{configuration.rails_env}' | sed /grep/d | awk '{print $1}' | xargs kill -9 2>/dev/null"
16
+ system(cmd)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,63 @@
1
+ module Polonium
2
+ module ServerRunners
3
+ class MongrelServerRunner < ServerRunner
4
+ def start
5
+ mongrel_configurator = create_mongrel_configurator
6
+ initialize_server(mongrel_configurator)
7
+
8
+ Thread.start do
9
+ start_server(mongrel_configurator)
10
+ end
11
+ @started = true
12
+ end
13
+
14
+ protected
15
+ def start_server(mongrel_configurator)
16
+ mongrel_configurator.run
17
+ mongrel_configurator.log "Mongrel running at #{configuration.internal_app_server_host}:#{configuration.internal_app_server_port}"
18
+ mongrel_configurator.join
19
+ end
20
+
21
+ def initialize_server(config)
22
+ configuration = self.configuration
23
+ config.listener do |*args|
24
+ mongrel = (args.first || self)
25
+ mongrel.log "Starting Rails in environment #{defaults[:environment]} ..."
26
+ mongrel.uri "/", :handler => mongrel.rails
27
+ mongrel.log "Rails loaded."
28
+
29
+ mongrel.log "Loading any Rails specific GemPlugins"
30
+ mongrel.load_plugins
31
+ configuration.app_server_initialization.call(mongrel)
32
+ end
33
+ end
34
+
35
+ def stop_server
36
+ end
37
+
38
+ def create_mongrel_configurator #:nodoc:
39
+ dir = File.dirname(__FILE__)
40
+ require 'mongrel/rails'
41
+ settings = {
42
+ :host => configuration.internal_app_server_host,
43
+ :port => configuration.internal_app_server_port,
44
+ :cwd => configuration.rails_root,
45
+ :log_file => "#{configuration.rails_root}/log/mongrel.log",
46
+ :pid_file => "#{configuration.rails_root}/log/mongrel.pid",
47
+ :environment => configuration.rails_env,
48
+ :docroot => "#{configuration.rails_root}/public",
49
+ :mime_map => nil,
50
+ :daemon => false,
51
+ :debug => false,
52
+ :includes => ["mongrel"],
53
+ :config_script => nil
54
+ }
55
+
56
+ configurator = Mongrel::Rails::RailsConfigurator.new(settings) do
57
+ log "Starting Mongrel in #{defaults[:environment]} mode at #{defaults[:host]}:#{defaults[:port]}"
58
+ end
59
+ configurator
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,36 @@
1
+ module Polonium
2
+ module ServerRunners
3
+ class ServerRunner
4
+ attr_reader :configuration
5
+ def initialize(configuration)
6
+ @configuration = configuration
7
+ @started = false
8
+ end
9
+
10
+ def start
11
+ Thread.start do
12
+ start_server
13
+ end
14
+ @started = true
15
+ end
16
+
17
+ def stop
18
+ stop_server
19
+ @started = false
20
+ end
21
+
22
+ def started?
23
+ @started
24
+ end
25
+
26
+ protected
27
+ def start_server
28
+ raise NotImplementedError.new("this is abstract!")
29
+ end
30
+
31
+ def stop_server
32
+ raise NotImplementedError.new("this is abstract!")
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,49 @@
1
+ module Polonium
2
+ module ServerRunners
3
+ class WebrickServerRunner < ServerRunner
4
+ attr_accessor :server
5
+
6
+ def initialize(configuration)
7
+ require 'webrick_server'
8
+ super
9
+ end
10
+
11
+ protected
12
+ def start_server
13
+ @server = create_webrick_server
14
+ mount_parameters = {
15
+ :port => configuration.internal_app_server_port,
16
+ :ip => configuration.internal_app_server_host,
17
+ :environment => configuration.rails_env.dup,
18
+ :server_root => configuration.server_root,
19
+ :server_type => WEBrick::SimpleServer,
20
+ :charset => "UTF-8",
21
+ :mime_types => WEBrick::HTTPUtils::DefaultMimeTypes,
22
+ :working_directory => File.expand_path(configuration.rails_root.to_s)
23
+ }
24
+ server.mount('/', DispatchServlet, mount_parameters)
25
+
26
+ trap("INT") { stop_server }
27
+
28
+ require File.expand_path("#{configuration.rails_root}/config/environment")
29
+ require "dispatcher"
30
+ server.start
31
+ end
32
+
33
+ def stop_server
34
+ server.shutdown if server
35
+ end
36
+
37
+ def create_webrick_server #:nodoc:
38
+ WEBrick::HTTPServer.new({
39
+ :Port => configuration.internal_app_server_port,
40
+ :BindAddress => configuration.internal_app_server_host,
41
+ :ServerType => WEBrick::SimpleServer,
42
+ :MimeTypes => WEBrick::HTTPUtils::DefaultMimeTypes,
43
+ :Logger => configuration.new_logger,
44
+ :AccessLog => []
45
+ })
46
+ end
47
+ end
48
+ end
49
+ end
@@ -12,27 +12,9 @@ module Polonium
12
12
  self.use_transactional_fixtures = false
13
13
  self.use_instantiated_fixtures = true
14
14
 
15
- include TestUnitDsl
15
+ include SeleniumDsl
16
16
  def setup
17
- # set "setup_once" to true
18
- # to prevent fixtures from being re-loaded and data deleted from the DB.
19
- # this is handy if you want to generate a DB full of sample data
20
- # from the tests. Make sure none of your selenium tests manually
21
- # reset data!
22
- #TODO: make this configurable
23
- setup_once = false
24
-
25
17
  raise "Cannot use transactional fixtures if ActiveRecord concurrency is turned on (which is required for Selenium tests to work)." if self.class.use_transactional_fixtures
26
- unless setup_once
27
- ActiveRecord::Base.connection.update('SET FOREIGN_KEY_CHECKS = 0')
28
- super
29
- ActiveRecord::Base.connection.update('SET FOREIGN_KEY_CHECKS = 1')
30
- else
31
- unless InstanceMethods.const_defined?("ALREADY_SETUP_ONCE")
32
- super
33
- InstanceMethods.const_set("ALREADY_SETUP_ONCE", true)
34
- end
35
- end
36
18
  @selenium_driver = configuration.driver
37
19
  end
38
20
 
@@ -12,7 +12,10 @@ module Polonium
12
12
  configuration = Context.new(message)
13
13
  begin_time = time_class.now
14
14
  while (time_class.now - begin_time) < timeout
15
- return if yield(configuration)
15
+ if value = yield(configuration)
16
+ return value
17
+ end
18
+ return value if value
16
19
  sleep 0.25
17
20
  end
18
21
  flunk(configuration.message + " (after #{timeout} sec)")
data/lib/polonium.rb CHANGED
@@ -1,6 +1,8 @@
1
+ require 'rubygems'
1
2
  require 'socket'
2
3
  require 'logger'
3
4
  require "stringio"
5
+ require "resolv-replace"
4
6
 
5
7
  require "active_record"
6
8
 
@@ -13,11 +15,11 @@ require "selenium"
13
15
  require "polonium/extensions/module"
14
16
  require "polonium/wait_for"
15
17
  require "polonium/driver"
16
- require "polonium/server_runner"
17
- require "polonium/mongrel_selenium_server_runner"
18
- require "polonium/webrick_selenium_server_runner"
18
+ require "polonium/server_runners/server_runner"
19
+ require "polonium/server_runners/external_server_runner"
20
+ require "polonium/server_runners/mongrel_server_runner"
21
+ require "polonium/server_runners/webrick_server_runner"
19
22
  require "polonium/dsl/selenium_dsl"
20
- require "polonium/dsl/test_unit_dsl"
21
23
  require "polonium/configuration"
22
24
  require "polonium/values_match"
23
25
  require "polonium/page"
@@ -1,24 +1,6 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
2
 
3
3
  module Polonium
4
- describe Configuration, ".instance" do
5
- attr_reader :configuration
6
- before(:each) do
7
- Configuration.instance = nil
8
- @configuration = Configuration.new
9
- end
10
-
11
- it "should create a new Configuration if it hasn't been called yet" do
12
- mock(Configuration).new.returns(configuration)
13
- Configuration.instance.should == configuration
14
- end
15
-
16
- it "should reuse the existing Configuration if it has been called. So new/establish_environment should only be called once." do
17
- Configuration.instance.should_not be_nil
18
- dont_allow(Configuration).new
19
- end
20
- end
21
-
22
4
  describe Configuration do
23
5
  attr_reader :configuration
24
6
  before(:each) do
@@ -86,70 +68,27 @@ module Polonium
86
68
  passed_driver.should == driver
87
69
  start_called.should == true
88
70
  end
71
+ end
89
72
 
90
- it "creates a Webrick Server Runner" do
91
- configuration.selenium_server_port = 4000
92
- configuration.selenium_server_host = "localhost"
93
- dir = File.dirname(__FILE__)
94
- configuration.rails_root = dir
95
- configuration.rails_env = "test"
96
-
97
- runner = configuration.create_webrick_runner
98
- runner.should be_an_instance_of(WebrickSeleniumServerRunner)
99
- runner.configuration.should == configuration
100
- runner.thread_class.should == Thread
101
- runner.socket.should == Socket
102
- runner.dispatch_servlet.should == DispatchServlet
103
- runner.environment_path.should == File.expand_path("#{dir}/config/environment")
104
- end
105
-
106
- it "creates webrick http server" do
107
- configuration.internal_app_server_port = 4000
108
- configuration.internal_app_server_host = "localhost"
109
-
110
- mock_logger = "logger"
111
- mock(configuration).new_logger {mock_logger}
112
- mock(WEBrick::HTTPServer).new({
113
- :Port => 4000,
114
- :BindAddress => "localhost",
115
- :ServerType => WEBrick::SimpleServer,
116
- :MimeTypes => WEBrick::HTTPUtils::DefaultMimeTypes,
117
- :Logger => mock_logger,
118
- :AccessLog => []
119
- })
120
- server = configuration.create_webrick_server
121
- end
122
-
123
- it "creates Mongrel Server Runner" do
124
- server = configuration.create_mongrel_runner
125
- server.should be_instance_of(MongrelSeleniumServerRunner)
126
- server.configuration.should == configuration
127
- server.thread_class.should == Thread
128
- end
129
-
130
- it "creates Mongrel configurator" do
131
- configuration.internal_app_server_host = "localhost"
132
- configuration.internal_app_server_port = 4000
133
- configuration.rails_env = "test"
134
- configuration.rails_root = rails_root = File.dirname(__FILE__)
135
-
136
- configurator = configuration.create_mongrel_configurator
137
- configurator.defaults[:host].should == "localhost"
138
- configurator.defaults[:port].should == 4000
139
- configurator.defaults[:cwd].should == configuration.rails_root
140
- configurator.defaults[:log_file].should == "#{configuration.rails_root}/log/mongrel.log"
141
- configurator.defaults[:pid_file].should == "#{configuration.rails_root}/log/mongrel.pid"
142
- configurator.defaults[:environment].should == "test"
143
- configurator.defaults[:docroot].should == "#{rails_root}/public"
144
- configurator.defaults[:mime_map].should be_nil
145
- configurator.defaults[:daemon].should == false
146
- configurator.defaults[:debug].should == false
147
- configurator.defaults[:includes].should == ["mongrel"]
148
- configurator.defaults[:config_script].should be_nil
73
+ describe ".instance" do
74
+ attr_reader :configuration
75
+ before(:each) do
76
+ Configuration.instance = nil
77
+ @configuration = Configuration.new
78
+ end
79
+
80
+ it "should create a new Configuration if it hasn't been called yet" do
81
+ mock(Configuration).new.returns(configuration)
82
+ Configuration.instance.should == configuration
83
+ end
84
+
85
+ it "should reuse the existing Configuration if it has been called. So new/establish_environment should only be called once." do
86
+ Configuration.instance.should_not be_nil
87
+ dont_allow(Configuration).new
149
88
  end
150
89
  end
151
90
 
152
- describe Configuration, "#establish_environment" do
91
+ describe "#establish_environment" do
153
92
  attr_reader :configuration
154
93
  before(:each) do
155
94
  @old_configuration = Configuration.instance
@@ -296,7 +235,7 @@ module Polonium
296
235
  end
297
236
  end
298
237
 
299
- describe Configuration, "#stop_driver_if_necessary" do
238
+ describe "#stop_driver_if_necessary" do
300
239
  attr_reader :configuration
301
240
  before(:each) do
302
241
  @configuration = Configuration.new
@@ -330,30 +269,33 @@ module Polonium
330
269
 
331
270
  end
332
271
 
333
- describe Configuration, "#create_server_runner where application server engine is mongrel" do
334
- it "creates a mongrel server runner" do
335
- configuration = Configuration.new
336
- configuration.app_server_engine = :mongrel
337
- runner = configuration.create_server_runner
338
- runner.should be_instance_of(MongrelSeleniumServerRunner)
272
+ describe "#create_app_server_runner" do
273
+ describe "when server engine in mongrel" do
274
+ it "creates a mongrel server runner" do
275
+ configuration = Configuration.new
276
+ configuration.app_server_engine = :mongrel
277
+ runner = configuration.create_app_server_runner
278
+ runner.class.should == ServerRunners::MongrelServerRunner
279
+ runner.configuration.should == configuration
280
+ end
339
281
  end
340
- end
341
282
 
342
- describe Configuration, "#create_server_runner where application server engine is webrick" do
343
- before do
344
- Object.const_set :RAILS_ROOT, "foobar"
345
- require 'webrick_server'
346
- end
283
+ describe "when server engine is webrick" do
284
+ before do
285
+ Object.const_set :RAILS_ROOT, "foobar"
286
+ end
347
287
 
348
- after do
349
- Object.instance_eval {remove_const :RAILS_ROOT}
350
- end
288
+ after do
289
+ Object.instance_eval {remove_const :RAILS_ROOT}
290
+ end
351
291
 
352
- it "creates a webrick server runner" do
353
- configuration = Configuration.new
354
- configuration.app_server_engine = :webrick
355
- runner = configuration.create_server_runner
356
- runner.should be_instance_of(WebrickSeleniumServerRunner)
292
+ it "creates a webrick server runner" do
293
+ configuration = Configuration.new
294
+ configuration.app_server_engine = :webrick
295
+ runner = configuration.create_app_server_runner
296
+ runner.class.should == ServerRunners::WebrickServerRunner
297
+ runner.configuration.should == configuration
298
+ end
357
299
  end
358
300
  end
359
301
  end