kookaburra 0.10.0 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
data/.yardopts CHANGED
@@ -1,2 +1,3 @@
1
1
  --markup=markdown
2
+ --protected
2
3
  --no-private
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.0
1
+ 0.11.0
data/kookaburra.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "kookaburra"
8
- s.version = "0.10.0"
8
+ s.version = "0.11.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Renewable Funding, LLC"]
@@ -41,6 +41,7 @@ Gem::Specification.new do |s|
41
41
  "test/helper.rb",
42
42
  "test/kookaburra/assertion_test.rb",
43
43
  "test/kookaburra/test_data_test.rb",
44
+ "test/kookaburra/ui_driver/ui_component_test.rb",
44
45
  "test/kookaburra/ui_driver_test.rb",
45
46
  "test/kookaburra_test.rb"
46
47
  ]
@@ -46,8 +46,8 @@ module Kookaburra
46
46
  end
47
47
 
48
48
  # Default implementation navigates directly to this UIComponent's
49
- # #component_path. If +opts[:query_params] is set to a Hash, the request
50
- # will be made with the resulting querystring on the URL.
49
+ # `#component_path`. If `opts[:query_params]` is set to a Hash, the
50
+ # request will be made with the resulting querystring on the URL.
51
51
  def show(opts = {})
52
52
  unless respond_to?(:component_path)
53
53
  raise "You must either set component_path or redefine the #show method in UIComponent subclasses!"
@@ -80,27 +80,42 @@ module Kookaburra
80
80
  []
81
81
  end
82
82
 
83
- private
83
+ protected
84
+
85
+ # Methods provided by `browser` that will be scoped to this UIComponent.
86
+ #
87
+ # These methods are defined on UIComponent and will be delegated to
88
+ # `browser` after being wrapped with `#in_component` calls.
89
+ SCOPED_BROWSER_METHODS = :all, :attach_file, :check, :choose, :click_button,
90
+ :click_link, :click_link_or_button, :click_on, :field_labeled, :fill_in,
91
+ :find, :find_button, :find_by_id, :find_field, :find_link, :first,
92
+ :has_button?, :has_checked_field?, :has_content?, :has_css?, :has_field?,
93
+ :has_link?, :has_no_button?, :has_no_checked_field?, :has_no_content?,
94
+ :has_no_css?, :has_no_field?, :has_no_link?, :has_no_select?,
95
+ :has_no_selector?, :has_no_table?, :has_no_text?,
96
+ :has_no_unchecked_field?, :has_no_xpath?, :has_select?, :has_selector?,
97
+ :has_table?, :has_text?, :has_unchecked_field?, :has_xpath?, :select,
98
+ :text, :uncheck, :unselect
99
+
100
+ SCOPED_BROWSER_METHODS.each do |method|
101
+ define_method(method) do |args|
102
+ in_component { browser.send(method, *args) }
103
+ end
104
+ end
105
+
84
106
  def id_from_path
85
107
  browser.current_path =~ path_id_regex
86
108
  $1.present? ? $1.to_i : nil
87
109
  end
88
110
 
89
- def fill_in(locator, options)
90
- in_component { browser.fill_in(locator, options) }
91
- end
92
-
93
- def click_on(locator)
94
- in_component { browser.find(locator).click }
95
- end
96
-
97
- def choose(locator)
98
- in_component { browser.choose(locator) }
99
- end
100
-
101
111
  def in_component(&blk)
102
112
  browser.within(component_locator, &blk)
103
113
  end
114
+
115
+ # Returns the number of elements found by `#all` for the specified criteria
116
+ def count(*args)
117
+ all(*args).size
118
+ end
104
119
  end
105
120
  end
106
121
  end
@@ -0,0 +1,29 @@
1
+ require 'helper'
2
+ require 'minitest/mock'
3
+
4
+ describe Kookaburra::UIDriver::UIComponent do
5
+ let(:component_class) do
6
+ Class.new(Kookaburra::UIDriver::UIComponent) do
7
+ component_locator '#my_component'
8
+ public :count
9
+ end
10
+ end
11
+
12
+ describe '#count' do
13
+ it 'returns the number of elements found within the component' do
14
+ browser = Object.new.tap do |b|
15
+ def b.within(*args)
16
+ @context_set = true
17
+ yield self
18
+ end
19
+
20
+ def b.all(*args)
21
+ return unless @context_set
22
+ Array.new(3)
23
+ end
24
+ end
25
+ component = component_class.new(:browser => browser)
26
+ assert_equal 3, component.count('.element')
27
+ end
28
+ end
29
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kookaburra
3
3
  version: !ruby/object:Gem::Version
4
- hash: 55
4
+ hash: 51
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 10
8
+ - 11
9
9
  - 0
10
- version: 0.10.0
10
+ version: 0.11.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Renewable Funding, LLC
@@ -193,6 +193,7 @@ files:
193
193
  - test/helper.rb
194
194
  - test/kookaburra/assertion_test.rb
195
195
  - test/kookaburra/test_data_test.rb
196
+ - test/kookaburra/ui_driver/ui_component_test.rb
196
197
  - test/kookaburra/ui_driver_test.rb
197
198
  - test/kookaburra_test.rb
198
199
  homepage: http://github.com/projectdx/kookaburra