data_magic 0.14 → 0.15
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 +7 -0
- data/.rspec +1 -1
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +2 -1
- data/ChangeLog +4 -0
- data/Gemfile +1 -2
- data/Guardfile +2 -2
- data/README.md +42 -1
- data/cucumber.yml +2 -1
- data/features/data_magic.feature +7 -0
- data/features/step_definitions/data_magic_steps.rb +11 -1
- data/features/yaml/example.yml +1 -0
- data/lib/data_magic.rb +8 -1
- data/lib/data_magic/translation.rb +32 -1
- data/lib/data_magic/version.rb +1 -1
- metadata +17 -32
- data/.rvmrc +0 -1
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 922557a61172c1af98da3f9540fc53cb0e893012
|
4
|
+
data.tar.gz: dac1c4381d65cc8da7a196931276309f97c59634
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d23ffb5d15323112f045709476b077a0ea11830197345c026bc3a81e600a6b7ed325c7e709fe2d22b7b90d67d643897ca84d9ad270aba6e05f48306655cff76d
|
7
|
+
data.tar.gz: dee63c85fd6a0f31bb4dc26078b2acadf0e5ae72eae2ba0665397819f0aa40a47565023e2c65046a981f5b12ffcec382f87dc98d048f1c0f3bfd336740fdc079
|
data/.rspec
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
--color
|
2
|
-
--format
|
2
|
+
--format documentation
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
data_magic
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.0.0-p195
|
data/.travis.yml
CHANGED
data/ChangeLog
CHANGED
data/Gemfile
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
2
|
|
3
3
|
gem 'rake'
|
4
|
-
gem 'fuubar'
|
5
|
-
gem 'fuubar-cucumber'
|
6
4
|
gem 'rb-fsevent', :require => false if RUBY_PLATFORM =~ /darwin/i
|
7
5
|
gem 'growl'
|
8
6
|
gem 'guard-rspec'
|
9
7
|
gem 'guard-cucumber'
|
8
|
+
gem 'fuubar'
|
10
9
|
|
11
10
|
# Specify your gem's dependencies in data_magic.gemspec
|
12
11
|
gemspec
|
data/Guardfile
CHANGED
@@ -3,11 +3,11 @@
|
|
3
3
|
|
4
4
|
guard 'rspec', :cli => '--color --format Fuubar' do
|
5
5
|
watch(%r{^spec/.+_spec\.rb$})
|
6
|
-
watch(%r{^lib/(.+)\.rb$}) {
|
6
|
+
watch(%r{^lib/(.+)\.rb$}) { "spec" }
|
7
7
|
watch('spec/spec_helper.rb') { "spec" }
|
8
8
|
end
|
9
9
|
|
10
|
-
guard 'cucumber', :notification => true, :cli => '--profile
|
10
|
+
guard 'cucumber', :notification => true, :cli => '--profile focus' do
|
11
11
|
watch(%r{^features/.+\.feature$})
|
12
12
|
watch(%r{^features/support/.+$}) { 'features' }
|
13
13
|
watch(%r{^features/step_definitions/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'features' }
|
data/README.md
CHANGED
@@ -65,6 +65,47 @@ You can call one of many built-in methods in your yaml file to randomize the dat
|
|
65
65
|
email: ~email_address
|
66
66
|
pay_type: ~randomize ['Credit card', 'Purchase order', 'Check']
|
67
67
|
|
68
|
+
Here is a list of the built-in methods:
|
69
|
+
|
70
|
+
| built-in methods | built-in methods |
|
71
|
+
| --- | --- |
|
72
|
+
| first_name last_name |
|
73
|
+
| last_name | full_name |
|
74
|
+
| name_prefix | name_suffix |
|
75
|
+
| title | street_address(include_secondary=false) |
|
76
|
+
| secondary_address | city |
|
77
|
+
| state | state_abbr |
|
78
|
+
| zip_code | country |
|
79
|
+
| company_name | catch_phrase |
|
80
|
+
| words(number = 3) | sentence(min_word_count = 4) |
|
81
|
+
| sentences(sentence_count = 3) | paragraphs(paragraph_count = 3) |
|
82
|
+
| characters(character_count = 255) | email_address(name = nil) |
|
83
|
+
| domain_name | url |
|
84
|
+
| user_name |
|
85
|
+
| phone_number | cell_phone |
|
86
|
+
| randomize([]) | randomize(1..4) |
|
87
|
+
| mask - #=num a=lower A=upper |
|
88
|
+
| today(format = '%D') | tomorrow(format = '%D') |
|
89
|
+
| yesterday(format = '%D') |
|
90
|
+
| 3.days_from_today(format = '%D') | 3.days_ago(format = '%D') |
|
91
|
+
| month | month_abbr |
|
92
|
+
| day_of_week | day_of_week_abbr |
|
93
|
+
|
94
|
+
|
95
|
+
If you wish to add your own built-in methods you can simply pass a module
|
96
|
+
to _DataMagic_ and all of the methods will be available.
|
97
|
+
|
98
|
+
````ruby
|
99
|
+
module MyData
|
100
|
+
def abc
|
101
|
+
'abc'
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
DataMagic.add_translator MyData
|
106
|
+
|
107
|
+
# can now use ~abc in my yml files
|
108
|
+
````
|
68
109
|
|
69
110
|
## Documentation
|
70
111
|
|
@@ -90,4 +131,4 @@ Please ensure all contributions contain proper tests.
|
|
90
131
|
|
91
132
|
## Copyright
|
92
133
|
|
93
|
-
Copyright (c) 2012 Jeffrey S. Morgan. See LICENSE for details.
|
134
|
+
Copyright (c) 2012-2013 Jeffrey S. Morgan. See LICENSE for details.
|
data/cucumber.yml
CHANGED
@@ -1 +1,2 @@
|
|
1
|
-
default: --no-source --color --format
|
1
|
+
default: --no-source --color --format pretty
|
2
|
+
focus: --no-source --color --format pretty --tags @focus
|
data/features/data_magic.feature
CHANGED
@@ -78,6 +78,13 @@ Feature: Functionality of the data_magic gem
|
|
78
78
|
Then the value for "random" should be either "Tom", "Dick", or "Harry"
|
79
79
|
And the value for "range" should be between 1 and 5
|
80
80
|
|
81
|
+
Scenario: Returning a sequential value from an array
|
82
|
+
Then the first value for the sequential data should be "first"
|
83
|
+
When I ask for the data again
|
84
|
+
Then the second value for the sequential data should be "second"
|
85
|
+
When I ask for the data again
|
86
|
+
Then the third value for the sequential data should be "third"
|
87
|
+
|
81
88
|
Scenario: Returning a value based on a mask
|
82
89
|
Then the value for "mask" should begin with 3 numbers
|
83
90
|
And the value for "mask" should have 3 upper case letters after a dash
|
@@ -13,7 +13,9 @@ Given /^I have read the default yaml file from the default location$/ do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
When /^I ask for the data for "(.+)"$/ do |key|
|
16
|
-
|
16
|
+
TestClass.instance_variable_set "@private_firstsecond_index", 0
|
17
|
+
@tc = TestClass.new
|
18
|
+
@data = @tc.data_for key
|
17
19
|
end
|
18
20
|
|
19
21
|
|
@@ -132,3 +134,11 @@ When /^I add the blah translator$/ do
|
|
132
134
|
ta = TranslatorAdded.new
|
133
135
|
@data = ta.data_for 'dynamic'
|
134
136
|
end
|
137
|
+
|
138
|
+
Then(/^the (?:first|second|third) value for the sequential data should be "(.*?)"$/) do |value|
|
139
|
+
@data['ordered'].should == value
|
140
|
+
end
|
141
|
+
|
142
|
+
When(/^I ask for the data again$/) do
|
143
|
+
@data = @tc.data_for 'dm'
|
144
|
+
end
|
data/features/yaml/example.yml
CHANGED
data/lib/data_magic.rb
CHANGED
@@ -8,7 +8,10 @@ require 'faker'
|
|
8
8
|
module DataMagic
|
9
9
|
extend YmlReader
|
10
10
|
|
11
|
+
attr_reader :parent
|
12
|
+
|
11
13
|
def self.included(cls)
|
14
|
+
@parent = cls
|
12
15
|
translators.each do |translator|
|
13
16
|
Translation.send :include, translator
|
14
17
|
end
|
@@ -33,7 +36,11 @@ module DataMagic
|
|
33
36
|
end
|
34
37
|
|
35
38
|
def translate(value)
|
36
|
-
|
39
|
+
translation.send :process, value
|
40
|
+
end
|
41
|
+
|
42
|
+
def translation
|
43
|
+
@translation ||= Translation.new parent
|
37
44
|
end
|
38
45
|
|
39
46
|
class << self
|
@@ -3,7 +3,13 @@ require 'data_magic/date_translation'
|
|
3
3
|
module DataMagic
|
4
4
|
class Translation
|
5
5
|
include DateTranslation
|
6
|
-
|
6
|
+
|
7
|
+
attr_reader :parent
|
8
|
+
|
9
|
+
def initialize(parent)
|
10
|
+
@parent = parent
|
11
|
+
end
|
12
|
+
|
7
13
|
#
|
8
14
|
# return a random name (first and last)
|
9
15
|
#
|
@@ -227,6 +233,19 @@ module DataMagic
|
|
227
233
|
end
|
228
234
|
alias_method :dm_randomize, :randomize
|
229
235
|
|
236
|
+
#
|
237
|
+
# return an element from the array. The first request will return
|
238
|
+
# the first element, the second request will return the second,
|
239
|
+
# and so forth.
|
240
|
+
#
|
241
|
+
def sequential(value)
|
242
|
+
index = index_variable_for(value)
|
243
|
+
index = (index ? index + 1 : 0)
|
244
|
+
index = 0 if index == value.length
|
245
|
+
set_index_variable(value, index)
|
246
|
+
value[index]
|
247
|
+
end
|
248
|
+
|
230
249
|
#
|
231
250
|
# return a value based on a mast
|
232
251
|
# The # character will be replaced with a number
|
@@ -251,6 +270,18 @@ module DataMagic
|
|
251
270
|
|
252
271
|
private
|
253
272
|
|
273
|
+
def set_index_variable(ary, value)
|
274
|
+
parent.instance_variable_set(index_name(ary), value)
|
275
|
+
end
|
276
|
+
|
277
|
+
def index_variable_for(ary)
|
278
|
+
parent.instance_variable_get(index_name(ary))
|
279
|
+
end
|
280
|
+
|
281
|
+
def index_name(ary)
|
282
|
+
"@private_#{ary[0]}#{ary[1]}_index"
|
283
|
+
end
|
284
|
+
|
254
285
|
def process(value)
|
255
286
|
eval value
|
256
287
|
end
|
data/lib/data_magic/version.rb
CHANGED
metadata
CHANGED
@@ -1,78 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: data_magic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
5
|
-
prerelease:
|
4
|
+
version: '0.15'
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jeff Morgan
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-07-10 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: faker
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 1.1.2
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 1.1.2
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: yml_reader
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0.2'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0.2'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: rspec
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: 2.12.0
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: 2.12.0
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: cucumber
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: 1.2.0
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 1.2.0
|
78
69
|
description: Provides datasets to application stored in YAML files
|
@@ -84,7 +75,8 @@ extra_rdoc_files: []
|
|
84
75
|
files:
|
85
76
|
- .gitignore
|
86
77
|
- .rspec
|
87
|
-
- .
|
78
|
+
- .ruby-gemset
|
79
|
+
- .ruby-version
|
88
80
|
- .travis.yml
|
89
81
|
- ChangeLog
|
90
82
|
- Gemfile
|
@@ -112,33 +104,26 @@ files:
|
|
112
104
|
- spec/spec_helper.rb
|
113
105
|
homepage: http://github.com/cheezy/data_magic
|
114
106
|
licenses: []
|
107
|
+
metadata: {}
|
115
108
|
post_install_message:
|
116
109
|
rdoc_options: []
|
117
110
|
require_paths:
|
118
111
|
- lib
|
119
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
120
|
-
none: false
|
121
113
|
requirements:
|
122
|
-
- -
|
114
|
+
- - '>='
|
123
115
|
- !ruby/object:Gem::Version
|
124
116
|
version: '0'
|
125
|
-
segments:
|
126
|
-
- 0
|
127
|
-
hash: 2289410552337863128
|
128
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
118
|
requirements:
|
131
|
-
- -
|
119
|
+
- - '>='
|
132
120
|
- !ruby/object:Gem::Version
|
133
121
|
version: '0'
|
134
|
-
segments:
|
135
|
-
- 0
|
136
|
-
hash: 2289410552337863128
|
137
122
|
requirements: []
|
138
123
|
rubyforge_project:
|
139
|
-
rubygems_version:
|
124
|
+
rubygems_version: 2.0.3
|
140
125
|
signing_key:
|
141
|
-
specification_version:
|
126
|
+
specification_version: 4
|
142
127
|
summary: Provides datasets to application via YAML files
|
143
128
|
test_files:
|
144
129
|
- features/data_magic.feature
|
data/.rvmrc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
rvm 1.9.3-p194@data_magic --create
|