data_magic 1.1 → 1.2
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 +4 -4
- data/.ruby-version +1 -1
- data/ChangeLog +5 -0
- data/README.md +2 -0
- data/data_magic.gemspec +4 -2
- data/lib/data_magic.rb +17 -16
- data/lib/data_magic/core_ext/hash.rb +5 -0
- data/lib/data_magic/version.rb +1 -1
- data/spec/lib/translation_spec.rb +18 -10
- data/spec/spec_helper.rb +2 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e231dc9f35e689aab2f2e5558e962db909db8a54
|
4
|
+
data.tar.gz: 5756c7b84233f4bec53aa8b99bf1cf932cc55ba3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 67be3b00d42169891f063df7f0ec40cdf26811958855cb094e2a345e25ea6afe7f642aa7c55ce671f8cad2250b74fa1d92a71bc238796dde343b0eb203902a82
|
7
|
+
data.tar.gz: 3735825cd564df1788fe528b2bfca277afc147b859d9d91a26eadf3dcf8da8dc6916b39bd1cb5433eed35e91446b7546b6ebb08f066dad9d7eedb764fc506c11
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.2.7
|
data/ChangeLog
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
== Version 1.2 / 2017-09-23
|
2
|
+
* Enhancements
|
3
|
+
* Data is translated each time a request is made for data (Thanks Vveliev)
|
4
|
+
* Array handling and translation (Thanks Vveliev)
|
5
|
+
|
1
6
|
== Version 1.1 / 2016-08-03
|
2
7
|
* Fixes
|
3
8
|
* Update so it works well on Ruby 2.4 (thanks Robert MacCracken)
|
data/README.md
CHANGED
@@ -136,7 +136,9 @@ The rdocs for this project can be found at [rubydoc.info](http://rubydoc.info/gi
|
|
136
136
|
|
137
137
|
To see the changes from release to release please look at the [ChangeLog](https://raw.github.com/cheezy/data_magic/master/ChangeLog)
|
138
138
|
|
139
|
+
## Older versions of Ruby:
|
139
140
|
|
141
|
+
This gem only works with Ruby >= 2.2. Use versions 1.1 or below if you have an older Ruby.
|
140
142
|
|
141
143
|
## Known Issues
|
142
144
|
|
data/data_magic.gemspec
CHANGED
@@ -11,12 +11,14 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.homepage = "http://github.com/cheezy/data_magic"
|
12
12
|
gem.summary = %q{Provides datasets to application via YAML files}
|
13
13
|
gem.description = %q{Provides datasets to application stored in YAML files}
|
14
|
-
|
14
|
+
|
15
15
|
gem.files = `git ls-files`.split("\n")
|
16
16
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
17
|
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
18
|
gem.require_paths = ["lib"]
|
19
|
-
|
19
|
+
|
20
|
+
gem.required_ruby_version = '>= 2.2'
|
21
|
+
|
20
22
|
gem.add_dependency 'faker', '>= 1.1.2'
|
21
23
|
gem.add_dependency 'yml_reader', '>= 0.6'
|
22
24
|
|
data/lib/data_magic.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
require 'data_magic/core_ext/string'
|
2
2
|
require 'data_magic/core_ext/integer'
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require 'data_magic/core_ext/hash'
|
4
|
+
require 'data_magic/version'
|
5
|
+
require 'data_magic/translation'
|
5
6
|
require 'data_magic/date_translation'
|
6
7
|
require 'data_magic/standard_translation'
|
7
8
|
require 'yml_reader'
|
@@ -19,7 +20,7 @@ module DataMagic
|
|
19
20
|
def self.locale=(value)
|
20
21
|
Faker::Config.locale = value
|
21
22
|
end
|
22
|
-
|
23
|
+
|
23
24
|
def self.included(cls)
|
24
25
|
@parent = cls
|
25
26
|
translators.each do |translator|
|
@@ -37,7 +38,7 @@ module DataMagic
|
|
37
38
|
end
|
38
39
|
data = DataMagic.yml[record]
|
39
40
|
raise ArgumentError, "Undefined key #{key}" unless data
|
40
|
-
additional.key?(record) ?
|
41
|
+
prep_data(data.merge(additional.key?(record) ? additional[record] : additional).deep_copy)
|
41
42
|
end
|
42
43
|
|
43
44
|
# Given a scenario, load any fixture it needs.
|
@@ -54,25 +55,25 @@ module DataMagic
|
|
54
55
|
private
|
55
56
|
|
56
57
|
def the_file
|
57
|
-
ENV['DATA_MAGIC_FILE'] ? ENV['DATA_MAGIC_FILE'] :
|
58
|
+
ENV['DATA_MAGIC_FILE'] ? ENV['DATA_MAGIC_FILE'] : 'default.yml'
|
58
59
|
end
|
59
60
|
|
60
61
|
def prep_data(data)
|
61
|
-
data
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
end
|
69
|
-
end
|
62
|
+
case data
|
63
|
+
when Hash
|
64
|
+
data.each {|key, value| data[key] = prep_data(value)}
|
65
|
+
when Array
|
66
|
+
data.each_with_index{|value, i| data[i] = prep_data(value)}
|
67
|
+
when String
|
68
|
+
return translate(data[1..-1]) if data[0, 1] == '~'
|
70
69
|
end
|
71
70
|
data
|
72
71
|
end
|
73
72
|
|
74
73
|
def translate(value)
|
75
74
|
translation.send :process, value
|
75
|
+
rescue => error
|
76
|
+
fail "Failed to translate: #{value}\n Reason: #{error.message}\n"
|
76
77
|
end
|
77
78
|
|
78
79
|
def translation
|
@@ -88,12 +89,12 @@ module DataMagic
|
|
88
89
|
def self.fixture_files_on(scenario)
|
89
90
|
# tags for cuke 2, source_tags for cuke 1
|
90
91
|
tags = scenario.send(scenario.respond_to?(:tags) ? :tags : :source_tags)
|
91
|
-
tags.map(&:name).select {
|
92
|
+
tags.map(&:name).select {|t| t =~ /@datamagic_/}.map {|t| t.gsub('@datamagic_', '').to_sym}
|
92
93
|
end
|
93
94
|
|
94
95
|
class << self
|
95
96
|
attr_accessor :yml
|
96
|
-
|
97
|
+
|
97
98
|
def default_directory
|
98
99
|
'config/data'
|
99
100
|
end
|
data/lib/data_magic/version.rb
CHANGED
@@ -1,17 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
-
|
3
|
-
class TestSubject
|
4
|
-
include DataMagic
|
5
|
-
end
|
6
|
-
|
7
2
|
describe "DataMagic translations" do
|
8
3
|
context "when delivering data" do
|
9
|
-
let(:example) {
|
4
|
+
let(:example) { (Class.new { include DataMagic }).new }
|
10
5
|
|
11
6
|
def set_field_value(value)
|
12
7
|
expect(DataMagic).to receive(:yml).twice.and_return({'key' => {'field' => value}})
|
13
8
|
end
|
14
|
-
|
9
|
+
|
15
10
|
it "should deliver the hash from the yaml" do
|
16
11
|
set_field_value 'value'
|
17
12
|
expect(example.data_for('key')).to have_field_value 'value'
|
@@ -39,7 +34,7 @@ describe "DataMagic translations" do
|
|
39
34
|
expect(yaml).to receive(:merge).and_return(yaml)
|
40
35
|
expect(DataMagic).to receive(:yml).twice.and_return(yaml)
|
41
36
|
expect(yaml).to receive(:[]).and_return(yaml)
|
42
|
-
expect(yaml).to receive(:
|
37
|
+
expect(yaml).to receive(:deep_copy).and_return({'field' => 'value'})
|
43
38
|
expect(example.data_for('key')).to have_field_value 'value'
|
44
39
|
end
|
45
40
|
|
@@ -48,7 +43,7 @@ describe "DataMagic translations" do
|
|
48
43
|
expect(DataMagic).to receive(:yml).twice.and_return(yaml)
|
49
44
|
expect(yaml).to receive(:[]).and_return(yaml)
|
50
45
|
expect(yaml).to receive(:merge).and_return(yaml)
|
51
|
-
expect(yaml).to receive(:
|
46
|
+
expect(yaml).to receive(:deep_copy).and_return({'field' => 'value'})
|
52
47
|
expect(example.data_for('key')).to have_field_value 'value'
|
53
48
|
end
|
54
49
|
|
@@ -170,7 +165,7 @@ describe "DataMagic translations" do
|
|
170
165
|
expect(example.data_for('key')).to have_field_value 'very_cheezy'
|
171
166
|
end
|
172
167
|
end
|
173
|
-
|
168
|
+
|
174
169
|
context "translating phone numbers" do
|
175
170
|
it "shold add a phone number" do
|
176
171
|
expect(Faker::PhoneNumber).to receive(:phone_number).and_return('555-555-5555')
|
@@ -312,5 +307,18 @@ describe "DataMagic translations" do
|
|
312
307
|
expect(example.data_for('key')).to have_field_value the_date.strftime('%D')
|
313
308
|
end
|
314
309
|
end
|
310
|
+
context "should fail when translation call methos is not defined" do
|
311
|
+
it "should fail if method does not exist" do
|
312
|
+
set_field_value '~non_existing_method'
|
313
|
+
expect{example.data_for('key')}.to raise_error(/non_existing_method/)
|
314
|
+
end
|
315
|
+
end
|
316
|
+
|
317
|
+
context "array translation test" do
|
318
|
+
it "should be able to translate " do
|
319
|
+
set_field_value ["~'user' + 'name'", 'second']
|
320
|
+
expect(example.data_for('key')).to have_field_value ['username','second']
|
321
|
+
end
|
322
|
+
end
|
315
323
|
end
|
316
324
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -14,8 +14,9 @@ require 'rspec'
|
|
14
14
|
require 'data_magic'
|
15
15
|
|
16
16
|
RSpec::Matchers.define :have_field_value do |expected|
|
17
|
+
supports_block_expectations
|
17
18
|
match do |actual|
|
18
|
-
actual['field']
|
19
|
+
actual['field'] === expected
|
19
20
|
end
|
20
21
|
|
21
22
|
failure_message do |actual|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_magic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '1.
|
4
|
+
version: '1.2'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeff Morgan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faker
|
@@ -95,6 +95,7 @@ files:
|
|
95
95
|
- features/yaml/another.yml
|
96
96
|
- features/yaml/example.yml
|
97
97
|
- lib/data_magic.rb
|
98
|
+
- lib/data_magic/core_ext/hash.rb
|
98
99
|
- lib/data_magic/core_ext/integer.rb
|
99
100
|
- lib/data_magic/core_ext/string.rb
|
100
101
|
- lib/data_magic/date_translation.rb
|
@@ -116,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
116
117
|
requirements:
|
117
118
|
- - ">="
|
118
119
|
- !ruby/object:Gem::Version
|
119
|
-
version: '
|
120
|
+
version: '2.2'
|
120
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
122
|
requirements:
|
122
123
|
- - ">="
|