capybara-ui 1.0.0 → 1.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8569e04fe7e820a732b875283667700db0021f11
4
- data.tar.gz: eab7f283b1ac93ceb0a1ff5db4d4319bf4f8b687
2
+ SHA256:
3
+ metadata.gz: 566be4cd822be8a8a26f04c7158994d224e36c8d47310c13c4197c3673628510
4
+ data.tar.gz: 64cdb5bb0c58acce07a3ed901d1f119b2723abe336aacf54f587e58169c990d6
5
5
  SHA512:
6
- metadata.gz: 703a2e188f63c0e896b1a9df815dad5df846bcb30882d6618168b207b2f19a6736f84ddfe3c2751ed2cd92f536355c0320e0ea53de0964c562aa0704ac9db33d
7
- data.tar.gz: cd41f9dd5368aba4585a365c321b399aa3c55c329990f68f66b4ebbd1181de4f98dc429c9d85f959176b559035db89e6003d8945ea4cfd0feeb8196d5d18a3cb
6
+ metadata.gz: ef9ae00b13c0dc0de05ee6fce7866fe69468a5abb63426e3bc15c34f0f3ed93722fb4c2317ed7fe4461e9759d2d8200f64fc2343e89fc443c16e94a40ebd20a3
7
+ data.tar.gz: c03f740d4457a54f8e29a31aa9d2552073e99641b2de1c4f38044298c9e9510b0bc7a261256f8148596d055b4c32600ea7fb3a4d12c09060b2b5e5bc3880e440
@@ -1,7 +1,6 @@
1
1
  Capybara.configure do |config|
2
2
  config.match = :one
3
3
  config.exact = true
4
- config.exact_options = true
5
4
  config.ignore_hidden_elements = true
6
5
  config.visible_text_only = true
7
6
  end
@@ -14,11 +14,6 @@ module Capybara
14
14
 
15
15
  self.rescuable_errors = [StandardError]
16
16
 
17
- if defined?(RSpec)
18
- require 'rspec/expectations'
19
- self.rescuable_errors << RSpec::Expectations::ExpectationNotMetError
20
- end
21
-
22
17
  class Timer
23
18
  class Frozen < StandardError; end
24
19
 
@@ -1,12 +1,20 @@
1
+ def permitted_rspec_version?
2
+ defined? RSpec && actual_rspec_expectations_version >= required_rspec_expectations_version
3
+ end
4
+
5
+ def actual_rspec_expectations_version
6
+ defined? RSpec && Gem::Version.new(RSpec::Expectations::Version::STRING)
7
+ end
8
+
9
+ def required_rspec_expectations_version
10
+ Gem::Version.new(Capybara::UI::OptionalDependencies::RSPEC_VERSION)
11
+ end
12
+
1
13
  begin
2
14
  require 'rspec/matchers'
3
- require 'rspec/version'
15
+ require 'rspec/expectations/version'
4
16
 
5
- unless Gem::Version.new(RSpec::Version::STRING) >= Gem::Version.new(Capybara::UI::OptionalDependencies::RSPEC_VERSION)
6
- raise LoadError,
7
- "requires RSpec version #{Capybara::UI::OptionalDependencies::RSPEC_VERSION} or later. " \
8
- "You have #{RSpec::Version::STRING}."
9
- end
17
+ raise LoadError unless permitted_rspec_version?
10
18
 
11
19
  RSpec::Matchers.define :see do |widget_name, *args|
12
20
  match do |role|
@@ -17,6 +25,10 @@ begin
17
25
  end
18
26
  end
19
27
 
28
+ failure_message do
29
+ "Could not find widget(#{widget_name}, args.join(', ')) on page."
30
+ end
31
+
20
32
  match_when_negated do |role|
21
33
  begin
22
34
  eventually { !role.see?(widget_name, *args) }
@@ -24,5 +36,13 @@ begin
24
36
  false
25
37
  end
26
38
  end
39
+
40
+ failure_message_when_negated do
41
+ "Unexpectedly found widget(#{widget_name}, args.join(', ')) on page."
42
+ end
27
43
  end
44
+
45
+ rescue LoadError
46
+ "RSpec Expectations version #{required_rspec_expectations_version} or later is required. " \
47
+ "You have #{actual_rspec_expectations_version}."
28
48
  end
@@ -0,0 +1,3 @@
1
+ require 'rspec/expectations'
2
+
3
+ Capybara::UI::Checkpoint.rescuable_errors << RSpec::Expectations::ExpectationNotMetError
@@ -1,5 +1,5 @@
1
1
  module Capybara
2
2
  module UI
3
- VERSION = '1.0.0'
3
+ VERSION = '1.3.0'
4
4
  end
5
5
  end
@@ -29,7 +29,7 @@ module Capybara
29
29
  def Decimal(*selector)
30
30
  Widget(selector) { |text|
31
31
  # ensure we can convert to float first
32
- Float(text) && BigDecimal.new(text)
32
+ Float(text) && BigDecimal(text)
33
33
  }
34
34
  end
35
35
  end
@@ -2,7 +2,7 @@ module Capybara
2
2
  module UI
