kookaburra 1.2.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 91a3be166371e05653b174532301b1afa1d4adc5
4
+ data.tar.gz: cb1a9a42aa16a9500612dc127c40b8e8129f0894
5
+ SHA512:
6
+ metadata.gz: cc48949a20b29008c1e956ff877d64ab80c0042e5c22498c2f712046ac798905009a372afa9811f24cd0f7ab6bb959b0159a555239d83ed6aaabedb3c7b7c9c0
7
+ data.tar.gz: 731ef0d1e26935a7ea06847e6c59d542b8a10dc016af8d4202d1e17a30bb5bb830bec8b971cbcdb9fb2e6e0f593a530506154ba0da71ae70fa3737b0f91cd9a8
data/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ before_install:
2
+ - "export DISPLAY=:99.0"
3
+ - "sh -e /etc/init.d/xvfb start"
4
+ rvm:
5
+ - "2.0.0"
6
+ - "1.9.3"
7
+ - "jruby-19mode"
8
+ env:
9
+ - "DISPLAY=:99.0"
data/Gemfile CHANGED
@@ -1,18 +1,4 @@
1
- source 'http://rubygems.org'
1
+ source 'https://rubygems.org'
2
2
 
3
- gem 'rest-client'
4
-
5
- # Add dependencies to develop your gem here.
6
- # Include everything needed to run rake, tests, features, etc.
7
- group :development do
8
- gem 'jruby-openssl', :platforms => :jruby
9
- gem 'rspec'
10
- gem 'capybara'
11
- gem 'yard'
12
- gem 'kramdown' # used by yard to format documentation, but not a dependency as far as the yard gem is concerned
13
- gem 'jeweler'
14
- gem 'reek'
15
- gem 'sinatra'
16
- gem 'find_a_port'
17
- gem 'json'
18
- end
3
+ # Specify your gem's dependencies in kookaburra.gemspec
4
+ gemspec
data/Gemfile.lock CHANGED
@@ -1,97 +1,91 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ kookaburra (1.2.1)
5
+ rest-client
6
+
1
7
  GEM
2
- remote: http://rubygems.org/
8
+ remote: https://rubygems.org/
3
9
  specs:
4
- addressable (2.3.2)
5
- bouncy-castle-java (1.5.0146.1)
6
- capybara (1.1.2)
10
+ capybara (2.2.0)
7
11
  mime-types (>= 1.16)
8
12
  nokogiri (>= 1.3.3)
9
13
  rack (>= 1.0.0)
10
14
  rack-test (>= 0.5.4)
11
- selenium-webdriver (~> 2.0)
12
- xpath (~> 0.1.4)
13
- childprocess (0.3.5)
14
- ffi (~> 1.0, >= 1.0.6)
15
- diff-lcs (1.1.3)
16
- ffi (1.1.5)
17
- ffi (1.1.5-java)
15
+ xpath (~> 2.0)
16
+ childprocess (0.3.9)
17
+ ffi (~> 1.0, >= 1.0.11)
18
+ diff-lcs (1.2.5)
19
+ ffi (1.9.3)
18
20
  find_a_port (1.0.1)
19
- git (1.2.5)
20
- jeweler (1.8.4)
21
- bundler (~> 1.0)
22
- git (>= 1.2.5)
23
- rake
24
- rdoc
25
- jruby-openssl (0.7.7)
26
- bouncy-castle-java (>= 1.5.0146.1)
27
- json (1.7.5)
28
- json (1.7.5-java)
29
- kramdown (0.14.0)
30
- libwebsocket (0.1.5)
31
- addressable
32
- mime-types (1.19)
33
- multi_json (1.3.6)
34
- nokogiri (1.5.5)
35
- nokogiri (1.5.5-java)
36
- rack (1.4.1)
37
- rack-protection (1.2.0)
21
+ json (1.8.1)
22
+ kramdown (1.2.0)
23
+ macaddr (1.6.1)
24
+ systemu (~> 2.5.0)
25
+ mime-types (2.0)
26
+ mini_portile (0.5.2)
27
+ multi_json (1.8.2)
28
+ nokogiri (1.6.0)
29
+ mini_portile (~> 0.5.0)
30
+ rack (1.5.2)
31
+ rack-protection (1.5.1)
38
32
  rack
39
33
  rack-test (0.6.2)
40
34
  rack (>= 1.0)
41
- rake (0.9.2.2)
42
- rdoc (3.12)
43
- json (~> 1.4)
44
- reek (1.2.12)
45
- ripper_ruby_parser (~> 0.0.7)
46
- ruby2ruby (~> 1.2.5)
47
- ruby_parser (~> 2.0)
48
- sexp_processor (~> 3.0)
35
+ rake (10.1.0)
36
+ reek (1.3.4)
37
+ ruby2ruby (~> 2.0.2)
38
+ ruby_parser (~> 3.2)
39
+ sexp_processor
49
40
  rest-client (1.6.7)
50
41
  mime-types (>= 1.16)
51
- ripper_ruby_parser (0.0.8)
52
- sexp_processor (~> 3.0)
53
- rspec (2.11.0)
54
- rspec-core (~> 2.11.0)
55
- rspec-expectations (~> 2.11.0)
56
- rspec-mocks (~> 2.11.0)
57
- rspec-core (2.11.1)
58
- rspec-expectations (2.11.3)
59
- diff-lcs (~> 1.1.3)
60
- rspec-mocks (2.11.3)
61
- ruby2ruby (1.2.5)
62
- ruby_parser (~> 2.0)
63
- sexp_processor (~> 3.0)
64
- ruby_parser (2.3.1)
65
- sexp_processor (~> 3.0)
66
- rubyzip (0.9.9)
67
- selenium-webdriver (2.25.0)
42
+ rspec (2.14.1)
43
+ rspec-core (~> 2.14.0)
44
+ rspec-expectations (~> 2.14.0)
45
+ rspec-mocks (~> 2.14.0)
46
+ rspec-core (2.14.7)
47
+ rspec-expectations (2.14.4)
48
+ diff-lcs (>= 1.1.3, < 2.0)
49
+ rspec-mocks (2.14.4)
50
+ ruby2ruby (2.0.6)
51
+ ruby_parser (~> 3.1)
52
+ sexp_processor (~> 4.0)
53
+ ruby_parser (3.2.2)
54
+ sexp_processor (~> 4.1)
55
+ rubyzip (1.0.0)
56
+ selenium-webdriver (2.37.0)
68
57
  childprocess (>= 0.2.5)
