capybara-ui 0.10.0 → 1.0.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 +4 -4
- data/lib/capybara/ui.rb +33 -0
- data/lib/capybara/ui/assertions.rb +21 -0
- data/lib/{capybara-ui → capybara/ui}/capybara.rb +0 -0
- data/lib/capybara/ui/checkpoint.rb +113 -0
- data/lib/capybara/ui/conversions.rb +33 -0
- data/lib/capybara/ui/cucumber.rb +5 -0
- data/lib/capybara/ui/dsl.rb +109 -0
- data/lib/capybara/ui/instance_conversions.rb +21 -0
- data/lib/{capybara-ui → capybara/ui}/matchers.rb +4 -4
- data/lib/capybara/ui/optional_dependencies.rb +7 -0
- data/lib/capybara/ui/rails.rb +5 -0
- data/lib/capybara/ui/rails/role.rb +11 -0
- data/lib/capybara/ui/role.rb +21 -0
- data/lib/capybara/ui/text_table.rb +109 -0
- data/lib/capybara/ui/text_table/cell_text.rb +9 -0
- data/lib/capybara/ui/text_table/mapping.rb +42 -0
- data/lib/capybara/ui/text_table/transformations.rb +15 -0
- data/lib/capybara/ui/text_table/void_mapping.rb +10 -0
- data/lib/capybara/ui/version.rb +5 -0
- data/lib/capybara/ui/widgets.rb +63 -0
- data/lib/capybara/ui/widgets/check_box.rb +28 -0
- data/lib/capybara/ui/widgets/cucumber_methods.rb +75 -0
- data/lib/capybara/ui/widgets/document.rb +21 -0
- data/lib/capybara/ui/widgets/dsl.rb +49 -0
- data/lib/capybara/ui/widgets/field.rb +24 -0
- data/lib/capybara/ui/widgets/field_group.rb +331 -0
- data/lib/capybara/ui/widgets/form.rb +28 -0
- data/lib/capybara/ui/widgets/list.rb +202 -0
- data/lib/capybara/ui/widgets/list_item.rb +24 -0
- data/lib/capybara/ui/widgets/parts/container.rb +48 -0
- data/lib/capybara/ui/widgets/parts/struct.rb +119 -0
- data/lib/capybara/ui/widgets/radio_button.rb +64 -0
- data/lib/capybara/ui/widgets/select.rb +59 -0
- data/lib/capybara/ui/widgets/string_value.rb +45 -0
- data/lib/capybara/ui/widgets/table.rb +78 -0
- data/lib/capybara/ui/widgets/text_field.rb +29 -0
- data/lib/capybara/ui/widgets/widget.rb +394 -0
- data/lib/capybara/ui/widgets/widget/node_filter.rb +50 -0
- data/lib/capybara/ui/widgets/widget_class.rb +13 -0
- data/lib/capybara/ui/widgets/widget_name.rb +58 -0
- metadata +47 -43
- data/lib/capybara-ui.rb +0 -31
- data/lib/capybara-ui/assertions.rb +0 -19
- data/lib/capybara-ui/checkpoint.rb +0 -111
- data/lib/capybara-ui/conversions.rb +0 -31
- data/lib/capybara-ui/cucumber.rb +0 -5
- data/lib/capybara-ui/dsl.rb +0 -107
- data/lib/capybara-ui/instance_conversions.rb +0 -19
- data/lib/capybara-ui/optional_dependencies.rb +0 -5
- data/lib/capybara-ui/rails.rb +0 -5
- data/lib/capybara-ui/rails/role.rb +0 -9
- data/lib/capybara-ui/role.rb +0 -19
- data/lib/capybara-ui/text_table.rb +0 -107
- data/lib/capybara-ui/text_table/cell_text.rb +0 -7
- data/lib/capybara-ui/text_table/mapping.rb +0 -40
- data/lib/capybara-ui/text_table/transformations.rb +0 -13
- data/lib/capybara-ui/text_table/void_mapping.rb +0 -8
- data/lib/capybara-ui/version.rb +0 -3
- data/lib/capybara-ui/widgets.rb +0 -61
- data/lib/capybara-ui/widgets/check_box.rb +0 -26
- data/lib/capybara-ui/widgets/cucumber_methods.rb +0 -73
- data/lib/capybara-ui/widgets/document.rb +0 -19
- data/lib/capybara-ui/widgets/dsl.rb +0 -47
- data/lib/capybara-ui/widgets/field.rb +0 -22
- data/lib/capybara-ui/widgets/field_group.rb +0 -329
- data/lib/capybara-ui/widgets/form.rb +0 -26
- data/lib/capybara-ui/widgets/list.rb +0 -200
- data/lib/capybara-ui/widgets/list_item.rb +0 -22
- data/lib/capybara-ui/widgets/parts/container.rb +0 -46
- data/lib/capybara-ui/widgets/parts/struct.rb +0 -117
- data/lib/capybara-ui/widgets/radio_button.rb +0 -62
- data/lib/capybara-ui/widgets/select.rb +0 -57
- data/lib/capybara-ui/widgets/string_value.rb +0 -43
- data/lib/capybara-ui/widgets/table.rb +0 -76
- data/lib/capybara-ui/widgets/text_field.rb +0 -27
- data/lib/capybara-ui/widgets/widget.rb +0 -392
- data/lib/capybara-ui/widgets/widget/node_filter.rb +0 -48
- data/lib/capybara-ui/widgets/widget_class.rb +0 -11
- data/lib/capybara-ui/widgets/widget_name.rb +0 -56
@@ -1,48 +0,0 @@
|
|
1
|
-
module CapybaraUI
|
2
|
-
class Widget
|
3
|
-
class NodeFilter
|
4
|
-
attr_reader :selector
|
5
|
-
|
6
|
-
def initialize(*selector)
|
7
|
-
@selector = selector.flatten
|
8
|
-
end
|
9
|
-
|
10
|
-
def node(parent_widget, *args)
|
11
|
-
parent_widget.root.find(*capybara_selector(*args))
|
12
|
-
end
|
13
|
-
|
14
|
-
def node?(parent_widget, *args)
|
15
|
-
parent_widget.root.has_selector?(*capybara_selector(*args))
|
16
|
-
end
|
17
|
-
|
18
|
-
def nodeless?(parent_widget, *args)
|
19
|
-
parent_widget.root.has_no_selector?(*capybara_selector(*args))
|
20
|
-
end
|
21
|
-
|
22
|
-
def nodes(parent_widget, *args)
|
23
|
-
parent_widget.root.all(*capybara_selector(*args))
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def capybara_selector(*args)
|
29
|
-
# TODO detect signature errors (e.g., passing a different arity than the
|
30
|
-
# one required by the selector proc, etc)
|
31
|
-
selector = if @selector.first.respond_to?(:call)
|
32
|
-
@selector.first.call(*args)
|
33
|
-
else
|
34
|
-
@selector
|
35
|
-
end
|
36
|
-
selector = Array(selector).flatten
|
37
|
-
|
38
|
-
defaults = {:wait => 0}
|
39
|
-
|
40
|
-
if Hash === selector.last
|
41
|
-
selector + [defaults.merge(selector.pop)]
|
42
|
-
else
|
43
|
-
selector + [defaults]
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
module CapybaraUI
|
2
|
-
# The name of a widget in a format-independent representation.
|
3
|
-
class WidgetName < String
|
4
|
-
CAMEL_CASE_FORMAT = /\A([A-Z][a-z]*)+\Z/
|
5
|
-
SNAKE_CASE_FORMAT = /\A\w+\Z/
|
6
|
-
|
7
|
-
# Constructs the widget name.
|
8
|
-
#
|
9
|
-
# @param name [String, Symbol] the name of the widget in primitive form
|
10
|
-
def initialize(name)
|
11
|
-
@name = name
|
12
|
-
@canonical = canonical(@name)
|
13
|
-
end
|
14
|
-
|
15
|
-
# Returns the class for this widget name, in the given scope.
|
16
|
-
def to_class(scope = Object)
|
17
|
-
const = scope.const_get(@canonical)
|
18
|
-
|
19
|
-
raise TypeError, "`#{@canonical}' is not a widget in this scope" \
|
20
|
-
unless const < Widget
|
21
|
-
|
22
|
-
const
|
23
|
-
rescue NameError
|
24
|
-
raise Missing, "couldn't find `#{@name}' widget in this scope"
|
25
|
-
end
|
26
|
-
|
27
|
-
def to_sym
|
28
|
-
@canonical.to_sym
|
29
|
-
end
|
30
|
-
|
31
|
-
private
|
32
|
-
|
33
|
-
def canonical(name)
|
34
|
-
str = name.to_s
|
35
|
-
|
36
|
-
case str
|
37
|
-
when SNAKE_CASE_FORMAT
|
38
|
-
camel_case_from_snake_case(str)
|
39
|
-
when CAMEL_CASE_FORMAT
|
40
|
-
str
|
41
|
-
else
|
42
|
-
raise ArgumentError, "`#{str.inspect}' is an unrecognized format. Try snake case or camel case."
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def camel_case_from_snake_case(name)
|
47
|
-
capitalize_word = ->(word) { word[0].upcase + word[1..-1] }
|
48
|
-
word_separator = '_'
|
49
|
-
|
50
|
-
name
|
51
|
-
.split(word_separator)
|
52
|
-
.map(&capitalize_word)
|
53
|
-
.join
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|