data_magic 0.5 → 0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.8.7
4
+ - 1.9.2
5
+ - 1.9.3
6
+ - rbx-19mode
7
+ - ree
8
+ - ruby-head
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ === Version 0.6 / 2012-5-4
2
+ * Fixes
3
+ * Minor fix so it works properly with ruby 1.8.7
4
+
1
5
  === Version 0.5 / 2012-3-24
2
6
  * Enhancements
3
7
  * Added ability to use symbol for the key in the data_for method
data/README.md CHANGED
@@ -1,8 +1,51 @@
1
1
  # data_magic
2
2
 
3
+ [![Build Status](http://travis-ci.org/cheezy/data_magic.png)](http://travis-ci.org/cheezy/data_magic)
4
+
3
5
  An easy to use gem that provides datasets that can be used by your application
4
6
  and tests. The data is stored in yaml files.
5
7
 
8
+ ## Using
9
+
10
+ In order to use _data_magic_ you will have to inform the gem where it can find the yaml files. You can do this with the following code:
11
+
12
+ ````ruby
13
+ DataMagic.yml_directory = 'data/yml'
14
+ ````
15
+
16
+ If you do not specify a directory the gem will default to using a directory named _config_. You should only have to set the directory once.
17
+
18
+ After setting the directory you must load a file. This can be accomplished by calling the _load_ method.
19
+
20
+ ````ruby
21
+ DataMagic.load 'filename.yml'
22
+ ````
23
+
24
+ If you do not specify a filename the gem will attempt to use a file named _default.yml_. If you are using this for testing you will more than likely want to call load before each test to load the proper data for the spcific test.
25
+
26
+ The final thing to do is use the data. The gem has a _data_for_ method that will return the data for a specific key. The most common way to use this is to include the _DataMagic_ module in a [page-object](https://github.com/cheezy/page-object) and then populate a page with the data. Here's an example:
27
+
28
+ ````ruby
29
+ class MyPage
30
+ include PageObject
31
+ include DataMagic
32
+
33
+ ...
34
+
35
+ def populage_page
36
+ populate_page_with data_for :my_page
37
+ end
38
+ end
39
+ ````
40
+
41
+ Notice that I am including the module on line 3. On lin 8 I am calling the _data_for_ method passing the key _:my_page_. The _populate_page_with_ method is a part of the page-object gem.
42
+
43
+ In order to access the data directly you can just call the method on the module like this:
44
+
45
+ ````ruby
46
+ my_data = DataMagic.data_for :my_test
47
+ ````
48
+
6
49
  ## Known Issues
7
50
 
8
51
  See [http://github.com/cheezy/data_magic/issues](http://github.com/cheezy/data_magic/issues)
data/data_magic.gemspec CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |gem|
17
17
  gem.require_paths = ["lib"]
18
18
 
19
19
  gem.add_dependency 'faker', '>= 1.0.1'
20
+ gem.add_dependency 'yml_reader', '>= 0.1'
20
21
 
21
22
  gem.add_development_dependency 'rspec', '>= 2.6.0'
22
23
  gem.add_development_dependency 'cucumber', '>= 1.1.0'
@@ -41,3 +41,25 @@ Feature: Functionality of the data_magic gem
41
41
  Scenario: Boolean values
42
42
  Then the value for "bool_true" should be true
43
43
  And the value for "bool_false" should be false
44
+
45
+ Scenario: Reading multiple data segments
46
+ When I ask for the data for "other"
47
+ Then the value for "name" should be "Cheezy"
48
+ And the value for "address" should be "123 Main Street"
49
+ And the value for "email" should be "cheezy@example.com"
50
+
51
+ Scenario: Reading from multiple yml files
52
+ When I load the file "another.yml"
53
+ And I ask for the data for "other_file"
54
+ Then the value for "name" should be "Sneezy"
55
+ And the value for "address" should be "555 Easy Money Drive"
56
+ And the value for "email" should be "sneezy@example.com"
57
+
58
+ Scenario: Reading multiple entries from same file
59
+ When I load the file "another.yml"
60
+ And I ask for the data for "other_file"
61
+ Then the value for "name" should be "Sneezy"
62
+ When I ask for the data for "more_info"
63
+ Then the value for "name" should be "Wheezy"
64
+ And the value for "address" should be "999 Alergy Ave"
65
+ And the value for "email" should be "wheezy@example.com"
@@ -31,3 +31,8 @@ end
31
31
  Then /^the value for "(.+)" should exist$/ do |key|
32
32
  @data[key].should_not be_nil
33
33
  end
34
+
35
+
36
+ When /^I load the file "(.+)"$/ do |file_name|
37
+ DataMagic.load file_name
38
+ end
@@ -3,4 +3,4 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../../', 'lib'))
3
3
  require 'rspec/expectations'
4
4
  require 'data_magic'
5
5
 
6
- DataMagic::Config.yml_directory = 'features/yaml'
6
+ DataMagic.yml_directory = 'features/yaml'
@@ -0,0 +1,9 @@
1
+ other_file:
2
+ name: Sneezy
3
+ address: 555 Easy Money Drive
4
+ email: sneezy@example.com
5
+
6
+ more_info:
7
+ name: Wheezy
8
+ address: 999 Alergy Ave
9
+ email: wheezy@example.com
@@ -21,3 +21,8 @@ dm:
21
21
  paragraphs: ~paragraphs
22
22
  bool_true: true
23
23
  bool_false: false
24
+
25
+ other:
26
+ name: Cheezy
27
+ address: 123 Main Street
28
+ email: cheezy@example.com
data/lib/data_magic.rb CHANGED
@@ -2,11 +2,13 @@ require "data_magic/version"
2
2
  require "data_magic/config"
3
3
  require "data_magic/reader"
4
4
  require "data_magic/translation"
5
+ require 'yml_reader'
5
6
 
6
7
  require 'faker'
7
8
 
8
9
  module DataMagic
9
10
  include Translation
11
+ extend YmlReader
10
12
 
11
13
  def data_for(key, additional={})
12
14
  DataMagic.load('default.yml') unless DataMagic.yml
@@ -20,27 +22,18 @@ module DataMagic
20
22
  data.each do |key, value|
21
23
  unless value.nil?
22
24
  next unless value.respond_to? '[]'
23
- data[key] = eval(value[1..-1]) if value[0] == "~"
25
+ data[key] = eval(value[1..-1]) if value[0,1] == "~"
24
26
  end
25
27
  end
26
28
  data
27
29
  end
28
30
 
29
-
30
31
  class << self
31
32
  attr_reader :yml
32
-
33
- #
34
- # load the provided filename from the config directory
35
- #
36
- def load(filename)
37
- @yml = reader.load_file(filename)
38
- end
39
-
40
- private
41
33
 
42
- def reader
43
- @reader ||= DataMagic::Reader.new
34
+ def default_directory
35
+ 'config'
44
36
  end
45
37
  end
38
+
46
39
  end
@@ -9,7 +9,9 @@ module DataMagic
9
9
  # files will be located.
10
10
  #
11
11
  def yml_directory
12
- @data_magic_yml_directory ||= 'config'
12
+ $stderr.puts "*** DEPRECATION WARNING"
13
+ $stderr.puts "*** DataMagic::Config has being deprecated and will be removed soon."
14
+ $stderr.puts "*** Please use DataMagic.yml_directory."
13
15
  end
14
16
 
15
17
  #
@@ -17,7 +19,9 @@ module DataMagic
17
19
  # all of the yml files.
18
20
  #
19
21
  def yml_directory=(value)
20
- @data_magic_yml_directory = value
22
+ $stderr.puts "*** DEPRECATION WARNING"
23
+ $stderr.puts "*** DataMagic::Config has being deprecated and will be removed soon."
24
+ $stderr.puts "*** Please use DataMagic.yml_directory=."
21
25
  end
22
26
 
23
27
  end
@@ -6,7 +6,7 @@ module DataMagic
6
6
  # load a file from the config directory and parse into a hash
7
7
  #
8
8
  def load_file(filename)
9
- yml = YAML.load_file "#{::DataMagic::Config.yml_directory}/#{filename}"
9
+ YAML.load_file "#{::DataMagic::Config.yml_directory}/#{filename}"
10
10
  end
11
11
  end
12
12
  end
@@ -1,3 +1,3 @@
1
1
  module DataMagic
2
- VERSION = "0.5"
2
+ VERSION = "0.6"
3
3
  end
@@ -2,19 +2,23 @@ require 'spec_helper'
2
2
 
3
3
  describe DataMagic do
4
4
  context "when configuring the yml directory" do
5
+ before(:each) do
6
+ DataMagic.yml_directory = nil
7
+ end
8
+
5
9
  it "should default to a directory named config" do
6
- DataMagic::Config.yml_directory.should == 'config'
10
+ DataMagic.yml_directory.should == 'config'
7
11
  end
8
12
 
9
13
  it "should store a yml directory" do
10
- DataMagic::Config.yml_directory = 'test_dir'
11
- DataMagic::Config.yml_directory.should == 'test_dir'
14
+ DataMagic.yml_directory = 'test_dir'
15
+ DataMagic.yml_directory.should == 'test_dir'
12
16
  end
13
17
  end
14
18
 
15
19
  context "when reading yml files" do
16
20
  it "should read files from the config directory" do
17
- DataMagic::Config.yml_directory = 'test'
21
+ DataMagic.yml_directory = 'test'
18
22
  YAML.should_receive(:load_file).with("test/fname").and_return({})
19
23
  DataMagic.load("fname")
20
24
  end
@@ -23,7 +23,7 @@ describe "DataMagic translations" do
23
23
  end
24
24
 
25
25
  it "should default to use a file named 'default.yml'" do
26
- DataMagic::Config.yml_directory = 'test'
26
+ DataMagic.yml_directory = 'test'
27
27
  YAML.should_receive(:load_file).with("test/default.yml").and_return({})
28
28
  DataMagic.should_receive(:yml).and_return(nil)
29
29
  DataMagic.should_receive(:yml).and_return({'key' => {'field' => 'value'}})
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_magic
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.5'
4
+ version: '0.6'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-24 00:00:00.000000000 Z
12
+ date: 2012-05-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faker
16
- requirement: &70164234201940 !ruby/object:Gem::Requirement
16
+ requirement: &70359185872900 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,21 @@ dependencies:
21
21
  version: 1.0.1
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70164234201940
24
+ version_requirements: *70359185872900
25
+ - !ruby/object:Gem::Dependency
26
+ name: yml_reader
27
+ requirement: &70359185871820 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0.1'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70359185871820
25
36
  - !ruby/object:Gem::Dependency
26
37
  name: rspec
27
- requirement: &70164234201180 !ruby/object:Gem::Requirement
38
+ requirement: &70359185869020 !ruby/object:Gem::Requirement
28
39
  none: false
29
40
  requirements:
30
41
  - - ! '>='
@@ -32,10 +43,10 @@ dependencies:
32
43
  version: 2.6.0
33
44
  type: :development
34
45
  prerelease: false
35
- version_requirements: *70164234201180
46
+ version_requirements: *70359185869020
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: cucumber
38
- requirement: &70164234200380 !ruby/object:Gem::Requirement
49
+ requirement: &70359185868240 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,7 +54,7 @@ dependencies:
43
54
  version: 1.1.0
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *70164234200380
57
+ version_requirements: *70359185868240
47
58
  description: Provides datasets to application stored in YAML files
48
59
  email:
49
60
  - jeff.morgan@leandog.com
@@ -54,6 +65,7 @@ files:
54
65
  - .gitignore
55
66
  - .rspec
56
67
  - .rvmrc
68
+ - .travis.yml
57
69
  - ChangeLog
58
70
  - Gemfile
59
71
  - Guardfile
@@ -65,6 +77,7 @@ files:
65
77
  - features/data_magic.feature
66
78
  - features/step_definitions/data_magic_steps.rb
67
79
  - features/support/env.rb
80
+ - features/yaml/another.yml
68
81
  - features/yaml/example.yml
69
82
  - lib/data_magic.rb
70
83
  - lib/data_magic/config.rb
@@ -102,6 +115,7 @@ test_files:
102
115
  - features/data_magic.feature
103
116
  - features/step_definitions/data_magic_steps.rb
104
117
  - features/support/env.rb
118
+ - features/yaml/another.yml
105
119
  - features/yaml/example.yml
106
120
  - spec/lib/data_magic_spec.rb
107
121
  - spec/lib/translation_spec.rb