tune_spec 0.4.1 → 0.5.3

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
  SHA1:
3
- metadata.gz: d8c4605566bacbca3e6a3071b4c65eb375ed6b92
4
- data.tar.gz: ee71b13da66c5a9dae81e5859be1dbe5744e8ce8
3
+ metadata.gz: 8b83bf10235e9377d6a6a3cf9c6a30a67b49b124
4
+ data.tar.gz: df48ef4b2cb6d703d80735e8300638fdd50b9622
5
5
  SHA512:
6
- metadata.gz: df310c927436e3effd24ae86bbdf5d17c6718ebbbe7e545ea4c9ec55c57131f462597daeb6b24c5c2a6ca4f10ff415f9710d5c77e191f9e9030ffbbad4ac090f
7
- data.tar.gz: ba559f6895adf7571bb0a8f945e67e8180ea9a5ce8471e79d15934ea2f03dee97087b52b19ca4899e43f088e7f39af3f189411047dab13e5398f9093205577c9
6
+ metadata.gz: c1236ea27bc5238c533c86cd0e6d3164b786798cf7f37bfefcc1fc097af35e108cbe604977414346d679b6450f141fb22305e5362e5522d5aeb038a7d204f0f8
7
+ data.tar.gz: 4f7f0a5f9ce4ff5b7771d8b0ab734274e2a9502a69730895852c087d5df452cd1e76d03303e7da33b16235a984d27553a2d5011506067a9884f08a1b4130903d
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .DS_Store
1
2
  *.gem
2
3
  .yardoc/
