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
@@ -1,30 +1,31 @@
1
1
  require File.expand_path("#{File.dirname(__FILE__)}/rspec_spec_helper")
2
2
 
3
- describe Spec::Runner::Options, "#run_example" do
4
- attr_reader :configuration, :app_server_runner, :the_rspec_options
5
- before do
6
- @original_configuration = Polonium::Configuration.instance
7
- @configuration = Polonium::Configuration.new
8
- @the_rspec_options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
3
+ describe Spec::Runner::Options do
4
+ describe "#run_example" do
5
+ attr_reader :configuration, :app_server_runner, :the_rspec_options
6
+ before do
7
+ @original_configuration = Polonium::Configuration.instance
8
+ @configuration = Polonium::Configuration.new
9
+ Polonium::Configuration.instance = configuration
10
+ @the_rspec_options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
11
+ the_rspec_options.after_suite_parts.push(*rspec_options.after_suite_parts)
9
12
 
10
- configuration.app_server_engine = :mongrel
11
- @app_server_runner = configuration.create_server_runner
12
-
13
- the_rspec_options.selenium_configuration = configuration
14
- the_rspec_options.selenium_app_runner = app_server_runner
15
- end
13
+ configuration.app_server_engine = :mongrel
14
+ @app_server_runner = configuration.create_app_server_runner
15
+ end
16
16
 
17
- after do
18
- Polonium::Configuration.instance = @original_configuration
19
- end
17
+ after do
18
+ Polonium::Configuration.instance = @original_configuration
19
+ end
20
20
 
21
- it "stops the app server app_server_runner when finished" do
22
- mock.proxy(app_server_runner).stop
23
- the_rspec_options.run_examples
24
- end
21
+ it "stops the app server app_server_runner when finished" do
22
+ mock.proxy(app_server_runner).stop
23
+ the_rspec_options.run_examples
24
+ end
25
25
 
26
- it "stops the Selenium driver when finished" do
27
- mock.proxy(configuration).stop_driver_if_necessary(true)
28
- the_rspec_options.run_examples
26
+ it "stops the Selenium driver when finished" do
27
+ mock.proxy(configuration).stop_driver_if_necessary(true)
28
+ the_rspec_options.run_examples
29
+ end
29
30
  end
30
31
  end
data/spec/spec_helper.rb CHANGED
@@ -15,24 +15,6 @@ require File.dirname(__FILE__) + "/polonium/test_case_spec_helper"
15
15
 
16
16
  Test::Unit.run = true
17
17
 
18
- ProcessStub = Struct.new :host, :port, :name, :cmd, :logdir, :is_running unless Object.const_defined?(:ProcessStub)
19
- ProcessStub.class_eval do
20
- def is_running?
21
- self.is_running
22
- end
23
- def say(msg, options = {})
24
- end
25
- def run
26
- false
27
- end
28
- def start
29
- self.is_running = true
30
- end
31
- def stop
32
- self.is_running = false
33
- end
34
- end
35
-
36
18
  Spec::Runner.configure do |config|
37
19
  config.mock_with :rr
38
20
  end
data/spec/spec_suite.rb CHANGED
@@ -16,4 +16,4 @@ if $0 == __FILE__
16
16
  raise "Failure" unless system("ruby #{dir}/main_spec_suite.rb")
17
17
  raise "Failure" unless system("ruby #{dir}/test_unit_spec_suite.rb")
18
18
  raise "Failure" unless system("ruby #{dir}/rspec_spec_suite.rb")
19
- end
19
+ end
@@ -10,8 +10,8 @@ describe Test::Unit::UI::TestRunnerMediator do
10
10
  suite = Test::Unit::TestSuite.new
11
11
  mediator = Test::Unit::UI::TestRunnerMediator.new(suite)
12
12
 
13
- runner = driver.create_server_runner
14
- mock(driver).create_server_runner {runner}
13
+ runner = driver.create_app_server_runner
14
+ mock(driver).create_app_server_runner {runner}
15
15
  mock(runner).stop
