qaa_fixtures 1.0.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8f2a609721ac331d72ceff1ce47c86cf2f1669bc0b4f47d73444d5832fadd16c
4
+ data.tar.gz: b75ee21659cf8c2fb2288bcf831b6ade92b751c6e88bfaee8031056d82676954
5
+ SHA512:
6
+ metadata.gz: 6ffa63c83ef53850540d1149258153da3f05d5c191bd4a23b7b7c100283faaeed9c87dbf8b14c8fd04c906a4c4354da3e31ba431285159ffddc78971844aca7b
7
+ data.tar.gz: f5f8b6f2b8e08ca822cebbd362b6876993defbf3f0ad32cab07111f0cfc1dd05999f5e3186de71b4b6190a1df48d4807f19fbe561c20ebbc089e4dcd930c7fda
@@ -0,0 +1 @@
1
+ /build
@@ -0,0 +1,94 @@
1
+ require 'yaml'
2
+
3
+ #all methods in here are singleton methods
4
+ module Qaa
5
+ class Configuration
6
+
7
+ def self.config
8
+ @config ||= {}
9
+ end
10
+
11
+ def self.load(profile_name, file_path, reset=false)
12
+ begin
13
+ new_config = YAML.load(ERB.new(File.read(file_path)).result)[profile_name]
14
+ @config = {} if reset
15
+ config_merge!(new_config)
16
+ rescue Exception => e
17
+ raise "Could not locate a configuration named \"#{profile_name}\" in \"#{file_path}\", #{e.message}"
18
+ end
19
+ end
20
+
21
+ def self.fetch (key, default='')
22
+ if self.has_key? key
23
+ self.[] key
24
+ else
25
+ default
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def self.deep_merge! (key, value)
32
+ if value.is_a?(Hash)
33
+ value.each_pair do |k, v|
34
+ self.deep_merge! "#{key}.#{k}", v
35
+ end
36
+ else
37
+ self.[]= key, value
38
+ end
39
+ end
40
+
41
+
42
+ def self.[]= (key, value)
43
+ cur = config
44
+ key_parts = key.split('.')
45
+ key_parts[0..-2].each do |key_part|
46
+ if (!cur.has_key? key_part) || cur[key_part].nil?
47
+ cur[key_part] = {}
48
+ end
49
+ cur = cur[key_part]
50
+ end
51
+ cur[key_parts.last] = value
52
+ end
53
+
54
+ def self.[] (key)
55
+ if config.has_key? key
56
+ config[key]
57
+ else
58
+ cur = config
59
+ key.split('.').each do |key_part|
60
+ if cur.has_key? key_part
61
+ cur = cur[key_part]
62
+ else
63
+ return nil
64
+ end
65
+ end
66
+ cur
67
+ end
68
+ end
69
+
70
+ def self.has_key? (key)
71
+ if config.has_key? key
72
+ true
73
+ else
74
+ cur = config
75
+ key.split('.').each do |key_part|
76
+ if cur && (cur.has_key? key_part)
77
+ cur = cur[key_part]
78
+ else
79
+ return false
80
+ end
81
+ end
82
+ return true
83
+ end
84
+ end
85
+
86
+
87
+ def self.config_merge! (config_hash)
88
+ config_hash.each_pair do |k, v|
89
+ self.deep_merge! k, v
90
+ end
91
+ end
92
+ end
93
+
94
+ end
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+ require "qaa/fixtures/version"
3
+ require 'qaa/configuration'
4
+ require 'singleton'
5
+
6
+ module Qaa
7
+ class Fixtures
8
+ include Singleton
9
+
10
+ def self.instance
11
+ @instance ||= new
12
+ end
13
+
14
+ def [] (fixture_name)
15
+ sym = fixture_name.to_sym
16
+ Configuration.fetch("#{sym}", '')
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ module Qaa
2
+ class Fixtures
3
+ VERSION = "1.0.1"
4
+ end
5
+ end
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'qaa/fixtures/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "qaa_fixtures"
8
+ spec.version = Qaa::Fixtures::VERSION
9
+ spec.authors = ["Hang Nguyen"]
10
+ spec.email = ["hang.nguyen.161@gmail.com"]
11
+ spec.description = 'Small functions to use as toolbox'
12
+ spec.summary = %q{Qaa Fixtures}
13
+ spec.homepage = "https://rubygems.org/"
14
+ spec.license = "hang.nguyen.161@gmail.com"
15
+
16
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
+ # delete this section to allow pushing this gem to any host.
18
+ if spec.respond_to?(:metadata)
19
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org/'
20
+ else
21
+ raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
+ end
23
+
24
+
25
+ spec.files = Dir["**/*"]
26
+ spec.add_development_dependency 'allure-cucumber'
27
+ spec.add_development_dependency 'allure-rspec'
28
+ spec.add_runtime_dependency 'watir'
29
+ spec.add_runtime_dependency "bundler"
30
+ end
metadata ADDED
@@ -0,0 +1,106 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: qaa_fixtures
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Hang Nguyen
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-12-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: allure-cucumber
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: allure-rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: watir
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ description: Small functions to use as toolbox
70
+ email:
71
+ - hang.nguyen.161@gmail.com
72
+ executables: []
73
+ extensions: []
74
+ extra_rdoc_files: []
75
+ files:
76
+ - gitignore
77
+ - lib/qaa/configuration.rb
78
+ - lib/qaa/fixtures.rb
79
+ - lib/qaa/fixtures/version.rb
80
+ - qaa-fixtures.gemspec
81
+ homepage: https://rubygems.org/
82
+ licenses:
83
+ - hang.nguyen.161@gmail.com
84
+ metadata:
85
+ allowed_push_host: https://rubygems.org/
86
+ post_install_message:
87
+ rdoc_options: []
88
+ require_paths:
89
+ - lib
90
+ required_ruby_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ requirements: []
101
+ rubyforge_project:
102
+ rubygems_version: 2.7.6
103
+ signing_key:
104
+ specification_version: 4
105
+ summary: Qaa Fixtures
106
+ test_files: []