69
- libwebsocket (~> 0.1.3)
70
58
  multi_json (~> 1.0)
71
- rubyzip
72
- sexp_processor (3.2.0)
73
- sinatra (1.3.3)
74
- rack (~> 1.3, >= 1.3.6)
75
- rack-protection (~> 1.2)
76
- tilt (~> 1.3, >= 1.3.3)
77
- tilt (1.3.3)
78
- xpath (0.1.4)
59
+ rubyzip (~> 1.0.0)
60
+ websocket (~> 1.0.4)
61
+ sexp_processor (4.4.0)
62
+ sinatra (1.4.4)
63
+ rack (~> 1.4)
64
+ rack-protection (~> 1.4)
65
+ tilt (~> 1.3, >= 1.3.4)
66
+ systemu (2.5.2)
67
+ tilt (1.4.1)
68
+ uuid (2.3.7)
69
+ macaddr (~> 1.0)
70
+ websocket (1.0.7)
71
+ xpath (2.0.0)
79
72
  nokogiri (~> 1.3)
80
- yard (0.8.2.1)
73
+ yard (0.8.7.3)
81
74
 
82
75
  PLATFORMS
83
- java
84
76
  ruby
85
77
 
86
78
  DEPENDENCIES
79
+ bundler (~> 1.3)
87
80
  capybara
88
81
  find_a_port
89
- jeweler
90
- jruby-openssl
91
82
  json
83
+ kookaburra!
92
84
  kramdown
85
+ rake
93
86
  reek
94
- rest-client
95
87
  rspec
88
+ selenium-webdriver
96
89
  sinatra
90
+ uuid
97
91
  yard
data/LICENSE.txt CHANGED
@@ -1,4 +1,6 @@
1
- Copyright (c) 2011 John Wilger <johnwilger@gmail.com>
1
+ Copyright (c) 2013 John Wilger
2
+
3
+ MIT License
2
4
 
3
5
  Permission is hereby granted, free of charge, to any person obtaining
