screw-unit 0.3.3 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/CHANGES +10 -0
  2. data/Rakefile +27 -25
  3. data/VERSION.yml +4 -0
  4. data/bin/screw_unit_server +14 -4
  5. data/core/EXAMPLE.html +1 -1
  6. data/core/example/spec/suite.html +1 -1
  7. data/core/lib/jquery-1.3.2.js +4376 -0
  8. data/core/lib/jquery.fn.js +2 -1
  9. data/core/lib/screw.behaviors.js +8 -7
  10. data/core/lib/screw.builder.js +34 -19
  11. data/core/lib/screw.css +1 -1
  12. data/core/lib/screw.events.js +5 -5
  13. data/core/lib/screw.matchers.js +59 -2
  14. data/core/spec/suite.html +2 -1
  15. data/core/spec/with_screw_context_spec.js +9 -0
  16. data/lib/screw_unit.rb +13 -16
  17. data/lib/screw_unit/representations.rb +2 -0
  18. data/lib/screw_unit/{resources/spec.rb → representations/spec.html.rb} +55 -39
  19. data/spec/functional/functional_spec.rb +1 -1
  20. data/spec/functional/functional_spec_helper.rb +21 -33
  21. data/spec/functional/functional_spec_server_starter.rb +68 -0
  22. data/spec/unit/js_test_core/specs/spec_file_spec.rb +52 -18
  23. data/spec/unit/unit_spec_helper.rb +24 -91
  24. data/vendor/js-test-core/CHANGES +8 -0
  25. data/vendor/js-test-core/Rakefile +1 -0
  26. data/vendor/js-test-core/lib/js_test_core.rb +22 -14
  27. data/vendor/js-test-core/lib/js_test_core/app.rb +12 -0
  28. data/vendor/js-test-core/lib/js_test_core/client.rb +21 -9
  29. data/vendor/js-test-core/lib/js_test_core/configuration.rb +35 -0
  30. data/vendor/js-test-core/lib/js_test_core/extensions.rb +1 -1
  31. data/vendor/js-test-core/lib/js_test_core/extensions/selenium/client/driver.rb +7 -0
  32. data/vendor/js-test-core/lib/js_test_core/models.rb +8 -0
  33. data/vendor/js-test-core/lib/js_test_core/models/selenium_session.rb +80 -0
  34. data/vendor/js-test-core/lib/js_test_core/representations.rb +11 -0
  35. data/vendor/js-test-core/lib/js_test_core/representations/dir.html.rb +24 -0
  36. data/vendor/js-test-core/lib/js_test_core/representations/not_found.html.rb +15 -0
  37. data/vendor/js-test-core/lib/js_test_core/representations/page.html.rb +41 -0
  38. data/vendor/js-test-core/lib/js_test_core/representations/spec.html.rb +24 -0
  39. data/vendor/js-test-core/lib/js_test_core/resources.rb +13 -7
  40. data/vendor/js-test-core/lib/js_test_core/resources/core_file.rb +19 -0
  41. data/vendor/js-test-core/lib/js_test_core/resources/file.rb +42 -20
  42. data/vendor/js-test-core/lib/js_test_core/resources/implementations_deprecation.rb +12 -0
  43. data/vendor/js-test-core/lib/js_test_core/resources/not_found.rb +35 -0
  44. data/vendor/js-test-core/lib/js_test_core/resources/resource.rb +16 -0
  45. data/vendor/js-test-core/lib/js_test_core/resources/selenium_session.rb +104 -0
  46. data/vendor/js-test-core/lib/js_test_core/resources/spec_file.rb +63 -0
  47. data/vendor/js-test-core/lib/js_test_core/resources/web_root.rb +5 -60
  48. data/vendor/js-test-core/{vendor/thin-rest/README → spec/example_core/subdir/SubDirFile.js} +0 -0
  49. data/vendor/js-test-core/spec/example_specs/custom_dir_and_suite/passing_spec.js +6 -0
  50. data/vendor/js-test-core/spec/example_specs/custom_suite.html +8 -0
  51. data/vendor/js-test-core/spec/example_specs/foo/failing_spec.js +1 -1
  52. data/vendor/js-test-core/spec/example_specs/foo/passing_spec.js +1 -1
  53. data/vendor/js-test-core/spec/spec_helpers/be_http.rb +32 -0
  54. data/vendor/js-test-core/spec/spec_helpers/example_group.rb +36 -0
  55. data/vendor/js-test-core/spec/spec_helpers/fake_selenium_driver.rb +27 -0
  56. data/vendor/js-test-core/spec/spec_helpers/show_test_exceptions.rb +22 -0
  57. data/vendor/js-test-core/spec/unit/js_test_core/client_spec.rb +35 -10
  58. data/vendor/js-test-core/spec/unit/js_test_core/configuration_spec.rb +44 -0
  59. data/vendor/js-test-core/spec/unit/js_test_core/models/selenium_session_spec.rb +85 -0
  60. data/vendor/js-test-core/spec/unit/js_test_core/resources/core_file_spec.rb +60 -0
  61. data/vendor/js-test-core/spec/unit/js_test_core/resources/file_spec.rb +54 -63
  62. data/vendor/js-test-core/spec/unit/js_test_core/resources/implementations_deprecation_spec.rb +18 -0
  63. data/vendor/js-test-core/spec/unit/js_test_core/resources/not_found_spec.rb +51 -0
  64. data/vendor/js-test-core/spec/unit/js_test_core/resources/selenium_session_spec.rb +362 -0
  65. data/vendor/js-test-core/spec/unit/js_test_core/resources/spec_file_spec.rb +120 -0
  66. data/vendor/js-test-core/spec/unit/js_test_core/resources/web_root_spec.rb +15 -19
  67. data/vendor/js-test-core/spec/unit/unit_spec_helper.rb +16 -149
  68. data/vendor/js-test-core/vendor/lucky-luciano/README.markdown +7 -0
  69. data/vendor/js-test-core/vendor/lucky-luciano/lib/lucky_luciano.rb +4 -0
  70. data/vendor/js-test-core/vendor/lucky-luciano/lib/lucky_luciano/resource.rb +135 -0
  71. data/vendor/js-test-core/vendor/lucky-luciano/lib/lucky_luciano/rspec.rb +4 -0
  72. data/vendor/js-test-core/vendor/lucky-luciano/lib/lucky_luciano/rspec/be_http.rb +32 -0
  73. data/vendor/js-test-core/vendor/lucky-luciano/spec/lucky_luciano/resource_spec.rb +231 -0
  74. data/vendor/js-test-core/vendor/lucky-luciano/spec/spec_helper.rb +48 -0
  75. data/vendor/js-test-core/vendor/{thin-rest → lucky-luciano}/spec/spec_suite.rb +1 -2
  76. metadata +134 -145
  77. data/core/lib/jquery-1.2.6.js +0 -3549
  78. data/lib/screw_unit/resources.rb +0 -2
  79. data/spec/unit/js_test_core/specs/spec_dir_spec.rb +0 -38
  80. data/vendor/js-test-core/lib/js_test_core/rack.rb +0 -2
  81. data/vendor/js-test-core/lib/js_test_core/rack/commonlogger.rb +0 -5
  82. data/vendor/js-test-core/lib/js_test_core/rails_server.rb +0 -22
  83. data/vendor/js-test-core/lib/js_test_core/resources/dir.rb +0 -67
  84. data/vendor/js-test-core/lib/js_test_core/resources/file_not_found.rb +0 -11
  85. data/vendor/js-test-core/lib/js_test_core/resources/runner.rb +0 -107
  86. data/vendor/js-test-core/lib/js_test_core/resources/session.rb +0 -44
  87. data/vendor/js-test-core/lib/js_test_core/resources/session_finish.rb +0 -17
  88. data/vendor/js-test-core/lib/js_test_core/resources/specs/spec_dir.rb +0 -46
  89. data/vendor/js-test-core/lib/js_test_core/resources/specs/spec_file.rb +0 -17
  90. data/vendor/js-test-core/lib/js_test_core/selenium.rb +0 -2
  91. data/vendor/js-test-core/lib/js_test_core/selenium/selenium_driver.rb +0 -5
  92. data/vendor/js-test-core/lib/js_test_core/server.rb +0 -50
  93. data/vendor/js-test-core/lib/js_test_core/thin.rb +0 -3
  94. data/vendor/js-test-core/lib/js_test_core/thin/backends/js_test_core_server.rb +0 -9
  95. data/vendor/js-test-core/lib/js_test_core/thin/js_test_core_connection.rb +0 -8
  96. data/vendor/js-test-core/spec/unit/js_test_core/rails_server_spec.rb +0 -45
  97. data/vendor/js-test-core/spec/unit/js_test_core/resources/dir_spec.rb +0 -52
  98. data/vendor/js-test-core/spec/unit/js_test_core/resources/file_not_found_spec.rb +0 -16
  99. data/vendor/js-test-core/spec/unit/js_test_core/resources/runners/runner_spec.rb +0 -303
  100. data/vendor/js-test-core/spec/unit/js_test_core/resources/session_finish_spec.rb +0 -79
  101. data/vendor/js-test-core/spec/unit/js_test_core/resources/session_spec.rb +0 -82
  102. data/vendor/js-test-core/spec/unit/js_test_core/resources/specs/spec_dir_spec.rb +0 -105
  103. data/vendor/js-test-core/spec/unit/js_test_core/resources/specs/spec_file_spec.rb +0 -42
  104. data/vendor/js-test-core/spec/unit/js_test_core/server_spec.rb +0 -117
  105. data/vendor/js-test-core/spec/unit/thin/js_test_core_connection_spec.rb +0 -6
  106. data/vendor/js-test-core/vendor/thin-rest/CHANGES +0 -2
  107. data/vendor/js-test-core/vendor/thin-rest/lib/thin_rest.rb +0 -9
  108. data/vendor/js-test-core/vendor/thin-rest/lib/thin_rest/connection.rb +0 -116
  109. data/vendor/js-test-core/vendor/thin-rest/lib/thin_rest/extensions.rb +0 -3
  110. data/vendor/js-test-core/vendor/thin-rest/lib/thin_rest/extensions/object.rb +0 -21
  111. data/vendor/js-test-core/vendor/thin-rest/lib/thin_rest/resource.rb +0 -108
  112. data/vendor/js-test-core/vendor/thin-rest/lib/thin_rest/resource_invalid.rb +0 -4
  113. data/vendor/js-test-core/vendor/thin-rest/lib/thin_rest/routing_error.rb +0 -5
  114. data/vendor/js-test-core/vendor/thin-rest/spec/thin_rest/connection_spec.rb +0 -207
  115. data/vendor/js-test-core/vendor/thin-rest/spec/thin_rest/resource_spec.rb +0 -127
  116. data/vendor/js-test-core/vendor/thin-rest/spec/thin_rest_spec_helper.rb +0 -124
