appom 0.7.4 → 0.8.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
2
  SHA256:
3
- metadata.gz: 589276e2a8ed788614bbf85ce919f1a6cd031ed430a2188497dd6c1e2d2183d0
4
- data.tar.gz: 882ccfee6adf9f8ef4643402e533c04c5d975dfa49352df81b1d761021557b43
3
+ metadata.gz: b32d28e930a6f341aa50bfba1c2d5fce509b24f8490a791ffd285970e8fe07a0
4
+ data.tar.gz: 9373487e660babc46661f1f58431731582f53dc534ffb09bf9663b2f9f8f3f2d
5
5
  SHA512:
6
- metadata.gz: 9bb546aa82daa1077d8b61e676303056652a057fcc1713074432c0c279a59fc4f611ee419ec5a1b485beeca4b0ea8fe29aba8563349ccdeaac64efe954c27858
7
- data.tar.gz: 56a11c24fcd3e6b53be811c47357f9e18bab70de605c4a6dedecd149add080694861b77220ca61af4b83d2f0199ebd707fba6f638d73d0a2a6a3efce2fae6150
6
+ metadata.gz: 572dc5aca35bb42e9259eb87fe93ad63fa71daa7fa1c44785fab9ea39290462bc8707d79e3616a8a35b502e5064237029e21f1547f24fe4fbb4df7993a0ec80f
7
+ data.tar.gz: 2ad6d47691c224987da5b013424df6015768c0399893d2bc5f6373393c6bd55d05425da6319f5ca2e17ba37a5d7928823b1215b5564fe2faaef996e74dbd60cf
@@ -16,6 +16,10 @@ module Appom
16
16
  class NoSuchElementError < StandardError; end
17
17
  # An elements is empty using the given search parameters.
18
18
  class ElementsEmptyError < StandardError; end
19
+ # Text from an element not equal expected text
20
+ class ElementsTextVerifyError < StandardError; end
21
+ # An element is define with no text value
22
+ class ElementsDefineNoTextError < StandardError; end
19
23
 
20
24
  autoload :ElementContainer, 'appom/element_container'
21
25
  autoload :Page, 'appom/page'
@@ -42,14 +42,15 @@ module Appom
42
42
  # Element doesn't support block so that will raise if pass a block when declare
43
43
  #
44
44
  def element(name, *find_args)
45
- build_element(name, *find_args) do
45
+ text, args = deduce_element_text(find_args)
46
+ build_element(name, *args) do
46
47
  define_method(name) do |*runtime_args, &block|
47
48
  raise_if_block(self, name, !block.nil?, :element)
48
- _find(*merge_args(find_args, runtime_args))
49
- end
50
- define_method("#{name}_params") do
51
- merge_args(find_args)
49
+ _find(*merge_args(args, runtime_args))
52
50
  end
51
+
52
+ create_get_element_params(name, args)
53
+ create_verify_element_text(name, text, args)
53
54
  end
54
55
  end
55
56
 
@@ -71,9 +72,8 @@ module Appom
71
72
  raise_if_block(self, name, !block.nil?, :elements)
72
73
  _all(*merge_args(find_args, runtime_args))
73
74
  end
74
- define_method("#{name}_params") do
75
- merge_args(find_args)
76
- end
75
+
76
+ create_get_element_params(name, find_args)
77
77
  end
78
78
  end
79
79
 
@@ -84,10 +84,11 @@ module Appom
84
84
  section_element = _find(*merge_args(find_args, runtime_args))
85
85
  section_class.new(self, section_element)
86
86
  end
87
- define_method("#{name}_params") do
88
- merge_args(find_args)
89
- end
87
+
88
+ create_get_element_params(name, find_args)
90
89
  end
90
+
91
+
91
92
  end
92
93
 
93
94
  def sections(name, *args, &block)
@@ -99,9 +100,8 @@ module Appom
99
100
  section_class.new(self, element)
100
101
  end
101
102
  end
102
- define_method("#{name}_params") do
103
- merge_args(find_args)
104
- end
103
+
104
+ create_get_element_params(name, find_args)
105
105
  end
106
106
  end
107
107
 
@@ -259,6 +259,66 @@ module Appom
259
259
  end
260
260
  end
261
261
 
262
+ ##
263
+ # Verify text for an element
264
+ #
265
+ def create_verify_element_text(element_name, text, *find_args)
266
+ method_name = "#{element_name}_verify_text"
267
+
268
+ create_helper_method(method_name, *find_args) do
269
+ define_method(method_name) do |*runtime_args|
270
+ # Raise if element have no text value
271
+ if text.nil?
272
+ raise(ElementsDefineNoTextError, "#{name} element is define with no text value")
273
+ end
274
+
275
+ args = merge_args(find_args, runtime_args)
276
+ element = _find(*args)
277
+ element_text = element.text
278
+ if !element_text.eql?(text)
279
+ raise(ElementsTextVerifyError, "expected: value == #{text} got: #{element_text}")
280
+ end
281
+ end
282
+ end
283
+ end
284
+
285
+ ##
286
+ # Get parameter is passed when declared element
287
+ #
288
+ def create_get_element_params(element_name, *find_args)
289
+ method_name = "#{element_name}_params"
290
+ create_helper_method(method_name, *find_args) do
291
+ define_method(method_name) do
292
+ merge_args(find_args)
293
+ end
294
+ end
295
+ end
296
+
297
+ ##
298
+ # Deduce text value
299
+ # @return expected text for element and the remaining parameters
300
+ #
301
+ def deduce_element_text(args)
302
+ # Flatten argument array first if we are in case array inside array
303
+ args = args.flatten
304
+
305
+ if args.empty?
306
+ raise(ArgumentError, 'You should provide search arguments in element creation')
307
+ end
308
+
309
+ # Get last key and check if it contain 'text' key
310
+ last_key = args.last
311
+ text = nil
312
+ if last_key.is_a?(Hash)
313
+ if last_key.key?(:text)
314
+ text = last_key[:text]
315
+ args.pop
316
+ end
317
+ end
318
+
319
+ [text, args]
320
+ end
321
+
262
322
  ##
263
323
  # Extract section options
264
324
  # @return section class name and the remaining parameters
@@ -1,3 +1,3 @@
1
1
  module Appom
2
- VERSION = '0.7.4'.freeze
2
+ VERSION = '0.8.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appom
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry.Tran
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-08 00:00:00.000000000 Z
11
+ date: 2018-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: appium_lib