16
16
  mock(driver).stop_driver_if_necessary(true)
17
17
  mediator.run_suite
metadata CHANGED
@@ -1,50 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: polonium
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.1.1
7
- date: 2008-01-29 00:00:00 -08:00
8
- summary: Selenium RC with enhanced assertions that also runs your rails app.
9
- require_paths:
10
- - lib
11
- email: opensource@pivotallabs.com
12
- homepage: http://pivotallabs.com
13
- rubyforge_project: pivotalrb
14
- description: Selenium RC with enhanced assertions that also runs your rails app.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.2.0
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Pivotal Labs
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-07-18 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Selenium RC with Rails integration and enhanced assertions.
17
+ email: opensource@pivotallabs.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ - CHANGES
31
25
  files:
32
26
  - CHANGES
33
27
  - README
34
28
  - Rakefile
29
+ - init.rb
30
+ - lib/polonium/server_runners/webrick_server_runner.rb
31
+ - lib/polonium/server_runners/external_server_runner.rb
32
+ - lib/polonium/server_runners/server_runner.rb
33
+ - lib/polonium/server_runners/mongrel_server_runner.rb
35
34
  - lib/polonium/dsl/selenium_dsl.rb
36
- - lib/polonium/dsl/test_unit_dsl.rb
37
35
  - lib/polonium/adapters/test_unit.rb
38
36
  - lib/polonium/adapters/rspec.rb
39
37
  - lib/polonium/element.rb
40
- - lib/polonium/mongrel_selenium_server_runner.rb
41
38
  - lib/polonium/extensions/module.rb
42
39
  - lib/polonium/tasks/selenium_test_task.rb
43
40
  - lib/polonium/page.rb
44
41
  - lib/polonium/driver.rb
45
- - lib/polonium/webrick_selenium_server_runner.rb
46
42
  - lib/polonium/values_match.rb
47
- - lib/polonium/server_runner.rb
48
43
  - lib/polonium/wait_for.rb
49
44
  - lib/polonium/test_case.rb
50
45
  - lib/polonium/configuration.rb
@@ -58,34 +53,48 @@ files:
58
53
  - spec/main_spec_suite.rb
59
54
  - spec/test_unit/test_unit_spec_helper.rb
60
55
  - spec/test_unit/testrunnermediator_spec.rb
56
+ - spec/polonium/server_runners/server_runner_spec.rb
57
+ - spec/polonium/server_runners/mongrel_server_runner_spec.rb
58
+ - spec/polonium/server_runners/external_server_runner_spec.rb
59
+ - spec/polonium/server_runners/webrick_server_runner_spec.rb
61
60
  - spec/polonium/driver_spec.rb
62
- - spec/polonium/server_runner_spec.rb
63
61
  - spec/polonium/test_case_spec_helper.rb
64
62
  - spec/polonium/test_case_spec.rb
65
63
  - spec/polonium/page_spec.rb
66
64
  - spec/polonium/element_spec.rb
67
65
  - spec/polonium/extensions/module_spec.rb
68
66
  - spec/polonium/test_case_class_method_spec.rb
69
- - spec/polonium/webrick_selenium_server_runner_spec.rb
70
67
  - spec/polonium/values_match_spec.rb
71
68
  - spec/polonium/configuration_spec.rb
72
- - spec/polonium/mongrel_selenium_server_runner_spec.rb
73
69
  - spec/rspec_spec_suite.rb
74
- test_files: []
75
-
70
+ has_rdoc: true
71
+ homepage: http://pivotallabs.com
72
+ post_install_message:
76
73
  rdoc_options:
77
74
  - --main
78
75
  - README
79
76
  - --inline-source
80
77
  - --line-numbers
81
- extra_rdoc_files:
82
- - README
83
- - CHANGES
84
- executables: []
85
-
86
- extensions: []
87
-
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: "0"
85
+ version:
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "0"
91
+ version:
88
92
  requirements: []
89
93
 