3
3
  module CucumberMethods
4
4
  begin
5
- require 'cucumber/ast/table'
5
+ require 'cucumber/multiline_argument/data_table'
6
6
 
7
7
  # Compares this widget with the given Cucumber +table+.
8
8
  #
@@ -24,7 +24,7 @@ module Capybara
24
24
  to_table = self.to_table
25
25
 
26
26
  if ignore_case == true
27
- table = downcase_table(table)
27
+ table = Cucumber::MultilineArgument::DataTable.from(downcase_array(table.raw))
28
28
  to_table = downcase_array(to_table)
29
29
  end
30
30
 
@@ -33,10 +33,6 @@ module Capybara
33
33
 
34
34
  private
35
35
 
36
- def downcase_table(table)
37
- new_cucumber_table downcase_array(table.raw)
38
- end
39
-
40
36
  def downcase_array(array)
41
37
  array.map do |item|
42
38
  case item
@@ -63,10 +59,6 @@ module Capybara
63
59
  end
64
60
  end
65
61
 
66
- def new_cucumber_table(table)
67
- Cucumber::Ast::Table.new(table)
68
- end
69
-
70
62
  rescue LoadError
71
63
  # *crickets*
72
64
  end
@@ -313,7 +313,7 @@ module Capybara
313
313
  end
314
314
 
315
315
  # Converts the current field group into a table suitable for diff'ing
316
- # with Cucumber::Ast::Table.
316
+ # with Cucumber::MultilineArgument::DataTable.
317
317
  #
318
318
  # Field labels are determined by the widget name.
319
319
  #
@@ -195,7 +195,9 @@ module Capybara
195
195
  end
196
196
 
197
197
  def items
198
- item_filter.nodes(self).map { |node| item_for(node) }
198
+ Capybara.using_wait_time(0) do
199
+ item_filter.nodes(self).map { |node| item_for(node) }
200
+ end
199
201
  end
200
202
  end
201
203
  end
@@ -2,7 +2,7 @@ module Capybara
2
2
  module UI
3
3
  class ListItem < Widget
4
4
  # Returns this ListItem's contents formatted as a row, for comparison with a
5
- # Cucumber::Ast::Table. By default, it simply returns an array with a single
5
+ # Cucumber::MultilineArgument::DataTable. By default, it simply returns an array with a single
6
6
  # element--the widget's text.
7
7
  #
8
8
  # In general, this method will be called by List#to_table.
@@ -13,7 +13,7 @@ module Capybara
13
13
  # Usually, if the default return value isn't what you want, you'll probably
14
14
  # want to return a Hash where both keys and values are strings, so that you
15
15
  # don't need to worry about column order when you pass the table to
16
- # Cucumber::Ast::Table#diff!.
16
+ # Cucumber::MultilineArgument::DataTable#diff!.
17
17
  #
18
18
  # See List#to_table for more information.
19
19
  def to_row
@@ -2,7 +2,13 @@ module Capybara
2
2
  module UI
3
3
  class StringValue < String
4
4
  def to_date(format = nil)
5
- format ? Date.strptime(self, format) : super()
5
+ if format
6
+ Date.strptime(self, format)
7
+ elsif defined?(super)
8
+ super()
9
+ else
10
+ Date.parse(self)
11
+ end
6
12
  end
7
13
 
8
14
  def to_key
@@ -9,19 +9,23 @@ module Capybara
9
9
  end
10
10
 
11
11
  def node(parent_widget, *args)
12
- parent_widget.root.find(*capybara_selector(*args))
12
+ a, kw = capybara_selector(*args)
13
+ parent_widget.root.find(*a, **kw)
13
14
  end
14
15
 
15
16
  def node?(parent_widget, *args)
16
- parent_widget.root.has_selector?(*capybara_selector(*args))
17
+ a, kw = capybara_selector(*args)
18
+ parent_widget.root.has_selector?(*a, **kw)
17
19
  end
18
20
 
19
21
  def nodeless?(parent_widget, *args)
20
- parent_widget.root.has_no_selector?(*capybara_selector(*args))
22
+ a, kw = capybara_selector(*args)
23
+ parent_widget.root.has_no_selector?(*a, **kw)
21
24
  end
22
25
 
23
26
  def nodes(parent_widget, *args)
24
- parent_widget.root.all(*capybara_selector(*args))
27
+ a, kw = capybara_selector(*args)
28
+ parent_widget.root.all(*a, **kw)
25
29
  end
26
30
 
27
31
  private
@@ -39,9 +43,9 @@ module Capybara
39
43
  defaults = {:wait => 0}
40
44
 
41
45
  if Hash === selector.last
42
- selector + [defaults.merge(selector.pop)]
46
+ return selector, defaults.merge(selector.pop)
43
47
  else
44
- selector + [defaults]
48
+ return selector, defaults
45
49
  end
46
50
  end
47
51
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capybara-ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Leal
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-22 00:00:00.000000000 Z
12
+ date: 2021-03-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: chronic
@@ -31,70 +31,98 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '2.5'
34
+ version: '3.0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '2.5'
41
+ version: '3.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rexml
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
42
56
  - !ruby/object:Gem::Dependency
