kookaburra 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
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