90
- dependencies: []
94
+ rubyforge_project: pivotalrb
95
+ rubygems_version: 1.0.1
96
+ signing_key:
97
+ specification_version: 2
98
+ summary: Selenium RC with Rails integration and enhanced assertions.
99
+ test_files: []
91
100
 
@@ -1,61 +0,0 @@
1
- module Polonium
2
- module TestUnitDsl
3
- include SeleniumDsl
4
- class << self
5
- def page_assertion(name)
6
- module_eval(
7
- "def assert_#{name}(value, params={})\n" +
8
- " page.assert_#{name}(value, params)\n" +
9
- "end",
10
- __FILE__,
11
- __LINE__ - 4
12
- )
13
- end
14
-
15
- def element_assertion(name)
16
- module_eval(
17
- "def assert_#{name}(locator, *args)\n" +
18
- " element(locator).assert_#{name}(*args)\n" +
19
- "end",
20
- __FILE__,
21
- __LINE__ - 4
22
- )
23
- end
24
- end
25
-
26
- page_assertion :title
27
- page_assertion :text_present
28
- page_assertion :text_not_present
29
- page_assertion :location_ends_with
30
- deprecate :assert_location_ends_in, :assert_location_ends_with
31
-
32
- element_assertion :value
33
- element_assertion :selected
34
- element_assertion :checked
35
- element_assertion :not_checked
36
- element_assertion :text
37
- element_assertion :element_present
38
- element_assertion :element_not_present
39
- element_assertion :next_sibling
40
- element_assertion :contains_in_order
41
- element_assertion :visible
42
- element_assertion :not_visible
43
-
44
- def assert_attribute(element_locator, attribute_name, expected_value)
45
- element(element_locator).assert_attribute(attribute_name, expected_value)
46
- end
47
-
48
- # Assert and wait for locator element to contain text.
49
- def assert_element_contains(locator, text, options = {})
50
- element(locator).assert_contains(text, options)
51
- end
52
-
53
- # Assert and wait for locator element to not contain text.
54
- def assert_element_does_not_contain(locator, text, options={})
55
- element(locator).assert_does_not_contain(text, options)
56
- end
57
- deprecate :assert_element_does_not_contain_text, :assert_element_does_not_contain
58
- deprecate :wait_for_element_to_not_contain_text, :assert_element_does_not_contain
59
- deprecate :wait_for_text_in_order, :assert_contains_in_order
60
- end
61
- end
@@ -1,37 +0,0 @@
1
- module Polonium
2
- class MongrelSeleniumServerRunner < ServerRunner
3
- def start
4
- mongrel_configurator = configuration.create_mongrel_configurator
5
- initialize_server(mongrel_configurator)
6
-
7
- @thread_class.start do
8
- start_server(mongrel_configurator)
9
- end
10
- @started = true
11
- end
12
-
13
- protected
14
- def start_server(mongrel_configurator)
15
- mongrel_configurator.run
16
- mongrel_configurator.log "Mongrel running at #{configuration.internal_app_server_host}:#{configuration.internal_app_server_port}"
17
- mongrel_configurator.join
18
- end
19
-
20
- def initialize_server(config)
21
- configuration = self.configuration
22
- config.listener do |*args|
23
- mongrel = (args.first || self)
24
- mongrel.log "Starting Rails in environment #{defaults[:environment]} ..."
25
- mongrel.uri "/", :handler => mongrel.rails
26
- mongrel.log "Rails loaded."
27
-
28
- mongrel.log "Loading any Rails specific GemPlugins"
29
- mongrel.load_plugins
30
- configuration.app_server_initialization.call(mongrel)
31
- end
32
- end
33
-
34
- def stop_server
35
- end
36
- end
37
- end
@@ -1,33 +0,0 @@
1
- module Polonium
2
- class ServerRunner
3
- attr_accessor :configuration, :thread_class
4
- def initialize
5
- @started = false
6
- end
7
-
8
- def start
9
- @thread_class.start do
10
- start_server
11
- end
12
- @started = true
13
- end
14
-
15
- def stop
16
- stop_server
17
- @started = false
18
- end
19
-
20
- def started?
21
- @started
22
- end
23
-
24
- protected
25
- def start_server
26
- raise NotImplementedError.new("this is abstract!")
27
- end
28
-
29
- def stop_server
30
- raise NotImplementedError.new("this is abstract!")
31
- end
32
- end
33
- end
@@ -1,33 +0,0 @@
1
- module Polonium
2
- class WebrickSeleniumServerRunner < ServerRunner
3
- attr_accessor :socket, :dispatch_servlet, :environment_path, :server
4
-
5
- protected
6
- def start_server
7
- socket.do_not_reverse_lookup = true # patch for OS X
8
-
9
- @server = configuration.create_webrick_server
10
- mount_parameters = {
11
- :port => configuration.internal_app_server_port,
12
- :ip => configuration.internal_app_server_host,
13
- :environment => configuration.rails_env.dup,
14
- :server_root => configuration.server_root,
15
- :server_type => WEBrick::SimpleServer,
16
- :charset => "UTF-8",
17
- :mime_types => WEBrick::HTTPUtils::DefaultMimeTypes,
18
- :working_directory => File.expand_path(configuration.rails_root.to_s)
19
- }
20
- server.mount('/', dispatch_servlet, mount_parameters)
21
-
22
- trap("INT") { stop_server }
23
-
24
- require @environment_path
25
- require "dispatcher"
26
- server.start
27
- end
28
-
29
- def stop_server
30
- server.shutdown
31
- end
32
- end
33
- end
@@ -1,35 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- module Polonium
4
- describe MongrelSeleniumServerRunner, "#start_server" do
5
- attr_reader :configuration
6
- before do
7
- @configuration = Configuration.new
8
- end
9
-
10
- it "initializes server and runs app_server_initialization callback" do
11
- mongrel_configurator = configuration.create_mongrel_configurator
12
- stub(configuration).create_mongrel_configurator {mongrel_configurator}
13
- mock(mongrel_configurator).run
14
- stub(mongrel_configurator).log
15
- mock(mongrel_configurator).join
16
- fake_rails = "fake rails"
17
- mock(mongrel_configurator).rails {fake_rails}
18
- mock(mongrel_configurator).uri("/", {:handler => fake_rails})
19
- mock(mongrel_configurator).load_plugins
20
- mock(mongrel_configurator).listener.yields(mongrel_configurator)
21
-
22
- callback_mongrel = nil
23
- configuration.app_server_initialization = proc do |mongrel|
24
- callback_mongrel = mongrel
25
- end
26
- runner = configuration.create_mongrel_runner
27
- stub(runner).defaults do; {:environment => ""}; end
28
- runner.thread_class = mock_thread_class = "mock_thread_class"
29
- mock(mock_thread_class).start.yields
30
-
31
- runner.start
32
- callback_mongrel.should == mongrel_configurator
33
- end
34
- end
35
- end
@@ -1,42 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- module Polonium
4
- describe ServerRunner do
5
- before(:each) do
6
- @runner = Polonium::ServerRunner.new
7
- class << @runner
8
- public :start_server, :stop_server
9
- end
10
- end
11
-
12
- it "should initialize started? to be false" do
13
- @runner.started?.should == false
14
- end
15
-
16
- it "start method should start new thread and set started" do
17
- start_server_called = false
18
- (class << @runner; self; end).class_eval do
19
- define_method :start_server do; start_server_called = true; end
20
- end
21
- def @runner.stop_server; end
22
- mock_thread_class = "mock_thread_class"
23
- mock(mock_thread_class).start {|block| block.call}
24
- @runner.thread_class = mock_thread_class
25
-
26
- @runner.start
27
- start_server_called.should equal(true)
28
- @runner.started?.should equal(true)
29
- end
30
-
31
- it "stop method should set started? to false" do
32
- def @runner.stop_server; end
33
- @runner.instance_eval {@started = true}
34
- @runner.stop
35
- @runner.started?.should == false
36
- end
37
-
38
- it "start_server method should raise a NotImplementedError by default" do
39
- proc {@runner.start_server}.should raise_error(NotImplementedError)
40
- end
41
- end
42
- end
@@ -1,117 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- module Polonium
4
- describe WebrickSeleniumServerRunner do
5
- attr_reader :configuration
6
- before(:each) do
7
- Object.const_set(:RAILS_ROOT, "foobar")
8
- end
9
-
10
- after(:each) do
11
- Object.instance_eval {remove_const :RAILS_ROOT}
12
- end
13
-
14
- it "start method should set socket.do_not_reverse_lookup to true and" do
15
- runner = create_runner_that_is_stubbed_so_start_method_works
16
- runner.start
17
- end
18
-
19
- it "start method should initialize the HttpServer with parameters" do
20
- runner = create_runner_that_is_stubbed_so_start_method_works
21
- runner.start
22
- end
23
-
24
- it "start method should mount and start the server" do
25
- runner = create_runner_that_is_stubbed_so_start_method_works
26
- runner.start
27
- end
28
-
29
- it "start method should require the environment and dispatcher" do
30
- runner = create_runner_that_is_stubbed_so_start_method_works
31
-
32
- mock(runner).require("foobar")
33
- mock(runner).require("dispatcher")
34
-
35
- runner.environment_path = "foobar"
36
- runner.start
37
- end
38
-
39
- it "start method should require environment when rails_root is not set" do
40
- runner = create_runner_that_is_stubbed_so_start_method_works
41
- requires = []
42
- stub(runner).require {|val| requires << val}
43
-
44
- runner.start
45
- requires.any? {|r| r =~ /\/config\/environment/}.should == true
46
- end
47
-
48
- it "start method should trap server.shutdown" do
49
- runner = create_runner_that_is_stubbed_so_start_method_works
50
-
51
- (class << runner; self; end).class_eval {attr_reader :trap_signal_name}
52
- def runner.trap(signal_name, &block)
53
- @trap_signal_name = signal_name
54
- block.call
55
- end
56
- mock(@mock_server).shutdown.once
57
-
58
- runner.start
59
- runner.trap_signal_name.should == "INT"
60
- end
61
-
62
- it "should shutdown webrick server" do
63
- runner = create_runner_that_is_stubbed_so_start_method_works
64
- runner.start
65
- mock(@mock_server).shutdown.once
66
- runner.stop
67
- end
68
-
69
- def create_runner_that_is_stubbed_so_start_method_works()
70
- configuration = Polonium::Configuration.new
71
- runner = configuration.create_webrick_runner
72
- class << runner; public :start_server; end
73
-
74
- def runner.require(*args)
75
- end
76
-
77
- mock_socket = "mock_socket"
78
- runner.socket = mock_socket
79
- stub(mock_socket).do_not_reverse_lookup=(true)
80
-
81
- @mock_server = mock_server = "mock_server"
82
- (class << configuration; self; end).class_eval do
83
- define_method :create_webrick_server do
84
- mock_server
85
- end
86
- end
87
-
88
- configuration.internal_app_server_port = 4000
89
- configuration.internal_app_server_host = "localhost"
90
- configuration.rails_env = "test"
91
- stub(@mock_server).mount('/')
92
- mock(@mock_server).mount(
93
- '/',
94
- DispatchServlet,
95
- {
96
- :port => configuration.internal_app_server_port,
97
- :ip => configuration.internal_app_server_host,
98
- :environment => configuration.rails_env,
99
- :server_root => File.expand_path("#{configuration.rails_root}/public/"),
100
- :server_type => WEBrick::SimpleServer,
101
- :charset => "UTF-8",
102
- :mime_types => WEBrick::HTTPUtils::DefaultMimeTypes,
103
- :working_directory => File.expand_path(configuration.rails_root.to_s)
104
- }
105
- )
106
-
107
- mock(@mock_server).start.once
108
-
109
- mock_thread_class = "mock_thread_class"
110
- runner.thread_class = mock_thread_class
111
- mock(mock_thread_class).start {|block| block.call}
112
-
113
- return runner
114
- end
115
-
116
- end
117
- end