jelly_bird 0.0.2 → 0.0.3b

Sign up to get free protection for your applications and to get access to all the features.
data/LICENCE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (C) 2011 by Jakub Oboza
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
data/Readme.md CHANGED
@@ -2,7 +2,10 @@
2
2
 
3
3
  # instalation
4
4
 
5
- add to bundler ( test group )
5
+ type
6
+ `gem install jelly_bird`
7
+
8
+ or add to bundler ( test group )
6
9
 
7
10
  "jelly_bird", :git => "git@github.com:JakubOboza/jellybird.git"
8
11
 
@@ -28,4 +31,37 @@ to generate object in test just use `.gen` like this `Dummy.gen` to get generate
28
31
  10.times { puts Dummy.gen[:name] }
29
32
 
30
33
  dummy = Dummy.gen
31
- puts dummy[:name]
34
+ # dummy[:name] => random generated /\w{3,10}/ compilant word
35
+
36
+ other_dummy = Dummy.gen(:name => "dummy name")
37
+ # other_dummy[:name] => "dummy name"
38
+
39
+ # integration with rspec
40
+
41
+ touch a file with defines like `factories.rb` in spec folder and then require it inside of your `spec_helper.rb`. Then define all the factories like this.
42
+
43
+
44
+ User.define {{
45
+ :first_name => /\w{3,9}/.gen,
46
+ :last_name => /\w{3,8}/.gen,
47
+ :email => /\w{3,8}@\w{3,8}\.com/.gen
48
+ }}
49
+
50
+ Family.define {{
51
+ :father => User.gen,
52
+ :mom => User.gen,
53
+ :kind => USer.gen,
54
+ :family_name => /\w{3,8}/.gen
55
+ }}
56
+
57
+
58
+ remember that if you wanna embbed one into another please don't specify them at random order :).
59
+
60
+ Now just use it in tests!
61
+
62
+ $ Powered by
63
+ It is powered by `randexp` gem and initial concept was based on `dm-sweatshop` syntax. Big thanks to this two projects.
64
+
65
+
66
+ # Author
67
+ Jakub Oboza, https://github.com/JakubOboza
@@ -1,15 +1,20 @@
1
+
1
2
  module JellyBird
2
3
 
3
4
  module Define
4
5
 
5
6
  @@generator = {}
6
7
 
7
- def define(&default_lambda)
8
- @@generator[self.to_s] = default_lambda
8
+ def define(name = :default, &default_lambda)
9
+ if @@generator[self.to_s]
10
+ @@generator[self.to_s][name] = default_lambda
11
+ else
12
+ @@generator[self.to_s] = { name => default_lambda }
13
+ end
9
14
  end
10
15
 
11
- def generator
12
- @@generator[self.to_s]
16
+ def generator(name = :default)
17
+ @@generator[self.to_s][name]
13
18
  end
14
19
 
15
20
  end
@@ -3,7 +3,11 @@ module JellyBird
3
3
  module Generate
4
4
 
5
5
  def gen(opts = {})
6
- options = self::generator.call if self::generator
6
+ generate(:default, opts)
7
+ end
8
+
9
+ def generate(name = :default, opts = {})
10
+ options = self::generator(name).call if self::generator(name)
7
11
  options.merge!(opts)
8
12
  obj = self.new(options)
9
13
  options.each_pair { |key, value| obj[key] = value } if obj.kind_of?(Hash)
@@ -1,3 +1,3 @@
1
1
  module JellyBird
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3b"
3
3
  end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ class Mummy
4
+ attr_accessor :attributes
5
+
6
+ def initialize(opts = {})
7
+ self.attributes = opts
8
+ end
9
+
10
+ end
11
+
12
+ class Dummy < Hash; end
13
+
14
+ class Rummy < Hash; end
15
+
16
+ describe "Custom Builders" do
17
+
18
+ it "should be able to define custom builders" do
19
+
20
+ Mummy.define {{
21
+ :left => /\w{3,10}/.gen,
22
+ :right => /\w{3,10}/.gen
23
+ }}
24
+
25
+ Mummy.define(:custom) {{
26
+ :center => /\w{3,10}/.gen
27
+ }}
28
+
29
+ mummy = Mummy.generate(:custom, :mumble => true)
30
+ mummy.attributes[:center].should_not be_nil
31
+ mummy.attributes[:mumble].should eql(true)
32
+
33
+ end
34
+
35
+ end
@@ -87,8 +87,6 @@ describe JellyBird do
87
87
  end
88
88
 
89
89
  it "should generate object inside of other object" do
90
-
91
- # bug, currently for hashes you can input a gen inside of a define ;/
92
90
  dummy = Dummy.gen
93
91
 
94
92
  Rummy.define {{
@@ -98,6 +96,13 @@ describe JellyBird do
98
96
  mummy = Rummy.gen
99
97
  mummy[:baby_rummy_is_a][:name].should_not be_nil
100
98
 
99
+ Rummy.define {{
100
+ :baby => Dummy.gen,
101
+ :name => /\w{3,6}/.gen
102
+ }}
103
+
104
+ Rummy.gen.should be_a(Rummy)
105
+ Rummy.gen[:baby].should be_a(Dummy)
101
106
  end
102
107
 
103
108
  it "should not override other generators" do
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jelly_bird
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
4
+ hash: 39
5
+ prerelease: 5
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 2
10
- version: 0.0.2
9
+ - 3
10
+ - b
11
+ version: 0.0.3b
11
12
  platform: ruby
12
13
  authors:
13
14
  - JO
@@ -15,7 +16,7 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2011-07-03 00:00:00 Z
19
+ date: 2011-07-12 00:00:00 Z
19
20
  dependencies: []
20
21
 
21
22
  description: JellyBird is a ultra small factory to help generating objects for purpose of tests.
@@ -31,6 +32,7 @@ files:
31
32
  - .gitignore
32
33
  - .rspec
33
34
  - Gemfile
35
+ - LICENCE
34
36
  - Rakefile
35
37
  - Readme.md
36
38
  - jelly_bird.gemspec
@@ -38,6 +40,7 @@ files:
38
40
  - lib/jelly_bird/define.rb
39
41
  - lib/jelly_bird/gen.rb
40
42
  - lib/jelly_bird/version.rb
43
+ - spec/jelly_bird/custom_builders_spec.rb
41
44
  - spec/jelly_bird/jelly_bird_spec.rb
42
45
  - spec/spec_helper.rb
43
46
  homepage: ""
@@ -60,19 +63,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
60
63
  required_rubygems_version: !ruby/object:Gem::Requirement
61
64
  none: false
62
65
  requirements:
63
- - - ">="
66
+ - - ">"
64
67
  - !ruby/object:Gem::Version
65
- hash: 3
68
+ hash: 25
66
69
  segments:
67
- - 0
68
- version: "0"
70
+ - 1
71
+ - 3
72
+ - 1
73
+ version: 1.3.1
69
74
  requirements: []
70
75
 
71
76
  rubyforge_project: jelly_bird
72
- rubygems_version: 1.8.3
77
+ rubygems_version: 1.8.5
73
78
  signing_key:
74
79
  specification_version: 3
75
80
  summary: Ultra small gem for generating objects
76
81
  test_files:
82
+ - spec/jelly_bird/custom_builders_spec.rb
77
83
  - spec/jelly_bird/jelly_bird_spec.rb
78
84
  - spec/spec_helper.rb