43
57
  name: rspec-given
44
58
  requirement: !ruby/object:Gem::Requirement
45
59
  requirements:
46
- - - "~>"
60
+ - - ">="
47
61
  - !ruby/object:Gem::Version
48
- version: 3.5.0
62
+ version: '3.8'
49
63
  type: :development
50
64
  prerelease: false
51
65
  version_requirements: !ruby/object:Gem::Requirement
52
66
  requirements:
53
- - - "~>"
67
+ - - ">="
54
68
  - !ruby/object:Gem::Version
55
- version: 3.5.0
69
+ version: '3.8'
56
70
  - !ruby/object:Gem::Dependency
57
- name: capybara-webkit
71
+ name: selenium-webdriver
58
72
  requirement: !ruby/object:Gem::Requirement
59
73
  requirements:
60
- - - "~>"
74
+ - - ">="
61
75
  - !ruby/object:Gem::Version
62
- version: 1.7.0
76
+ version: '0'
63
77
  type: :development
64
78
  prerelease: false
65
79
  version_requirements: !ruby/object:Gem::Requirement
66
80
  requirements:
67
- - - "~>"
81
+ - - ">="
68
82
  - !ruby/object:Gem::Version
69
- version: 1.7.0
83
+ version: '0'
70
84
  - !ruby/object:Gem::Dependency
71
- name: poltergeist
85
+ name: webdrivers
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
- - - "~>"
88
+ - - ">="
75
89
  - !ruby/object:Gem::Version
76
- version: 1.5.0
90
+ version: '0'
77
91
  type: :development
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
81
- - - "~>"
95
+ - - ">="
82
96
  - !ruby/object:Gem::Version
83
- version: 1.5.0
97
+ version: '0'
98
+ - !ruby/object:Gem::Dependency
99
+ name: cuprite
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
84
112
  - !ruby/object:Gem::Dependency
85
113
  name: cucumber
86
114
  requirement: !ruby/object:Gem::Requirement
87
115
  requirements:
88
- - - "~>"
116
+ - - ">="
89
117
  - !ruby/object:Gem::Version
90
- version: 1.3.0
118
+ version: '5.3'
91
119
  type: :development
92
120
  prerelease: false
93
121
  version_requirements: !ruby/object:Gem::Requirement
94
122
  requirements:
95
- - - "~>"
123
+ - - ">="
96
124
  - !ruby/object:Gem::Version
97
- version: 1.3.0
125
+ version: '5.3'
98
126
  - !ruby/object:Gem::Dependency
99
127
  name: pry
100
128
  requirement: !ruby/object:Gem::Requirement
@@ -123,6 +151,20 @@ dependencies:
123
151
  - - ">="
124
152
  - !ruby/object:Gem::Version
125
153
  version: '0'
154
+ - !ruby/object:Gem::Dependency
155
+ name: puma
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - ">="
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
126
168
  - !ruby/object:Gem::Dependency
127
169
  name: sinatra
128
170
  requirement: !ruby/object:Gem::Requirement
@@ -143,16 +185,16 @@ dependencies:
143
185
  requirements:
144
186
  - - "~>"
145
187
  - !ruby/object:Gem::Version
146
- version: 4.0.0
188
+ version: 6.1.0
147
189
  type: :development
148
190
  prerelease: false
149
191
  version_requirements: !ruby/object:Gem::Requirement
150
192
  requirements:
151
193
  - - "~>"
152
194
  - !ruby/object:Gem::Version
153
- version: 4.0.0
195
+ version: 6.1.0
154
196
  - !ruby/object:Gem::Dependency
155
- name: codeclimate-test-reporter
197
+ name: simplecov
156
198
  requirement: !ruby/object:Gem::Requirement
157
199
  requirements:
158
200
  - - ">="
@@ -172,7 +214,7 @@ description: Capybara-UI (formerly called Dill) is a Capybara abstraction that m
172
214
  easier.
173
215
  email:
174
216
  - dleal@mojotech.com
175
- - ags@mojotech.com
217
+ - ops@mojotech.com
176
218
  executables: []
177
219
  extensions: []
178
220
  extra_rdoc_files: []
@@ -190,6 +232,7 @@ files:
190
232
  - lib/capybara/ui/rails.rb
191
233
  - lib/capybara/ui/rails/role.rb
192
234
  - lib/capybara/ui/role.rb
235
+ - lib/capybara/ui/rspec.rb
193
236
  - lib/capybara/ui/text_table.rb
194
237
  - lib/capybara/ui/text_table/cell_text.rb
195
238
  - lib/capybara/ui/text_table/mapping.rb
@@ -236,8 +279,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
279
  - !ruby/object:Gem::Version
237
280
  version: '0'
238
281
  requirements: []
239
- rubyforge_project: "[none]"
240
- rubygems_version: 2.4.8
282
+ rubygems_version: 3.0.3
241
283
  signing_key:
242
284
  specification_version: 4
243
285
  summary: A set of helpers to ease integration testing