appom 0.7.4 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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