4
6
  a copy of this software and associated documentation files (the
data/README.markdown CHANGED
@@ -5,8 +5,8 @@ order to keep acceptance tests maintainable.
5
5
 
6
6
  ## Requirements ##
7
7
 
8
- Requires Ruby 1.9. Tested with both MRI and JRuby (note that you must run
9
- JRuby in 1.9 compatability mode.)
8
+ Requires Ruby 1.9.3 or greater. Tested with both MRI and JRuby (note
9
+ that you must run JRuby in 1.9 compatability mode.)
10
10
 
11
11
  ## Installation ##
12
12
 
data/Rakefile CHANGED
@@ -1,53 +1,10 @@
1
1
  # encoding: utf-8
2
2
 
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "kookaburra"
18
- gem.homepage = "http://github.com/projectdx/kookaburra"
19
- gem.license = "MIT"
20
- gem.summary = %Q{WindowDriver testing pattern for Ruby apps}
21
- gem.description = %Q{Cucumber + Capybara = Kookaburra? It made sense at the time.}
22
- gem.email = "johnwilger@gmail.com"
23
- gem.authors = ["John Wilger", "Sam Livingston-Gray", "Ravi Gadad"]
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
27
-
3
+ require 'bundler/gem_tasks'
28
4
  require 'rspec/core/rake_task'
29
5
 
30
6
  task :default => :spec
31
-
32
- # TODO: figure out how to get rake task working under JRuby and rbenv
33
- if defined?(JRUBY_VERSION) && ENV['RBENV_VERSION']
34
- desc 'Run specs'
35
- task :spec do
36
- msg = <<-EOM
37
- ********************************************************************************
38
- * You appear to be running under JRuby and using rbenv.
39
- *
40
- * For some reason the `rake spec` command isn't working correctly in
41
- * these circumstances. However, you should be able to just run the
42
- * `rspec` command directly.
43
- ********************************************************************************
44
- EOM
45
- raise msg
46
- end
47
- else
48
- desc 'Run specs'
49
- RSpec::Core::RakeTask.new
50
- end
7
+ RSpec::Core::RakeTask.new
51
8
 
52
9
  require 'reek/rake/task'
53
10
  Reek::Rake::Task.new do |t|
@@ -58,13 +15,3 @@ end
58
15
 
59
16
  require 'yard'
60
17
  YARD::Rake::YardocTask.new
61
-
62
- desc "Run rake on all supported rubies"
63
- task :all_rubies do
64
- rubies = %w[ruby-1.9.3 ruby-1.9.2 ree-1.8.7 ruby-1.8.7]
65
- rubies.each do |ruby_version|
66
- puts "Testing with #{ruby_version}"
67
- system "rvm #{ruby_version}@kookaburra do rake" \
68
- or raise "Failed to run rake with #{ruby_version}!"
69
- end
70
- end
data/kookaburra.gemspec CHANGED
@@ -1,112 +1,35 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'kookaburra/version'
5
5
 
6
- Gem::Specification.new do |s|
7
- s.name = "kookaburra"
8
- s.version = "1.2.0"
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "kookaburra"
8
+ spec.version = Kookaburra::VERSION
9
+ spec.authors = ["John Wilger", "Sam Livingston-Gray", "Ravi Gadad"]
10
+ spec.email = ["johnwilger@gmail.com"]
11
+ spec.description = %q{Cucumber + Capybara = Kookaburra? It made sense at the time.}
12
+ spec.summary = %q{Window Driver pattern for acceptance tests}
13
+ spec.homepage = "http://johnwilger.com/kookaburra/"
14
+ spec.license = "MIT"
9
15
 
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["John Wilger", "Sam Livingston-Gray", "Ravi Gadad"]
12
- s.date = "2013-03-16"
13
- s.description = "Cucumber + Capybara = Kookaburra? It made sense at the time."
14
- s.email = "johnwilger@gmail.com"
15
- s.extra_rdoc_files = [
16
- "LICENSE.txt",
17
- "README.markdown"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".rspec",
22
- ".rvmrc",
23
- ".yardopts",
24
- "Gemfile",
25
- "Gemfile.lock",
26
- "LICENSE.txt",
27
- "README.markdown",
28
- "Rakefile",
29
- "VERSION",
30
- "kookaburra.gemspec",
31
- "lib/core_ext/object/to_param.rb",
32
- "lib/core_ext/object/to_query.rb",
33
- "lib/kookaburra.rb",
34
- "lib/kookaburra/api_driver.rb",
35
- "lib/kookaburra/assertion.rb",
36
- "lib/kookaburra/configuration.rb",
37
- "lib/kookaburra/dependency_accessor.rb",
38
- "lib/kookaburra/exceptions.rb",
39
- "lib/kookaburra/given_driver.rb",
40
- "lib/kookaburra/mental_model.rb",
41
- "lib/kookaburra/mental_model_matcher.rb",
42
- "lib/kookaburra/rack_app_server.rb",
43
- "lib/kookaburra/test_helpers.rb",
44
- "lib/kookaburra/ui_driver.rb",
45
- "lib/kookaburra/ui_driver/has_ui_components.rb",
46
- "lib/kookaburra/ui_driver/scoped_browser.rb",
47
- "lib/kookaburra/ui_driver/ui_component.rb",
48
- "lib/kookaburra/ui_driver/ui_component/address_bar.rb",
49
- "spec/integration/test_a_rack_application_spec.rb",
50
- "spec/kookaburra/api_driver_spec.rb",
51
- "spec/kookaburra/configuration_spec.rb",
52
- "spec/kookaburra/mental_model_matcher_spec.rb",
53
- "spec/kookaburra/mental_model_spec.rb",
54
- "spec/kookaburra/test_helpers_spec.rb",
55
- "spec/kookaburra/ui_driver/scoped_browser_spec.rb",
56
- "spec/kookaburra/ui_driver/ui_component/address_bar_spec.rb",
57
- "spec/kookaburra/ui_driver/ui_component_spec.rb",
58
- "spec/kookaburra/ui_driver_spec.rb",
59
- "spec/kookaburra_spec.rb",
60
- "spec/support/shared_examples/it_can_have_ui_components.rb",
61
- "spec/support/shared_examples/it_can_make_assertions.rb",
62
- "spec/support/shared_examples/it_has_a_dependency_accessor.rb"
63
- ]
64
- s.homepage = "http://github.com/projectdx/kookaburra"
65
- s.licenses = ["MIT"]
66
- s.require_paths = ["lib"]
67
- s.rubygems_version = "1.8.23"
68
- s.summary = "WindowDriver testing pattern for Ruby apps"
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
69
20
 
70
- if s.respond_to? :specification_version then
71
- s.specification_version = 3
21
+ spec.add_dependency 'rest-client'
72
22
 
73
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
74
- s.add_runtime_dependency(%q<rest-client>, [">= 0"])
75
- s.add_development_dependency(%q<jruby-openssl>, [">= 0"])
76
- s.add_development_dependency(%q<rspec>, [">= 0"])
77
- s.add_development_dependency(%q<capybara>, [">= 0"])
78
- s.add_development_dependency(%q<yard>, [">= 0"])
79
- s.add_development_dependency(%q<kramdown>, [">= 0"])
80
- s.add_development_dependency(%q<jeweler>, [">= 0"])
81
- s.add_development_dependency(%q<reek>, [">= 0"])
82
- s.add_development_dependency(%q<sinatra>, [">= 0"])
83
- s.add_development_dependency(%q<find_a_port>, [">= 0"])
84
- s.add_development_dependency(%q<json>, [">= 0"])
85
- else
86
- s.add_dependency(%q<rest-client>, [">= 0"])
87
- s.add_dependency(%q<jruby-openssl>, [">= 0"])
88
- s.add_dependency(%q<rspec>, [">= 0"])
89
- s.add_dependency(%q<capybara>, [">= 0"])
90
- s.add_dependency(%q<yard>, [">= 0"])
91
- s.add_dependency(%q<kramdown>, [">= 0"])
92
- s.add_dependency(%q<jeweler>, [">= 0"])
93
- s.add_dependency(%q<reek>, [">= 0"])
94
- s.add_dependency(%q<sinatra>, [">= 0"])
95
- s.add_dependency(%q<find_a_port>, [">= 0"])
96
- s.add_dependency(%q<json>, [">= 0"])
97
- end
98
- else
99
- s.add_dependency(%q<rest-client>, [">= 0"])
100
- s.add_dependency(%q<jruby-openssl>, [">= 0"])
101
- s.add_dependency(%q<rspec>, [">= 0"])
102
- s.add_dependency(%q<capybara>, [">= 0"])
103
- s.add_dependency(%q<yard>, [">= 0"])
104
- s.add_dependency(%q<kramdown>, [">= 0"])
105
- s.add_dependency(%q<jeweler>, [">= 0"])
106
- s.add_dependency(%q<reek>, [">= 0"])
107
- s.add_dependency(%q<sinatra>, [">= 0"])
108
- s.add_dependency(%q<find_a_port>, [">= 0"])
109
- s.add_dependency(%q<json>, [">= 0"])
110
- end
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec"
26
+ spec.add_development_dependency "selenium-webdriver"
27
+ spec.add_development_dependency "capybara"
28
+ spec.add_development_dependency "reek"
29
+ spec.add_development_dependency "yard"
30
+ spec.add_development_dependency "kramdown"
31
+ spec.add_development_dependency "sinatra"
32
+ spec.add_development_dependency "uuid"
33
+ spec.add_development_dependency "find_a_port"
34
+ spec.add_development_dependency "json"
111
35
  end
112
-
@@ -20,8 +20,9 @@ class Kookaburra
20
20
  # '/signup'
21
21
  # end
22
22
  #
23
+ # # If it can't be inferred from the class name
23
24
  # def component_locator
24
- # '#sign_up_form'
25
+ # '#user-sign-up'
25
26
  # end
26
27
  #
27
28
  # def email
@@ -70,9 +71,10 @@ class Kookaburra
70
71
  # You can get around this by calling it as `self.select`. See
71
72
  # https://gist.github.com/3192103 for an example of this behavior.
72
73
  #
73
- # @abstract Subclass and implement (at least) {#component_locator}. Unless
74
- # you override the default implementation of {#url}, you must also
75
- # override the {#component_path} method.
74
+ # @abstract Unless you override the default implementation of {#url}, you
75
+ # must override the {#component_path} method if you want the component to
76
+ # be navigable by the {Kookaburra::UIDriver::UIComponent::AddressBar}
77
+ # component.
76
78
  class UIComponent < SimpleDelegator
77
79
  include Assertion
78
80
  extend HasUIComponents
@@ -132,12 +134,28 @@ class Kookaburra
132
134
  raise ConfigurationError, "You must define #{self.class.name}#component_path."
133
135
  end
134
136
 
135
- # @abstract
136
- # @return [String] the CSS3 selector that will find the element in the DOM
137
- # @raise [Kookaburra::ConfigurationError] raised if you haven't provided
138
- # an implementation
137
+ # The CSS3 selector that will find the element in the DOM
138
+ #
139
+ # Defaults to a "#" followed by the snake-cased (underscored) version of
140
+ # the class name with '/' replaced by '-'. Override this method in your
141
+ # subclasses if you need a different CSS3 selector to find your component.
142
+ #
143
+ # @example
144
+ # class My::Awesome::ComponentThingy < Kookaburra::UIDriver::UIComponent
145
+ # end
146
+ #
147
+ # x = My::Awesome::ComponentThingy.allocate
148
+ # x.send(:component_locator)
149
+ # #=> '#my-awesome-component_thingy'
150
+ #
151
+ # @return [String]
139
152
  def component_locator
140
- raise ConfigurationError, "You must define #{self.class.name}#component_locator."
153
+ "#" + self.class.name.gsub(/::/, '/').
154
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
155
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
156
+ tr("-", "_").
157
+ gsub('/', '-').
158
+ downcase
141
159
  end
142
160
 
143
161
  # Runs the server error detection function specified in
@@ -0,0 +1,3 @@
1
+ class Kookaburra
2
+ VERSION = "1.2.1"
3
+ end
@@ -2,6 +2,7 @@ require 'kookaburra/test_helpers'
2
2
  require 'kookaburra/api_driver'
3
3
  require 'kookaburra/rack_app_server'
4
4
  require 'capybara'
5
+ require 'uuid'
5
6
 
6
7
  # These are required for the Rack app used for testing
7
8
  require 'sinatra/base'
@@ -102,17 +103,18 @@ describe "testing a Rack application with Kookaburra" do
102
103
  else
103
104
  {:name => params['name']}
104
105
  end
105
- widget_data[:id] = `uuidgen`.strip
106
+ widget_data[:id] = UUID.new.generate
106
107
  @@widgets << widget_data
107
108
  @@last_widget_created = widget_data
108
- if request.accept? 'text/html'
109
- redirect to('/widgets')
110
- elsif request.accept? 'application/json'
111
- status 201
112
- headers 'Content-Type' => 'application/json'
113
- body widget_data.to_json
114
- else
115
- redirect to('/widgets')
109
+ request.accept.each do |type|
110
+ case type.to_s
111
+ when 'application/json'
112
+ status 201
113
+ headers 'Content-Type' => 'application/json'
114
+ halt widget_data.to_json
115
+ else
116
+ halt redirect to('/widgets')
117
+ end
116
118
  end
117
119
  end
118
120
 
@@ -216,9 +218,11 @@ describe "testing a Rack application with Kookaburra" do
216
218
  '/session/new'
217
219
  end
218
220
 
219
- def component_locator
220
- '#sign_in_screen'
221
- end
221
+ # Use default component locator value
222
+ #
223
+ # def component_locator
224
+ # '#sign_in_screen'
225
+ # end
222
226
 
223
227
  def sign_in(user_data)
224
228
  fill_in 'Email:', :with => user_data['email']
@@ -5,18 +5,18 @@ describe Kookaburra::APIDriver do
5
5
  URI.join('http://example.com', uri).to_s
6
6
  end
7
7
 
8
- let(:configuration) { stub('Configuration', :app_host => 'http://example.com') }
8
+ let(:configuration) { double('Configuration', :app_host => 'http://example.com') }
9
9
 
10
10
  let(:api) { Kookaburra::APIDriver.new(configuration, client) }
11
11
 
12
- let(:response) { stub('RestClient::Response', body: 'foo', code: 200) }
12
+ let(:response) { double('RestClient::Response', body: 'foo', code: 200) }
13
13
 
14
- let(:client) { stub('RestClient') }
14
+ let(:client) { double('RestClient') }
15
15
 
16
16
  shared_examples_for 'any type of HTTP request' do |http_verb|
17
17
  context "(#{http_verb})" do
18
18
  before(:each) do
19
- client.stub!(http_verb => response)
19
+ client.stub(http_verb => response)
20
20
  end
21
21
 
22
22
  it 'returns the response body' do
@@ -24,8 +24,8 @@ describe Kookaburra::APIDriver do
24
24
  end
25
25
 
26
26
  it 'raises an UnexpectedResponse if the request is not successful' do
27
- response.stub!(code: 500)
28
- client.stub!(http_verb).and_raise(RestClient::Exception.new(response))
27
+ response.stub(code: 500)
28
+ client.stub(http_verb).and_raise(RestClient::Exception.new(response))
29
29
  lambda { api.send(http_verb, '/foo') } \
30
30
  .should raise_error(Kookaburra::UnexpectedResponse)
31
31
  end
@@ -116,7 +116,7 @@ describe Kookaburra::APIDriver do
116
116
  shared_examples_for 'it encodes request data' do |http_verb|
117
117
  context "(#{http_verb})" do
118
118
  before(:each) do
119
- client.stub!(http_verb => response)
119
+ client.stub(http_verb => response)
120
120
  end
121
121
 
122
122
  context 'when a custom encoder is specified' do
@@ -27,7 +27,7 @@ describe Kookaburra::Configuration do
27
27
  end
28
28
 
29
29
  it 'changes if #app_host changes' do
30
- URI.stub!(:parse) do |url|
30
+ URI.stub(:parse) do |url|
31
31
  url.to_sym
32
32
  end
33
33
  subject.app_host = 'http://example.com'
@@ -2,7 +2,7 @@ require 'kookaburra/ui_driver/scoped_browser'
2
2
 
3
3
  describe Kookaburra::UIDriver::ScopedBrowser do
4
4
  it 'forwards all method calls to the browser but scopes them to the component locator' do
5
- browser = mock('Browser')
5
+ browser = double('Browser')
6
6
  browser.should_receive(:within).with('#a_component_locator').and_yield
7
7
  browser.should_receive(:some_other_method).with(:foo)
8
8
  subject = Kookaburra::UIDriver::ScopedBrowser.new(browser, lambda { '#a_component_locator' })
@@ -3,13 +3,13 @@ require 'kookaburra/ui_driver/ui_component/address_bar'
3
3
  describe Kookaburra::UIDriver::UIComponent::AddressBar do
4
4
  describe '#go_to' do
5
5
  let(:browser) {
6
- mock('Capybara::Session').tap do |b|
6
+ double('Capybara::Session').tap do |b|
7
7
  b.should_receive(:visit).with('http://site.example.com')
8
8
  end
9
9
  }
10
10
 
11
11
  let(:configuration) {
12
- stub('Configuration', :browser => browser, :app_host => nil, :server_error_detection => nil)
12
+ double('Configuration', :browser => browser, :app_host => nil, :server_error_detection => nil)
13
13
  }
14
14
 
15
15
  let(:address_bar) {
@@ -24,7 +24,7 @@ describe Kookaburra::UIDriver::UIComponent::AddressBar do
24
24
 
25
25
  context 'when given a string' do
26
26
  it 'causes the browser to navigate to the (presumably URL) string' do
27
- addressable = stub('addressable', :url => 'http://site.example.com')
27
+ addressable = double('addressable', :url => 'http://site.example.com')
28
28
  address_bar.go_to addressable
29
29
  end
30
30
  end
@@ -3,18 +3,18 @@ require 'support/shared_examples/it_can_make_assertions'
3
3
  require 'support/shared_examples/it_can_have_ui_components'
4
4
 
5
5
  describe Kookaburra::UIDriver::UIComponent do
6
- let(:configuration) { stub('Configuration', :browser => nil, :app_host => nil, :server_error_detection => nil) }
6
+ let(:configuration) { double('Configuration', :browser => nil, :app_host => nil, :server_error_detection => nil) }
7
7
  let(:component) { Kookaburra::UIDriver::UIComponent.new(configuration) }
8
8
 
9
9
  it_behaves_like :it_can_have_ui_components, Kookaburra::UIDriver::UIComponent
10
10
 
11
11
  describe '#visible?' do
12
12
  it 'returns true if the component_locator is found in the DOM and is visible' do
13
- browser = mock('Browser Driver')
13
+ browser = double('Browser Driver')
14
14
  browser.should_receive(:has_css?) \
15
15
  .with('#my_component', :visible) \
16
16
  .and_return(true)
17
- configuration.stub!(:browser => browser)
17
+ configuration.stub(:browser => browser)
18
18
  def component.component_locator
19
19
  '#my_component'
20
20
  end
@@ -22,12 +22,12 @@ describe Kookaburra::UIDriver::UIComponent do
22
22
  end
23
23
 
24
24
  it 'returns false if the component_locator id not found in the DOM' do
25
- browser = stub('Browser Driver', :has_css? => false)
26
- configuration.stub!(:browser => browser)
25
+ browser = double('Browser Driver', :has_css? => false)
26
+ configuration.stub(:browser => browser)
27
27
  server_error_detection = lambda { |browser|
28
28
  false
29
29
  }
30
- configuration.stub!(:server_error_detection => server_error_detection)
30
+ configuration.stub(:server_error_detection => server_error_detection)
31
31
  def component.component_locator
32
32
  '#my_component'
33
33
  end
@@ -35,12 +35,12 @@ describe Kookaburra::UIDriver::UIComponent do
35
35
  end
36
36
 
37
37
  it 'raises UnexpectedResponse if the component_locator is not found and a server error is detected' do
38
- browser = stub('Browser Driver', :has_css? => false)
39
- configuration.stub!(:browser => browser)
38
+ browser = double('Browser Driver', :has_css? => false)
39
+ configuration.stub(:browser => browser)
40
40
  server_error_detection = lambda { |browser|
41
41
  true
42
42
  }
43
- configuration.stub!(:server_error_detection => server_error_detection)
43
+ configuration.stub(:server_error_detection => server_error_detection)
44
44
  def component.component_locator
45
45
  '#my_component'
46
46
  end
@@ -51,7 +51,7 @@ describe Kookaburra::UIDriver::UIComponent do
51
51
 
52
52
  describe '#url' do
53
53
  it 'returns the app_host + #component_path' do
54
- configuration.stub!(:app_host => 'http://my.example.com')
54
+ configuration.stub(:app_host => 'http://my.example.com')
55
55
  def component.component_path
56
56
  '/foo/bar'
57
57
  end
@@ -68,9 +68,14 @@ describe Kookaburra::UIDriver::UIComponent do
68
68
  end
69
69
 
70
70
  describe '#component_locator' do
71
- it 'must be defined by subclasses' do
72
- lambda { component.send(:component_locator) } \
73
- .should raise_error(Kookaburra::ConfigurationError)
71
+ it 'defaults to a string based on the class name' do
72
+ expected = "#" + component.class.name.gsub(/::/, '/').
73
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
74
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
75
+ tr("-", "_").
76
+ gsub('/', '-').
77
+ downcase
78
+ expect(component.send(:component_locator)).to eq expected
74
79
  end
75
80
  end
76
81
 
@@ -8,7 +8,7 @@ describe Kookaburra::UIDriver do
8
8
 
9
9
  describe '.ui_driver' do
10
10
  it 'adds an accessor method for the named driver that defaults to an instance of the specified class' do
11
- foo_driver_class = mock(Class)
11
+ foo_driver_class = double(Class)
12
12
  foo_driver_class.should_receive(:new) \
13
13
  .with(:configuration) \
14
14
  .and_return(:a_foo_driver)
@@ -24,13 +24,13 @@ describe Kookaburra::UIDriver do
24
24
 
25
25
  describe '#url' do
26
26
  it 'returns the configured app_host' do
27
- config = stub('Configuration', :app_host => 'http://my.example.com')
27
+ config = double('Configuration', :app_host => 'http://my.example.com')
28
28
  driver = Kookaburra::UIDriver.new(config)
29
29
  driver.url.should == 'http://my.example.com'
30
30
  end
31
31
  end
32
32
 
33
33
  it_behaves_like :it_can_make_assertions do
34
- let(:subject) { Kookaburra::UIDriver.new(stub('Configuration')) }
34
+ let(:subject) { Kookaburra::UIDriver.new(double('Configuration')) }
35
35
  end
36
36
  end
@@ -9,32 +9,32 @@ describe Kookaburra do
9
9
 
10
10
  describe '#given' do
11
11
  it 'returns an instance of the configured GivenDriver' do
12
- my_given_driver_class = mock(Class)
12
+ my_given_driver_class = double(Class)
13
13
  my_given_driver_class.should_receive(:new) \
14
14
  .with(configuration) \
15
15
  .and_return(:a_given_driver)
16
- configuration.stub!(:given_driver_class => my_given_driver_class)
16
+ configuration.stub(:given_driver_class => my_given_driver_class)
17
17
  k.given.should == :a_given_driver
18
18
  end
19
19
  end
20
20
 
21
21
  describe '#ui' do
22
22
  it 'returns an instance of the configured UIDriver' do
23
- my_ui_driver_class = mock(Class)
23
+ my_ui_driver_class = double(Class)
24
24
  my_ui_driver_class.should_receive(:new) \
25
25
  .with(configuration) \
26
26
  .and_return(:a_ui_driver)
27
- configuration.stub!(:ui_driver_class => my_ui_driver_class)
27
+ configuration.stub(:ui_driver_class => my_ui_driver_class)
28
28
  k.ui.should == :a_ui_driver
29
29
  end
30
30
  end
31
31
 
32
32
  describe '#get_data' do
33
33
  it 'returns a dup of the specified MentalModel::Collection' do
34
- collection = stub('MentalModel::Collection')
34
+ collection = double('MentalModel::Collection')
35
35
  collection.should_receive(:dup) \
36
36
  .and_return(:mental_model_collection_dup)
37
- configuration.stub!(:mental_model => stub(:foos => collection))
37
+ configuration.stub(:mental_model => double(:foos => collection))
38
38
  k.get_data(:foos).should == :mental_model_collection_dup
39
39
  end
40
40
  end
@@ -54,9 +54,9 @@ describe Kookaburra do
54
54
 
55
55
  describe '.configure' do
56
56
  it 'yields Kookaburra.configuration' do
57
- configuration = mock('Kookaburra::Configuration')
57
+ configuration = double('Kookaburra::Configuration')
58
58
  configuration.should_receive(:foo=).with(:bar)
59
- Kookaburra.stub!(:configuration => configuration)
59
+ Kookaburra.stub(:configuration => configuration)
60
60
  Kookaburra.configure do |c|
61
61
  c.foo = :bar
62
62
  end
@@ -1,8 +1,8 @@
1
1
  shared_examples_for :it_can_have_ui_components do |subject_class|
2
2
  describe '.ui_component' do
3
3
  it 'adds an accessor method for the named component that defaults to an instance of the specified class' do
4
- configuration = stub('Kookaburra::Configuration').as_null_object
5
- foo_component_class = mock(Class)
4
+ configuration = double('Kookaburra::Configuration').as_null_object
5
+ foo_component_class = double(Class)
6
6
  foo_component_class.should_receive(:new) \
7
7
  .with(configuration, :option => :value) \
8
8
  .and_return(:a_foo_component)
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kookaburra
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
5
- prerelease:
4
+ version: 1.2.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - John Wilger
@@ -11,202 +10,207 @@ authors:
11
10
  autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2013-03-16 00:00:00.000000000 Z
13
+ date: 2013-11-22 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: rest-client
18
17
  requirement: !ruby/object:Gem::Requirement
19
- none: false
20
18
  requirements:
21
- - - ! '>='
19
+ - - '>='
22
20
  - !ruby/object:Gem::Version
23
21
  version: '0'
24
22
  type: :runtime
25
23
  prerelease: false
26
24
  version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
25
  requirements:
29
- - - ! '>='
26
+ - - '>='
30
27
  - !ruby/object:Gem::Version
31
28
  version: '0'
32
29
  - !ruby/object:Gem::Dependency
33
- name: jruby-openssl
30
+ name: bundler
34
31
  requirement: !ruby/object:Gem::Requirement
35
- none: false
36
32
  requirements:
37
- - - ! '>='
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: '1.3'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ version: '1.3'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rake
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
38
48
  - !ruby/object:Gem::Version
39
49
  version: '0'
40
50
  type: :development
41
51
  prerelease: false
42
52
  version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
53
  requirements:
45
- - - ! '>='
54
+ - - '>='
46
55
  - !ruby/object:Gem::Version
47
56
  version: '0'
48
57
  - !ruby/object:Gem::Dependency
49
58
  name: rspec
50
59
  requirement: !ruby/object:Gem::Requirement
51
- none: false
52
60
  requirements:
53
- - - ! '>='
61
+ - - '>='
54
62
  - !ruby/object:Gem::Version
55
63
  version: '0'
56
64
  type: :development
57
65
  prerelease: false
58
66
  version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
67
  requirements:
61
- - - ! '>='
68
+ - - '>='
62
69
  - !ruby/object:Gem::Version
63
70
  version: '0'
64
71
  - !ruby/object:Gem::Dependency
65
- name: capybara
72
+ name: selenium-webdriver
66
73
  requirement: !ruby/object:Gem::Requirement
67
- none: false
68
74
  requirements:
69
- - - ! '>='
75
+ - - '>='
70
76
  - !ruby/object:Gem::Version
71
77
  version: '0'
72
78
  type: :development
73
79
  prerelease: false
74
80
  version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
81
  requirements:
77
- - - ! '>='
82
+ - - '>='
78
83
  - !ruby/object:Gem::Version
79
84
  version: '0'
80
85
  - !ruby/object:Gem::Dependency
81
- name: yard
86
+ name: capybara
82
87
  requirement: !ruby/object:Gem::Requirement
83
- none: false
84
88
  requirements:
85
- - - ! '>='
89
+ - - '>='
86
90
  - !ruby/object:Gem::Version
87
91
  version: '0'
88
92
  type: :development
89
93
  prerelease: false
90
94
  version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
95
  requirements:
93
- - - ! '>='
96
+ - - '>='
94
97
  - !ruby/object:Gem::Version
95
98
  version: '0'
96
99
  - !ruby/object:Gem::Dependency
97
- name: kramdown
100
+ name: reek
98
101
  requirement: !ruby/object:Gem::Requirement
99
- none: false
100
102
  requirements:
101
- - - ! '>='
103
+ - - '>='
102
104
  - !ruby/object:Gem::Version
103
105
  version: '0'
104
106
  type: :development
105
107
  prerelease: false
106
108
  version_requirements: !ruby/object:Gem::Requirement
107
- none: false
108
109
  requirements:
109
- - - ! '>='
110
+ - - '>='
110
111
  - !ruby/object:Gem::Version
111
112
  version: '0'
112
113
  - !ruby/object:Gem::Dependency
113
- name: jeweler
114
+ name: yard
114
115
  requirement: !ruby/object:Gem::Requirement
115
- none: false
116
116
  requirements:
117
- - - ! '>='
117
+ - - '>='
118
118
  - !ruby/object:Gem::Version
119
119
  version: '0'
120
120
  type: :development
121
121
  prerelease: false
122
122
  version_requirements: !ruby/object:Gem::Requirement
123
- none: false
124
123
  requirements:
125
- - - ! '>='
124
+ - - '>='
126
125
  - !ruby/object:Gem::Version
127
126
  version: '0'
128
127
  - !ruby/object:Gem::Dependency
129
- name: reek
128
+ name: kramdown
130
129
  requirement: !ruby/object:Gem::Requirement
131
- none: false
132
130
  requirements:
133
- - - ! '>='
131
+ - - '>='
134
132
  - !ruby/object:Gem::Version
135
133
  version: '0'
136
134
  type: :development
137
135
  prerelease: false
138
136
  version_requirements: !ruby/object:Gem::Requirement
139
- none: false
140
137
  requirements:
141
- - - ! '>='
138
+ - - '>='
142
139
  - !ruby/object:Gem::Version
143
140
  version: '0'
144
141
  - !ruby/object:Gem::Dependency
145
142
  name: sinatra
146
143
  requirement: !ruby/object:Gem::Requirement
147
- none: false
148
144
  requirements:
149
- - - ! '>='
145
+ - - '>='
146
+ - !ruby/object:Gem::Version
147
+ version: '0'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - '>='
153
+ - !ruby/object:Gem::Version
154
+ version: '0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: uuid
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - '>='
150
160
  - !ruby/object:Gem::Version
151
161
  version: '0'
152
162
  type: :development
153
163
  prerelease: false
154
164
  version_requirements: !ruby/object:Gem::Requirement
155
- none: false
156
165
  requirements:
157
- - - ! '>='
166
+ - - '>='
158
167
  - !ruby/object:Gem::Version
159
168
  version: '0'
160
169
  - !ruby/object:Gem::Dependency
161
170
  name: find_a_port
162
171
  requirement: !ruby/object:Gem::Requirement
163
- none: false
164
172
  requirements:
165
- - - ! '>='
173
+ - - '>='
166
174
  - !ruby/object:Gem::Version
167
175
  version: '0'
168
176
  type: :development
169
177
  prerelease: false
170
178
  version_requirements: !ruby/object:Gem::Requirement
171
- none: false
172
179
  requirements:
173
- - - ! '>='
180
+ - - '>='
174
181
  - !ruby/object:Gem::Version
175
182
  version: '0'
176
183
  - !ruby/object:Gem::Dependency
177
184
  name: json
178
185
  requirement: !ruby/object:Gem::Requirement
179
- none: false
180
186
  requirements:
181
- - - ! '>='
187
+ - - '>='
182
188
  - !ruby/object:Gem::Version
183
189
  version: '0'
184
190
  type: :development
185
191
  prerelease: false
186
192
  version_requirements: !ruby/object:Gem::Requirement
187
- none: false
188
193
  requirements:
189
- - - ! '>='
194
+ - - '>='
190
195
  - !ruby/object:Gem::Version
191
196
  version: '0'
192
197
  description: Cucumber + Capybara = Kookaburra? It made sense at the time.
193
- email: johnwilger@gmail.com
198
+ email:
199
+ - johnwilger@gmail.com
194
200
  executables: []
195
201
  extensions: []
196
- extra_rdoc_files:
197
- - LICENSE.txt
198
- - README.markdown
202
+ extra_rdoc_files: []
199
203
  files:
200
204
  - .document
205
+ - .gitignore
201
206
  - .rspec
202
- - .rvmrc
207
+ - .travis.yml
203
208
  - .yardopts
204
209
  - Gemfile
205
210
  - Gemfile.lock
206
211
  - LICENSE.txt
207
212
  - README.markdown
208
213
  - Rakefile
209
- - VERSION
210
214
  - kookaburra.gemspec
211
215
  - lib/core_ext/object/to_param.rb
212
216
  - lib/core_ext/object/to_query.rb
@@ -226,6 +230,7 @@ files:
226
230
  - lib/kookaburra/ui_driver/scoped_browser.rb
227
231
  - lib/kookaburra/ui_driver/ui_component.rb
228
232
  - lib/kookaburra/ui_driver/ui_component/address_bar.rb
233
+ - lib/kookaburra/version.rb
229
234
  - spec/integration/test_a_rack_application_spec.rb
230
235
  - spec/kookaburra/api_driver_spec.rb
231
236
  - spec/kookaburra/configuration_spec.rb
@@ -240,32 +245,43 @@ files:
240
245
  - spec/support/shared_examples/it_can_have_ui_components.rb
241
246
  - spec/support/shared_examples/it_can_make_assertions.rb
242
247
  - spec/support/shared_examples/it_has_a_dependency_accessor.rb
243
- homepage: http://github.com/projectdx/kookaburra
248
+ homepage: http://johnwilger.com/kookaburra/
244
249
  licenses:
245
250
  - MIT
251
+ metadata: {}
246
252
  post_install_message:
247
253
  rdoc_options: []
248
254
  require_paths:
249
255
  - lib
250
256
  required_ruby_version: !ruby/object:Gem::Requirement
251
- none: false
252
257
  requirements:
253
- - - ! '>='
258
+ - - '>='
254
259
  - !ruby/object:Gem::Version
255
260
  version: '0'
256
- segments:
257
- - 0
258
- hash: -356630097343812047
259
261
  required_rubygems_version: !ruby/object:Gem::Requirement
260
- none: false
261
262
  requirements:
262
- - - ! '>='
263
+ - - '>='
263
264
  - !ruby/object:Gem::Version
264
265
  version: '0'
265
266
  requirements: []
266
267
  rubyforge_project:
267
- rubygems_version: 1.8.23
268
+ rubygems_version: 2.0.3
268
269
  signing_key:
269
- specification_version: 3
270
- summary: WindowDriver testing pattern for Ruby apps
271
- test_files: []
270
+ specification_version: 4
271
+ summary: Window Driver pattern for acceptance tests
272
+ test_files:
273
+ - spec/integration/test_a_rack_application_spec.rb
274
+ - spec/kookaburra/api_driver_spec.rb
275
+ - spec/kookaburra/configuration_spec.rb
276
+ - spec/kookaburra/mental_model_matcher_spec.rb
277
+ - spec/kookaburra/mental_model_spec.rb
278
+ - spec/kookaburra/test_helpers_spec.rb
279
+ - spec/kookaburra/ui_driver/scoped_browser_spec.rb
280
+ - spec/kookaburra/ui_driver/ui_component/address_bar_spec.rb
281
+ - spec/kookaburra/ui_driver/ui_component_spec.rb
282
+ - spec/kookaburra/ui_driver_spec.rb
283
+ - spec/kookaburra_spec.rb
284
+ - spec/support/shared_examples/it_can_have_ui_components.rb
285
+ - spec/support/shared_examples/it_can_make_assertions.rb
286
+ - spec/support/shared_examples/it_has_a_dependency_accessor.rb
287
+ has_rdoc:
data/.rvmrc DELETED
@@ -1,4 +0,0 @@
1
- rvm use ruby-1.9.3@kookaburra --create --install; bundle check
2
- rvm use ruby-1.9.2@kookaburra --create --install; bundle check
3
- rvm use ree-1.8.7@kookaburra --create --install; bundle check
4
- rvm use ruby-1.8.7@kookaburra --create --install; bundle check
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.2.0