@@ -1,3 +0,0 @@
1
- dir = File.dirname(__FILE__)
2
- require "#{dir}/thin/js_test_core_connection"
3
- require "#{dir}/thin/backends/js_test_core_server"
@@ -1,9 +0,0 @@
1
- module Thin
2
- module Backends
3
- class JsTestCoreServer < TcpServer
4
- def connect
5
- @signature = EventMachine.start_server(@host, @port, JsTestCoreConnection, &method(:initialize_connection))
6
- end
7
- end
8
- end
9
- end
@@ -1,8 +0,0 @@
1
- module Thin
2
- class JsTestCoreConnection < ThinRest::Connection
3
- protected
4
- def root_resource
5
- ::JsTestCore::Resources::WebRoot.new(:connection => self, :public_path => ::JsTestCore::Server.public_path)
6
- end
7
- end
8
- end
@@ -1,45 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../unit_spec_helper")
2
-
3
- module JsTestCore
4
- describe RailsServer do
5
- it "subclasses Server" do
6
- RailsServer.superclass.should == Server
7
- end
8
-
9
- describe ".run" do
10
- attr_reader :rails_root
11
- before do
12
- @rails_root = "/rails/root"
13
- Server.instance = nil
14
- end
15
-
16
- it "initializes the RailsServer and runs the Thin Handler and sets Server.instance to the RailsServer instance" do
17
- host = DEFAULT_HOST
18
- port = DEFAULT_PORT
19
- server_instance = nil
20
- mock.proxy(RailsServer).new(
21
- rails_root,
22
- host,
23
- port
24
- ) do |new_instance|
25
- server_instance = new_instance
26
- end
27
-
28
- mock(EventMachine).run.yields
29
- mock(EventMachine).start_server(host, port, ::Thin::JsTestCoreConnection)
30
- RailsServer.run(rails_root)
31
- Server.instance.should == server_instance
32
- end
33
- end
34
-
35
- describe "#initialize" do
36
- it "sets the server paths based on the passed in rails root" do
37
- rails_root = "/rails/root"
38
- server = RailsServer.new(rails_root)
39
- server.spec_root_path.should == "#{rails_root}/spec/javascripts"
40
- server.implementation_root_path.should == "#{rails_root}/public/javascripts"
41
- server.public_path.should == "#{rails_root}/public"
42
- end
43
- end
44
- end
45
- end
@@ -1,52 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../unit_spec_helper")
2
-
3
- module JsTestCore
4
- module Resources
5
- describe Dir do
6
- attr_reader :dir, :absolute_path, :relative_path
7
-
8
- describe "GET /stylesheets - Top level directory" do
9
- it "returns a page with a of files in the directory" do
10
- mock(connection).send_head()
11
- mock(connection).send_body(%r(<a href="example.css">example.css</a>))
12
-
13
- connection.receive_data("GET /stylesheets HTTP/1.1\r\nHost: _\r\n\r\n")
14
- end
15
- end
16
-
17
- describe "GET /javascripts/subdir - Subdirectory" do
18
- it "returns a page with a of files in the directory" do
19
- mock(connection).send_head()
20
- mock(connection).send_body(%r(<a href="bar.js">bar.js</a>))
21
-
22
- connection.receive_data("GET /javascripts/subdir HTTP/1.1\r\nHost: _\r\n\r\n")
23
- end
24
- end
25
-
26
- describe "GET /javascripts/i_dont_exist - FileNotFound" do
27
- it "returns a 404 error" do
28
- mock(connection).send_head(404)
29
- mock(connection).send_body("")
30
-
31
- connection.receive_data("GET /javascripts/i_dont_exist HTTP/1.1\r\nHost: _\r\n\r\n")
32
- end
33
- end
34
-
35
- describe "#glob" do
36
- before do
37
- @absolute_path = spec_root_path
38
- @relative_path = "/specs"
39
- @dir = Resources::Dir.new(:connection => connection, :absolute_path => absolute_path, :relative_path => relative_path)
40
- end
41
-
42
- it "returns an array of matching Files under this directory with the correct relative paths" do
43
- globbed_files = dir.glob("/**/*_spec.js")
44
- globbed_files.size.should == 3
45
- globbed_files.should contain_spec_file_with_correct_paths("/failing_spec.js")
46
- globbed_files.should contain_spec_file_with_correct_paths("/foo/failing_spec.js")
47
- globbed_files.should contain_spec_file_with_correct_paths("/foo/passing_spec.js")
48
- end
49
- end
50
- end
51
- end
52
- end
@@ -1,16 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../unit_spec_helper")
2
-
3
- module JsTestCore
4
- module Resources
5
- describe FileNotFound do
6
- describe "GET /invalid_path" do
7
- it "returns a page with a of files in the directory" do
8
- mock(connection).send_head(404)
9
- mock(connection).send_body("")
10
-
11
- connection.receive_data("GET /invalid_path HTTP/1.1\r\nHost: _\r\n\r\n")
12
- end
13
- end
14
- end
15
- end
16
- end
@@ -1,303 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../../unit_spec_helper")
2
-
3
- module JsTestCore
4
- module Resources
5
- describe Runner do
6
- attr_reader :request, :driver, :session_id, :selenium_browser_start_command, :body
7
-
8
- def self.before_with_selenium_browser_start_command(selenium_browser_start_command="selenium browser start command")
9
- before do
10
- @driver = FakeSeleniumDriver.new
11
- @session_id = FakeSeleniumDriver::SESSION_ID
12
- @selenium_browser_start_command = selenium_browser_start_command
13
- @body = "selenium_browser_start_command=#{selenium_browser_start_command}"
14
- stub(Selenium::SeleniumDriver).new('localhost', 4444, selenium_browser_start_command, 'http://0.0.0.0:8080') do
15
- driver
16
- end
17
- end
18
- end
19
-
20
- after do
21
- Runner.send(:instances).clear
22
- end
23
-
24
- describe ".find" do
25
- attr_reader :runner
26
- before_with_selenium_browser_start_command
27
- before do
28
- @runner = Runner.new(:connection => connection, :selenium_browser_start_command => selenium_browser_start_command)
29
- stub(runner).driver {driver}
30
- stub(driver).session_id {session_id}
31
- Runner.register(runner)
32
- end
33
-
34
- context "when passed an id for which there is a corresponding Runner" do
35
- it "returns the Runner" do
36
- Runner.find(session_id).should == runner
37
- end
38
- end
39
-
40
- context "when passed an id for which there is no corresponding Runner" do
41
- it "returns nil" do
42
- invalid_id = "666666666666666"
43
- Runner.find(invalid_id).should be_nil
44
- end
45
- end
46
- end
47
-
48
- describe ".finalize" do
49
- attr_reader :runner
50
- before_with_selenium_browser_start_command
51
- describe "when there is a runner for the passed in session_id" do
52
- before do
53
- @runner = Runner.new(:connection => connection, :selenium_browser_start_command => selenium_browser_start_command)
54
- stub(runner).driver {driver}
55
- stub(driver).session_id {"DEADBEEF"}
56
-
57
- Runner.register(runner)
58
- runner.session_id.should == session_id
59
- end
60
-
61
- it "finalizes the Runner that has the session_id and keeps the Runner in memory" do
62
- mock.proxy(driver).stop
63
- mock.proxy(runner).finalize("Browser output")
64
- Runner.find(session_id).should == runner
65
- Runner.finalize(session_id, "Browser output")
66
- Runner.find(session_id).should == runner
67
- end
68
- end
69
-
70
- describe "when there is not a runner for the passed in session_id" do
71
- it "does nothing" do
72
- lambda do
73
- Runner.finalize("6666666", "nothing happens")
74
- end.should_not raise_error
75
- end
76
- end
77
- end
78
-
79
- describe "POST /runners" do
80
- before_with_selenium_browser_start_command
81
- before do
82
- stub(Thread).start.yields
83
- stub(connection).send_head
84
- stub(connection).send_body
85
- end
86
-
87
- it "responds with a 200 and the session_id" do
88
- mock(connection).send_head
89
- mock(connection).send_body("session_id=#{session_id}")
90
- connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
91
- end
92
-
93
- it "starts the Selenium Driver, creates a SessionID cookie, and opens the spec page" do
94
- mock(driver).start
95
- stub(driver).session_id {session_id}
96
- mock(driver).create_cookie("session_id=#{session_id}")
97
- mock(driver).open("/")
98
- mock(driver).open("/specs")
99
-
100
- mock(Selenium::SeleniumDriver).new('localhost', 4444, selenium_browser_start_command, 'http://0.0.0.0:8080') do
101
- driver
102
- end
103
- connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
104
- end
105
-
106
- describe "when a selenium_host parameter is passed into the request" do
107
- before do
108
- body << "&selenium_host=another-machine"
109
- end
110
-
111
- it "starts the Selenium Driver with the passed in selenium_host" do
112
- mock(Selenium::SeleniumDriver).new('another-machine', 4444, selenium_browser_start_command, 'http://0.0.0.0:8080') do
113
- driver
114
- end
115
- connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
116
- end
117
- end
118
-
119
- describe "when a selenium_host parameter is not passed into the request" do
120
- before do
121
- body << "&selenium_host="
122
- end
123
-
124
- it "starts the Selenium Driver from localhost" do
125
- mock(Selenium::SeleniumDriver).new('localhost', 4444, selenium_browser_start_command, 'http://0.0.0.0:8080') do
126
- driver
127
- end
128
- connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
129
- end
130
- end
131
-
132
- describe "when a selenium_port parameter is passed into the request" do
133
- before do
134
- body << "&selenium_port=4000"
135
- end
136
-
137
- it "starts the Selenium Driver with the passed in selenium_port" do
138
- mock(Selenium::SeleniumDriver).new('localhost', 4000, selenium_browser_start_command, 'http://0.0.0.0:8080') do
139
- driver
140
- end
141
- connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
142
- end
143
- end
144
-
145
- describe "when a selenium_port parameter is not passed into the request" do
146
- before do
147
- body << "&selenium_port="
148
- end
149
-
150
- it "starts the Selenium Driver from localhost" do
151
- mock(Selenium::SeleniumDriver).new('localhost', 4444, selenium_browser_start_command, 'http://0.0.0.0:8080') do
152
- driver
153
- end
154
- connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
155
- end
156
- end
157
-
158
- describe "when a spec_url is passed into the request" do
159
- it "runs Selenium with the passed in host and part to run the specified spec session in Firefox" do
160
- mock(Selenium::SeleniumDriver).new('localhost', 4444, selenium_browser_start_command, 'http://another-host:8080') do
161
- driver
162
- end
163
- mock(driver).start
164
- stub(driver).create_cookie
165
- mock(driver).open("/")
166
- mock(driver).open("/specs/subdir")
167
- mock(driver).session_id {session_id}.at_least(1)
168
-
169
- body << "&spec_url=http://another-host:8080/specs/subdir"
170
- connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
171
- end
172
- end
173
-
174
- describe "when a spec_url is not passed into the request" do
175
- before do
176
- mock(Selenium::SeleniumDriver).new('localhost', 4444, selenium_browser_start_command, 'http://0.0.0.0:8080') do
177
- driver
178
- end
179
- end
180
-
181
- it "uses Selenium to run the entire spec session in Firefox" do
182
- mock(driver).start
183
- stub(driver).create_cookie
184
- mock(driver).open("/")
185
- mock(driver).open("/specs")
186
- mock(driver).session_id {session_id}.at_least(1)
187
-
188
- body << "&spec_url="
189
- connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
190
- end
191
- end
192
- end
193
-
194
- describe "POST /runners/firefox" do
195
- before_with_selenium_browser_start_command "*firefox"
196
-
197
- it "creates a Runner whose #driver started with '*firefox'" do
198
- stub(Thread).start.yields
199
- stub(connection).send_head
200
- stub(connection).send_body
201
-
202
- mock(connection).send_head
203
- mock(connection).send_body("session_id=#{session_id}")
204
-
205
- Runner.find(session_id).should be_nil
206
- connection.receive_data("POST /runners/firefox HTTP/1.1\r\nHost: _\r\n\r\n")
207
- runner = Runner.find(session_id)
208
- runner.class.should == Runner
209
- runner.driver.should == driver
210
- end
211
- end
212
-
213
- describe "POST /runners/iexplore" do
214
- before_with_selenium_browser_start_command "*iexplore"
215
-
216
- it "creates a Runner whose #driver started with '*iexplore'" do
217
- stub(Thread).start.yields
218
- stub(connection).send_head
219
- stub(connection).send_body
220
-
221
- mock(connection).send_head
222
- mock(connection).send_body("session_id=#{session_id}")
223
-
224
- Runner.find(session_id).should be_nil
225
- connection.receive_data("POST /runners/iexplore HTTP/1.1\r\nHost: _\r\n\r\n")
226
- runner = Runner.find(session_id)
227
- runner.class.should == Runner
228
- runner.driver.should == driver
229
- end
230
- end
231
-
232
- describe "#running?" do
233
- before_with_selenium_browser_start_command
234
- context "when the driver#session_started? is true" do
235
- it "returns true" do
236
- create_runner_connection = create_connection
237
- stub(create_runner_connection).send_head
238
- stub(create_runner_connection).send_body
239
- create_runner_connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
240
-
241
- runner = Resources::Runner.find(session_id)
242
- runner.driver.session_started?.should be_true
243
- runner.should be_running
244
- end
245
- end
246
-
247
- context "when the driver#session_started? is false" do
248
- it "returns false" do
249
- create_runner_connection = create_connection
250
- stub(create_runner_connection).send_head
251
- stub(create_runner_connection).send_body
252
- create_runner_connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
253
-
254
- runner = Resources::Runner.find(session_id)
255
- runner.driver.stop
256
- runner.driver.session_started?.should be_false
257
- runner.should_not be_running
258
- end
259
- end
260
- end
261
-
262
- describe "#finalize" do
263
- attr_reader :runner
264
- before_with_selenium_browser_start_command
265
- before do
266
- create_runner_connection = create_connection
267
- stub(create_runner_connection).send_head
268
- stub(create_runner_connection).send_body
269
- create_runner_connection.receive_data("POST /runners HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
270
- @runner = Resources::Runner.find(session_id)
271
- mock.proxy(driver).stop
272
- end
273
-
274
- it "kills the browser and stores the #session_run_result" do
275
- session_run_result = "The session run result"
276
- runner.finalize(session_run_result)
277
- runner.session_run_result.should == session_run_result
278
- end
279
-
280
- it "sets #session_run_result" do
281
- runner.finalize("the result")
282
- runner.session_run_result.should == "the result"
283
- end
284
-
285
- context "when passed an empty string" do
286
- it "causes #successful? to be true" do
287
- runner.finalize("")
288
- runner.should be_successful
289
- runner.should_not be_failed
290
- end
291
- end
292
-
293
- context "when passed a non-empty string" do
294
- it "causes #successful? to be false" do
295
- runner.finalize("A bunch of error stuff")
296
- runner.should_not be_successful
297
- runner.should be_failed
298
- end
299
- end
300
- end
301
- end
302
- end
303
- end
@@ -1,79 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/../../unit_spec_helper")
2
-
3
- module JsTestCore
4
- module Resources
5
- describe SessionFinish do
6
- attr_reader :stdout
7
- before do
8
- @stdout = StringIO.new
9
- SessionFinish.const_set(:STDOUT, stdout)
10
- end
11
-
12
- after do
13
- SessionFinish.__send__(:remove_const, :STDOUT)
14
- end
15
-
16
-
17
- describe "POST /session/finish" do
18
- context "when session_id cookie is not set" do
19
- it "writes the body of the request to stdout" do
20
- stub(connection).send_head
21
- stub(connection).send_body
22
-
23
- text = "The text in the POST body"
24
- body = "text=#{text}"
25
- connection.receive_data("POST /session/finish HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
26
- stdout.string.should == "#{text}\n"
27
- end
28
-
29
- it "sends an empty body" do
30
- text = "The text in the POST body"
31
- body = "text=#{text}"
32
-
33
- mock(connection).send_head
34
- mock(connection).send_body("")
35
- connection.receive_data("POST /session/finish HTTP/1.1\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
36
- end
37
- end
38
-
39
- context "when session_id cookie is set'" do
40
- attr_reader :session_id, :driver
41
- before do
42
- @session_id = FakeSeleniumDriver::SESSION_ID
43
- @driver = FakeSeleniumDriver.new
44
- stub(Selenium::SeleniumDriver).new('localhost', 4444, '*firefox', 'http://0.0.0.0:8080') do
45
- driver
46
- end
47
-
48
- firefox_connection = Thin::JsTestCoreConnection.new(Guid.new)
49
- stub(firefox_connection).send_head
50
- stub(firefox_connection).send_body
51
- stub(firefox_connection).close_connection
52
- firefox_connection.receive_data("POST /runners/firefox HTTP/1.1\r\nHost: _\r\n\r\n")
53
- end
54
-
55
- it "calls Runner.finalize" do
56
- text = "The text in the POST body"
57
- body = "text=#{text}"
58
- stub(connection).send_head
59
- stub(connection).send_body
60
- mock.proxy(Runner).finalize(session_id.to_s, text)
61
- mock(driver).stop
62
- stub(connection).close_connection
63
-
64
- connection.receive_data("POST /session/finish HTTP/1.1\r\nCookie: session_id=#{session_id}\r\nHost: _\r\nContent-Length: #{body.length}\r\n\r\n#{body}")
65
- end
66
-
67
- it "responds with a blank body" do
68
- stub(driver).stop
69
- stub(connection).close_connection
70
-
71
- mock(connection).send_head
72
- mock(connection).send_body("")
73
- connection.receive_data("POST /session/finish HTTP/1.1\r\nCookie: session_id=#{session_id}\r\nHost: _\r\nContent-Length: 0\r\n\r\n")
74
- end
75
- end
76
- end
77
- end
78
- end
79
- end