edsl 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/edsl/dsl.rb +4 -4
- data/lib/edsl/version.rb +1 -1
- data/lib/edsl/watir_elements.rb +7 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 262bddb9dfb3d2caaa3d9c53431254ae3fb664522520d71bf226164dd6760ce7
|
4
|
+
data.tar.gz: c0df10648dd230dcee5126616b751387408960c0fc12fa0d2273227199dfbcff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61b89fd6e0c20679f5c97b4818e601919cefe020760ca08ec52d4696507576c5445138b8c0df8c0f6b8b74c425d3116f163a705943fdb57a915b80c6ce701f3b
|
7
|
+
data.tar.gz: a44fe39d57630650bc998cd888494eb8975683cf92f7c051302e94fd5d2a7966b7626aeb21b19da8a3a50f47c4a3e57ec16acd31f1a2095c5a2354bd27ae6bfb
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# EDSL - Element DSL
|
2
2
|
|
3
|
-
This gem implements an extensible DSL for declaring web elements as part of a page object pattern. This gem does **not** implement the page object pattern, for an implementation of page object using this gem see edsl-pageobject.
|
3
|
+
This gem implements an extensible DSL for declaring web elements as part of a page object pattern. This gem does **not** implement the page object pattern, for an implementation of page object using this gem see [edsl-pageobject](https://github.com/donavan/edsl-pageobject).
|
4
4
|
|
5
5
|
This gem was created out of the need to rapidly produce abstractions for non-standard web elements. With EDSL support for new accessors and other DSL methods can be implemented without needing to modify any EDSL source or monkey patching. It allows you to rapidly prototype using lambdas, or to build full classes to use in place of existing elements.
|
6
6
|
|
data/lib/edsl/dsl.rb
CHANGED
@@ -79,8 +79,8 @@ module EDSL
|
|
79
79
|
# A text field could be declared like this:
|
80
80
|
# element(:username, id: 'some_id', how: Proc.new { |name, container, opts| container.text_field(opts) }, default_method: :value, assign_method: :set)
|
81
81
|
#
|
82
|
-
def element(name, opts)
|
83
|
-
element_method = _add_element_method(name, opts)
|
82
|
+
def element(name, opts, &block)
|
83
|
+
element_method = _add_element_method(name, opts, &block)
|
84
84
|
_add_common_methods(name, element_method, opts)
|
85
85
|
_add_assignment_methods(name, element_method, opts)
|
86
86
|
end
|
@@ -117,14 +117,14 @@ module EDSL
|
|
117
117
|
|
118
118
|
# rubocop:disable Metrics/AbcSize
|
119
119
|
# Helper function to reduce perceived complexity of element
|
120
|
-
def _add_element_method(name, opts)
|
120
|
+
def _add_element_method(name, opts, &block)
|
121
121
|
how = opts.delete(:how)
|
122
122
|
hooks = opts.delete(:hooks)
|
123
123
|
wrapper_fn = opts.delete(:wrapper_fn) || ->(e, _p) { return e }
|
124
124
|
|
125
125
|
ele_meth = "#{name}_element"
|
126
126
|
define_method(ele_meth) do
|
127
|
-
ele = yield if block_given?
|
127
|
+
ele = yield self if block_given?
|
128
128
|
ele ||= how.call(name, self, opts) if how.is_a?(Proc)
|
129
129
|
ele ||= send(how, opts)
|
130
130
|
ele = wrapper_fn.call(ele, self)
|
data/lib/edsl/version.rb
CHANGED
data/lib/edsl/watir_elements.rb
CHANGED
@@ -3,7 +3,7 @@ require 'facets/string/snakecase'
|
|
3
3
|
module EDSL
|
4
4
|
# This module extends the DSL to include the various Watir elements
|
5
5
|
module WatirElements
|
6
|
-
SPECIAL_ELEMENTS = %i[button a radio_set input select textarea].freeze
|
6
|
+
SPECIAL_ELEMENTS = %i[button a radio_set input select textarea ul footer frameset head header ol].freeze
|
7
7
|
|
8
8
|
TEXT_ELEMENTS = Watir.tag_to_class.keys.reject { |k| SPECIAL_ELEMENTS.include?(k) }.map { |t| t.to_s.snakecase }.freeze
|
9
9
|
TEXT_ELEMENTS.each do |tag|
|
@@ -18,5 +18,11 @@ module EDSL
|
|
18
18
|
|
19
19
|
SETABLE_ELEMENTS = %i[radio checkbox].freeze
|
20
20
|
SETABLE_ELEMENTS.each { |tag| EDSL.define_accessor(tag, how: tag, default_method: :set?, assign_method: :set) }
|
21
|
+
|
22
|
+
GENERIC_ELEMENTS = %i[ul footer frameset head header ol]
|
23
|
+
GENERIC_ELEMENTS.each { |tag| EDSL.define_accessor(tag, how: tag) }
|
24
|
+
|
25
|
+
SELECT_ELEMENTS = %i[select select_list]
|
26
|
+
SELECT_ELEMENTS.each { |tag| EDSL.define_accessor(tag, how: tag, default_method: :text, assign_method: :select) }
|
21
27
|
end
|
22
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: edsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Donavan Stanley
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|