kookaburra 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 91a3be166371e05653b174532301b1afa1d4adc5
4
- data.tar.gz: cb1a9a42aa16a9500612dc127c40b8e8129f0894
3
+ metadata.gz: cc92c0ad611819f4fa8b18a0199b58d76f542e3d
4
+ data.tar.gz: 4258ae554e2d6fdaa225ebdbae1bce175333153c
5
5
  SHA512:
6
- metadata.gz: cc48949a20b29008c1e956ff877d64ab80c0042e5c22498c2f712046ac798905009a372afa9811f24cd0f7ab6bb959b0159a555239d83ed6aaabedb3c7b7c9c0
7
- data.tar.gz: 731ef0d1e26935a7ea06847e6c59d542b8a10dc016af8d4202d1e17a30bb5bb830bec8b971cbcdb9fb2e6e0f593a530506154ba0da71ae70fa3737b0f91cd9a8
6
+ metadata.gz: 4f2d5c643f9169c22b87d80a46103066409cf7f12a0b0395ad6a97c137183e991f36f23dfab81097bfa0d69a53107aab4c44ea7fabcef054b5fd2cbd77358765
7
+ data.tar.gz: d9ebcf011b5cc453835902359836dbf325fe9121f3e98613a637c1cd5ba1eef98c4a7888eb6cfc99a1e1e23fee09ca40017b47eddc80276fa1b044c0804b01c2
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kookaburra (1.2.1)
4
+ kookaburra (1.2.2)
5
5
  rest-client
6
6
 
7
7
  GEM
@@ -16,6 +16,7 @@ class Kookaburra
16
16
  else
17
17
  browser.visit(addressable.to_s)
18
18
  end
19
+ detect_server_error!
19
20
  end
20
21
  end
21
22
  end
@@ -1,3 +1,3 @@
1
1
  class Kookaburra
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
@@ -9,6 +9,8 @@ require 'sinatra/base'
9
9
  require 'json'
10
10
 
11
11
  describe "testing a Rack application with Kookaburra" do
12
+ include Kookaburra::TestHelpers
13
+
12
14
  describe "with an HTML interface" do
13
15
  describe "with a JSON API" do
14
16
  # This is the fixture Rack application against which the integration
@@ -163,6 +165,20 @@ describe "testing a Rack application with Kookaburra" do
163
165
  body content
164
166
  end
165
167
 
168
+ get '/error_page' do
169
+ content = <<-EOF
170
+ <html>
171
+ <head>
172
+ <title>Internal Server Error</title>
173
+ </head>
174
+ <body>
175
+ <p>A Purposeful Error</p>
176
+ </body>
177
+ </html>
178
+ EOF
179
+ body content
180
+ end
181
+
166
182
  error do
167
183
  e = request.env['sinatra.error']
168
184
  body << <<-EOF
@@ -231,6 +247,12 @@ describe "testing a Rack application with Kookaburra" do
231
247
  end
232
248
  end
233
249
 
250
+ class ErrorPage < Kookaburra::UIDriver::UIComponent
251
+ def component_path
252
+ '/error_page'
253
+ end
254
+ end
255
+
234
256
  class WidgetDataContainer
235
257
  def initialize(element)
236
258
  @element = element
@@ -293,6 +315,7 @@ describe "testing a Rack application with Kookaburra" do
293
315
  end
294
316
 
295
317
  class MyUIDriver < Kookaburra::UIDriver
318
+ ui_component :error_page, ErrorPage
296
319
  ui_component :sign_in_screen, SignInScreen
297
320
  ui_component :widget_list, WidgetList
298
321
  ui_component :widget_form, WidgetForm
@@ -302,6 +325,10 @@ describe "testing a Rack application with Kookaburra" do
302
325
  sign_in_screen.sign_in(mental_model.users[name])
303
326
  end
304
327
 
328
+ def error_on_purpose
329
+ address_bar.go_to error_page
330
+ end
331
+
305
332
  def view_widget_list
306
333
  address_bar.go_to widget_list
307
334
  end
@@ -325,25 +352,23 @@ describe "testing a Rack application with Kookaburra" do
325
352
 
326
353
  before(:all) do
327
354
  app_server.boot
328
- end
329
-
330
- after(:all) do
331
- app_server.shutdown
332
- end
333
355
 
334
- it "runs the tests against the app" do
335
356
  Kookaburra.configure do |c|
336
357
  c.ui_driver_class = MyUIDriver
337
358
  c.given_driver_class = MyGivenDriver
338
359
  c.app_host = 'http://127.0.0.1:%d' % app_server.port
339
360
  c.browser = Capybara::Session.new(:selenium)
340
361
  c.server_error_detection do |browser|
341
- browser.has_css?('head title', :text => 'Internal Server Error')
362
+ browser.has_css?('head title', :text => 'Internal Server Error', :visible => false)
342
363
  end
343
364
  end
365
+ end
344
366
 
345
- extend Kookaburra::TestHelpers
367
+ after(:all) do
368
+ app_server.shutdown
369
+ end
346
370
 
371
+ it "runs the tests against the app" do
347
372
  given.a_user(:bob)
348
373
  given.a_widget(:widget_a)
349
374
  given.a_widget(:widget_b, :name => 'Foo')
@@ -370,6 +395,11 @@ describe "testing a Rack application with Kookaburra" do
370
395
  ui.widget_list.widgets.should == k.get_data(:widgets).values_at(:widget_a, :widget_c)
371
396
  ui.widget_list.widgets.should match_mental_model_of(:widgets)
372
397
  end
398
+
399
+ it "catches errors based on the server error detection handler" do
400
+ expect { ui.error_on_purpose } \
401
+ .to raise_error(Kookaburra::UnexpectedResponse)
402
+ end
373
403
  end
374
404
  end
375
405
  end
@@ -8,8 +8,10 @@ describe Kookaburra::UIDriver::UIComponent::AddressBar do
8
8
  end
9
9
  }
10
10
 
11
+ let(:error_detector) { nil }
12
+
11
13
  let(:configuration) {
12
- double('Configuration', :browser => browser, :app_host => nil, :server_error_detection => nil)
14
+ double('Configuration', :browser => browser, :app_host => nil, :server_error_detection => error_detector)
13
15
  }
14
16
 
15
17
  let(:address_bar) {
@@ -22,11 +24,20 @@ describe Kookaburra::UIDriver::UIComponent::AddressBar do
22
24
  end
23
25
  end
24
26
 
25
- context 'when given a string' do
26
- it 'causes the browser to navigate to the (presumably URL) string' do
27
+ context 'when given an addressable object' do
28
+ it "causes the browser to navigate to the object's #url" do
27
29
  addressable = double('addressable', :url => 'http://site.example.com')
28
30
  address_bar.go_to addressable
29
31
  end
30
32
  end
33
+
34
+ context "when a server error would be detected" do
35
+ let(:error_detector) { ->(browser) { true } }
36
+
37
+ it 'raises a Kookaburra::UnexpectedResponse' do
38
+ expect { address_bar.go_to 'http://site.example.com' } \
39
+ .to raise_error(Kookaburra::UnexpectedResponse)
40
+ end
41
+ end
31
42
  end
32
43
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kookaburra
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Wilger