soveran-spawner 0.0.5 → 0.0.6

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.
data/README.markdown CHANGED
@@ -7,7 +7,7 @@ choice.
7
7
  Description
8
8
  -----------
9
9
 
10
- Spawner is a very small library (just 15 lines of code) that can
10
+ Spawner is a very small library (just 14 lines of code) that can
11
11
  effectively replace fixtures or any other huge library for the same task.
12
12
 
13
13
  Usage
@@ -50,12 +50,6 @@ Then, in your test or in any other place:
50
50
 
51
51
  Or, if you need something special:
52
52
 
53
- @user = User.spawn do |user|
54
- user.name = "Michel Martens"
55
- end
56
-
57
- Or even this:
58
-
59
53
  @user = User.spawn :name => "Michel Martens"
60
54
 
61
55
  Installation
@@ -67,7 +61,7 @@ Installation
67
61
  ### Thanks
68
62
 
69
63
  Thanks to Foca (http://github.com/foca/) for his suggestions and Pedro
70
- (http://github.com/peterpunk/) for the gemspec.
64
+ (http://github.com/peterpunk/) for the original gemspec.
71
65
 
72
66
  License
73
67
  -------
data/lib/spawner.rb CHANGED
@@ -2,13 +2,12 @@ require 'ostruct'
2
2
 
3
3
  module Spawner
4
4
  def spawner &default
5
- @@spawn ||= Hash.new { |hash, key| hash[key] = lambda { |model| model } }
5
+ @@spawn ||= Hash.new
6
6
  @@spawn[self.name] = default
7
7
  end
8
8
 
9
9
  def spawn attrs = {}
10
- model = OpenStruct.new
11
- @@spawn[self.name].call(model)
10
+ @@spawn[self.name].call(model = OpenStruct.new)
12
11
  create(model.send(:table).merge(attrs))
13
12
  end
14
13
  end
data/spawner.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "spawner"
3
- s.version = "0.0.5"
3
+ s.version = "0.0.6"
4
4
  s.date = "2008-12-18"
5
5
  s.summary = "Simple fixtures replacement for Sequel, ActiveRecord and probably many other ORMs"
6
6
  s.email = "michel@soveran.com"
data/test/all_test.rb CHANGED
@@ -5,44 +5,17 @@ require File.dirname(__FILE__) + "/../lib/spawner"
5
5
  class Foo
6
6
  attr_accessor :attributes
7
7
 
8
- def initialize(*args)
9
- @attributes = Hash.new
10
-
11
- yield self if block_given?
12
-
13
- if args.first
14
- args.first.each do |key, value|
15
- @attributes[key] = value
16
- end
17
- end
18
- end
19
-
20
- def save!
8
+ def initialize(attrs = {})
9
+ @attributes = attrs
21
10
  end
22
11
 
23
12
  def self.create(attrs = {})
24
13
  new(attrs)
25
14
  end
26
15
 
27
- def bar
28
- attributes[:bar]
29
- end
30
-
31
- def baz
32
- attributes[:baz]
33
- end
34
-
35
- def bar=(value)
36
- attributes[:bar] = value
37
- end
38
-
39
- def baz=(value)
40
- attributes[:baz] = value
41
- end
42
-
43
- def name
44
- "Foo"
45
- end
16
+ def bar; attributes[:bar] end
17
+ def baz; attributes[:baz] end
18
+ def self.name; "Foo" end
46
19
 
47
20
  extend Spawner
48
21
 
@@ -52,9 +25,19 @@ class Foo
52
25
  end
53
26
  end
54
27
 
28
+ class Bar < Foo
29
+ def self.name; "Bar" end
30
+
31
+ spawner do |bar|
32
+ bar.bar = 9
33
+ bar.baz = 10
34
+ end
35
+ end
36
+
55
37
  class TestFoo < Test::Unit::TestCase
56
- should "have a name instance method" do
57
- assert Foo.new.respond_to?(:name)
38
+ should "have a name class method" do
39
+ assert Foo.respond_to?(:name)
40
+ assert_equal "Foo", Foo.name
58
41
  end
59
42
 
60
43
  context "with attributes :bar and :baz" do
@@ -64,22 +47,6 @@ class TestFoo < Test::Unit::TestCase
64
47
  assert_equal 1, foo.bar
65
48
  assert_equal 2, foo.baz
66
49
  end
67
-
68
- context "and a block" do
69
- should "give priority to the values in the hash" do
70
- foo = Foo.new(:bar => 5, :baz => 6) { |f| f.baz = 7 }
71
- assert_equal 5, foo.bar
72
- assert_equal 6, foo.baz
73
- end
74
- end
75
- end
76
-
77
- context "when sent a block" do
78
- should "set the attributes from the passed block" do
79
- foo = Foo.new { |f| f.bar = 3; f.baz = 4 }
80
- assert_equal 3, foo.bar
81
- assert_equal 4, foo.baz
82
- end
83
50
  end
84
51
  end
85
52
 
@@ -104,6 +71,31 @@ class TestFoo < Test::Unit::TestCase
104
71
  assert_equal 8, foo.baz
105
72
  end
106
73
  end
74
+
75
+ context "and a class Bar" do
76
+ context "that also implements Spawner" do
77
+ should "be kind of Spawner" do
78
+ assert Bar.kind_of?(Spawner)
79
+ end
80
+
81
+ context "when sent :name" do
82
+ should "return 'Bar'" do
83
+ assert_equal "Bar", Bar.name
84
+ end
85
+ end
86
+
87
+ context "when sent :spawn" do
88
+ should "return an instance of Bar" do
89
+ assert Bar.spawn.kind_of?(Bar)
90
+ end
91
+
92
+ should "not interfere with Foo.spawn" do
93
+ assert_equal 7, Foo.spawn.bar
94
+ assert_equal 9, Bar.spawn.bar
95
+ end
96
+ end
97
+ end
98
+ end
107
99
  end
108
100
  end
109
101
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soveran-spawner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michel Martens