3
4
  doc/
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.4.1
4
+ before_script:
5
+ - bundle exec yard config load_plugins true
6
+ script:
7
+ - bundle exec rubocop
8
+ - bundle exec yard doctest
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- tune_spec (0.4.0)
4
+ tune_spec (0.5.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -33,11 +33,11 @@ PLATFORMS
33
33
  ruby
34
34
 
35
35
  DEPENDENCIES
36
- bundler (~> 1.15)
36
+ bundler (~> 1.16, >= 1.16.2)
37
37
  rubocop (~> 0.50.0)
38
38
  tune_spec!
39
39
  yard (~> 0.9.12)
40
40
  yard-doctest (~> 0.1.10)
41
41
 
42
42
  BUNDLED WITH
43
- 1.16.0.pre.3
43
+ 1.16.2
@@ -9,7 +9,7 @@ TEST_ENV = 'STG'
9
9
  TuneSpec.configure do |conf|
10
10
  conf.directory = 'test'
11
11
  conf.steps_page_arg = :page_object
12
- conf.groups_opts = { env: TEST_ENV }
12
+ conf.groups_opts = { env: TEST_ENV, aut: 'WEB' }
13
13
  conf.steps_opts = { env: TEST_ENV }
14
14
  conf.page_opts = { env: TEST_ENV }
15
15
  end
@@ -29,13 +29,18 @@ def file_content(name, type)
29
29
  klass.class_eval do
30
30
  case "#{type}"
31
31
  when 'groups'
32
- define_method('initialize') do |env|; end
32
+ define_method('initialize') do |test, env:, aut:|; end
33
33
  define_method('complete') do; end
34
34
  when 'steps'
35
- define_method('initialize') do |env, page_object|; end
36
- define_method('verify_result') do; end
35
+ define_method('initialize') do |env:, page_object:|
36
+ @env = env
37
+ @page_object = page_object
38
+ end
39
+ define_method('verify_result') do
40
+ @page_object.click_element
41
+ end
37
42
  when 'page'
38
- define_method('initialize') do |env|; end
43
+ define_method('initialize') do |env:|; end
39
44
  define_method('click_element') do; end
40
45
  end
41
46
  end
@@ -11,49 +11,53 @@ module TuneSpec
11
11
  # Creates an instance of Group or calls an existing
12
12
  #
13
13
  # @param name [Symbol, String] the prefix of the Groups object class
14
- # @param args [Any] additional optional arguments
14
+ # @param opts [Hash] optional arguments
15
+ # @param args [Any] extra arguments
15
16
  # @param block [Block] that yields to self
16
17
  # @return [GroupObject]
17
18
  # @example
18
- # groups(:login).complete
19
- def groups(name, *args, &block)
20
- instance_handler(name, Groups, *args, block)
19
+ # groups(:login, {}, 'Main').complete
20
+ def groups(name, opts = {}, *args, &block)
21
+ instance_handler(name, Groups, opts, *args, block)
21
22
  end
22
23
 
23
24
  # Creates an instance of Step or calls an existing
24
25
  #
25
26
  # @param name [Symbol, String] the prefix of the Step object class
26
- # @param args [Any] additional optional arguments
27
+ # @param opts [Hash] optional arguments
28
+ # @param args [Any] extra arguments
27
29
  # @param block [Block] that yields to self
28
30
  # @return [StepObject]
29
31
  # @example
30
32
  # steps(:calculator, page: :home).verify_result
31
- def steps(name, *args, page: nil, &block)
32
- args.insert(0, pages(page)) if page
33
- instance_handler(name, Steps, *args, block)
33
+ def steps(name, opts = {}, *args, &block)
34
+ opts[:page] && opts[:page] = pages(opts.fetch(:page))
35
+ instance_handler(name, Steps, opts, *args, block)
34
36
  end
35
37
 
36
38
  # Creates an instance of Page or calls an existing
37
39
  #
38
40
  # @param name [Symbol, String] the prefix of the Page object class
39
- # @param args [Any] additional optional arguments
41
+ # @param opts [Hash] optional arguments
42
+ # @param args [Any] extra arguments
40
43
  # @param block [Block] that yields to self
41
44
  # @return [PageObject]
42
45
  # @example
43
46
  # pages(:home).click_element
44
- def pages(name, *args, &block)
45
- instance_handler(name, Page, *args, block)
47
+ def pages(name, opts = {}, *args, &block)
48
+ instance_handler(name, Page, opts, *args, block)
46
49
  end
47
50
 
48
51
  private
49
52
 
50
53
  # @private
51
- def instance_handler(name, klass, *args, block)
54
+ def instance_handler(name, klass, opts, *args, block)
52
55
  method_name = klass.instance_method_name(name)
53
56
  instance_klass = klass.call_object(method_name)
54
57
  create_instance_method(method_name, klass, instance_klass)
55
- formatted_args = klass.format_args(args, instance_klass)
56
- call_instance_method(method_name, *formatted_args, block)
58
+ formatted_opts = klass.format_opts(opts, instance_klass)
59
+ args << formatted_opts unless formatted_opts.empty?
60
+ call_instance_method(method_name, *args, block)
57
61
  end
58
62
 
59
63
  # @private
@@ -61,14 +65,14 @@ module TuneSpec
61
65
  return if respond_to?(method_name)
62
66
  define_singleton_method(method_name) do |*args|
63
67
  instance_var = instance_variable_get("@#{method_name}")
64
- return instance_var if klass.rules_passed?(instance_var, args)
65
- new_instance = create_instance(klass, instance_klass, args)
68
+ return instance_var if klass.rules_passed?(instance_var, args.first)
69
+ new_instance = create_instance(klass, instance_klass, *args)
66
70
  instance_variable_set("@#{method_name}", new_instance)
67
71
  end
68
72
  end
69
73
 
70
74
  # @private
71
- def create_instance(klass, instance_klass, args)
75
+ def create_instance(klass, instance_klass, *args)
72
76
  return instance_klass.new(*args) if klass.object_type == :common
73
77
  wait_opts = TuneSpec.calabash_wait_opts
74
78
  page(instance_klass, *args).await(wait_opts)
@@ -8,7 +8,7 @@ module TuneSpec
8
8
  class Groups < Tuner
9
9
  class << self
10
10
  # Groups specific rules
11
- def rules_passed?(instance, _args)
11
+ def rules_passed?(instance, _opts)
12
12
  instance
13
13
  end
14
14
 
@@ -8,7 +8,7 @@ module TuneSpec
8
8
  class Page < Tuner
9
9
  class << self
10
10
  # Page specific rules
11
- def rules_passed?(instance, _args)
11
+ def rules_passed?(instance, _opts)
12
12
  instance
13
13
  end
14
14
 
@@ -8,8 +8,9 @@ module TuneSpec
8
8
  class Steps < Tuner
9
9
  class << self
10
10
  # Steps specific rules
11
- def rules_passed?(instance, args)
12
- same_page?(instance, args[1]) if args
11
+ def rules_passed?(instance, opts = {})
12
+ return false if opts.nil?
13
+ same_page?(instance, opts[page_arg]) unless opts.empty?
13
14
  end
14
15
 
15
16
  private
@@ -19,7 +20,8 @@ module TuneSpec
19
20
  return false unless instance
20
21
  return true unless instance.respond_to?(page_arg)
21
22
  return true unless general_steps?(instance)
22
- page.instance_of?(instance.page_object.class)
23
+ return true if page.nil?
24
+ page.instance_of?(instance.__send__(page_arg).class)
23
25
  end
24
26
 
25
27
  def general_steps?(instance)
@@ -33,6 +35,11 @@ module TuneSpec
33
35
  def page_arg
34
36
  TuneSpec.steps_page_arg
35
37
  end
38
+
39
+ def pre_format_opts(opts)
40
+ return opts unless opts.key?(:page)
41
+ opts.tap { |hash| hash[page_arg] = hash.delete(:page) }
42
+ end
36
43
  end
37
44
  end
38
45
  end
@@ -10,15 +10,15 @@ module TuneSpec
10
10
  end
11
11
 
12
12
  # A hook to define rules by subclasses
13
- def rules_passed?(_instance, _args)
13
+ def rules_passed?(_instance, _opts = {})
14
14
  raise "Implement a #rules_passed? method for #{self}"
15
15
  end
16
16
 
17
- def format_args(args, object_klass)
18
- default_args = fetch_default_args
19
- args.tap do |arr|
20
- default_args.each do |key, value|
21
- arr.insert(0, value) if argument_required?(key, object_klass)
17
+ def format_opts(opts, instance_klass)
18
+ default_opts = fetch_default_opts
19
+ pre_format_opts(opts).tap do |hash|
20
+ default_opts.each do |key, value|
21
+ hash[key] = value if argument_required?(key, instance_klass)
22
22
  end
23
23
  end
24
24
  end
@@ -39,7 +39,7 @@ module TuneSpec
39
39
  @type ||= itself.to_s.split('::').last.downcase
40
40
  end
41
41
 
42
- def fetch_default_args
42
+ def fetch_default_opts
43
43
  TuneSpec.__send__("#{type}_opts".downcase)
44
44
  end
45
45
 
@@ -48,18 +48,22 @@ module TuneSpec
48
48
  end
49
49
 
50
50
  def ensure_required(name)
51
- path = load_files.detect { |f| f.include?("/#{name}.rb") }
51
+ path = project_files.detect { |f| f.include?("/#{name}.rb") }
52
52
  path ? require("./#{path}") : raise("Unable to find #{name}.rb")
53
53
  end
54
54
 
55
- def load_files
56
- @files ||= Dir.glob("#{file_directory}/**/*")
55
+ def project_files
56
+ @project_files ||= Dir.glob("#{file_directory}/**/*")
57
57
  end
58
58
 
59
59
  # A hook to implement folder name by subclass
60
60
  def file_directory
61
61
  raise "Implement a #folder_name method for #{self}"
62
62
  end
63
+
64
+ def pre_format_opts(opts)
65
+ opts
66
+ end
63
67
  end
64
68
  end
65
69
  end
@@ -40,6 +40,7 @@ module TuneSpec
40
40
  end
41
41
  end
42
42
  end
43
+ # rubocop:enable MethodLength
43
44
 
44
45
  private
45
46
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TuneSpec
4
- VERSION = '0.4.1'
4
+ VERSION = '0.5.3'
5
5
  end
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_development_dependency 'bundler', '~> 1.15'
23
+ spec.add_development_dependency 'bundler', '~> 1.16', '>= 1.16.2'
24
24
  spec.add_development_dependency 'rubocop', '~> 0.50.0'
25
25
  spec.add_development_dependency 'yard', '~> 0.9.12'
26
26
  spec.add_development_dependency 'yard-doctest', '~> 0.1.10'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tune_spec
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Starostenko
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-14 00:00:00.000000000 Z
11
+ date: 2018-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.15'
19
+ version: '1.16'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.16.2
20
23
  type: :development
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: '1.15'
29
+ version: '1.16'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 1.16.2
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: rubocop
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -77,6 +83,7 @@ files:
77
83
  - ".gitignore"
78
84
  - ".ruby-gemset"
79
85
  - ".ruby-version"
86
+ - ".travis.yml"
80
87
  - CODE_OF_CONDUCT.md
81
88
  - Gemfile
82
89
  - Gemfile.lock
@@ -119,5 +126,5 @@ rubyforge_project:
119
126
  rubygems_version: 2.6.12
120
127
  signing_key:
121
128
  specification_version: 4
122
- summary: tune_spec_0.4.1
129
+ summary: tune_spec_0.5.3
123
130
  test_files: []