fixjour-2 0.0.1 → 0.0.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.
- data/README +25 -2
- data/lib/fixjour/builder.rb +15 -6
- data/lib/fixjour/dsl.rb +3 -2
- data/lib/fixjour.rb +2 -1
- data/spec/fixjour_spec.rb +14 -1
- data/spec/spec_helper.rb +10 -1
- metadata +4 -4
data/README
CHANGED
@@ -12,6 +12,11 @@ The builder definitions are more like factory girl now.
|
|
12
12
|
define User do |user|
|
13
13
|
user.name = "Pat"
|
14
14
|
end
|
15
|
+
|
16
|
+
define Article do |article|
|
17
|
+
article.user = new_user
|
18
|
+
article.title = "This is a good one"
|
19
|
+
end
|
15
20
|
end
|
16
21
|
|
17
22
|
The methods generated are the same old Fixjour methods:
|
@@ -23,8 +28,26 @@ The methods generated are the same old Fixjour methods:
|
|
23
28
|
|
24
29
|
That's it for now.
|
25
30
|
|
26
|
-
##
|
31
|
+
## What's New
|
32
|
+
|
33
|
+
I ripped out a bunch of stuff. Here are some things I don't need:
|
34
|
+
|
35
|
+
### Overrides and `process`
|
36
|
+
|
37
|
+
The overrides hash in Fixjour was confusing to pretty much everybody I explained
|
38
|
+
it to, so it's gone now. PEACE.
|
39
|
+
|
40
|
+
### valid_*_attributes
|
41
|
+
|
42
|
+
This was useful for controller tests. Controller tests are no longer useful
|
43
|
+
though. I like acceptance tests now. Hopefully you do too.
|
44
|
+
|
45
|
+
### attr_protected attributes
|
46
|
+
|
47
|
+
They just work now. Don't worry about it.
|
48
|
+
|
49
|
+
### Fixjour.verify!
|
27
50
|
|
28
|
-
|
51
|
+
It's gone now. Write tests for your builders and you're good to go.
|
29
52
|
|
30
53
|
(c) Copyright 2011 Pat Nakajima. All Rights Reserved.
|
data/lib/fixjour/builder.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
module Fixjour
|
2
2
|
class Builder
|
3
|
-
def initialize(model, block)
|
4
|
-
@model, @block = model, block
|
3
|
+
def initialize(model, options, &block)
|
4
|
+
@model, @options, @block = model, options, block
|
5
5
|
end
|
6
6
|
|
7
7
|
def define
|
8
|
-
|
9
|
-
|
10
|
-
|
8
|
+
block = @block
|
9
|
+
klass = find_class
|
10
|
+
klass_name = klass.model_name.singular
|
11
11
|
|
12
|
+
Fixjour.module_eval do
|
12
13
|
define_method("new_" + klass_name) do |*overrides|
|
13
|
-
instance =
|
14
|
+
instance = klass.new
|
14
15
|
block.call(instance)
|
15
16
|
overrides.first && overrides.first.each do |key, val|
|
16
17
|
instance.send("#{key}=", val)
|
@@ -25,5 +26,13 @@ module Fixjour
|
|
25
26
|
end
|
26
27
|
end
|
27
28
|
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def find_class
|
33
|
+
@options[:class] || @model.is_a?(Symbol) ?
|
34
|
+
@model.to_s.classify.constantize :
|
35
|
+
@model
|
36
|
+
end
|
28
37
|
end
|
29
38
|
end
|
data/lib/fixjour/dsl.rb
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
module Fixjour
|
2
2
|
class DSL
|
3
3
|
include Fixjour
|
4
|
+
include Fixjour::Counter
|
4
5
|
|
5
6
|
def initialize(block)
|
6
7
|
instance_eval(&block)
|
7
8
|
end
|
8
9
|
|
9
|
-
def define(model, &block)
|
10
|
-
Builder.new(model, block).define
|
10
|
+
def define(model, options={}, &block)
|
11
|
+
Builder.new(model, options, &block).define
|
11
12
|
end
|
12
13
|
end
|
13
14
|
end
|
data/lib/fixjour.rb
CHANGED
data/spec/fixjour_spec.rb
CHANGED
@@ -9,9 +9,14 @@ describe "Fixjour Builders" do
|
|
9
9
|
user.name = "Pat"
|
10
10
|
end
|
11
11
|
|
12
|
-
define
|
12
|
+
define :article do |article|
|
13
13
|
article.user = new_user(:name => "Pat")
|
14
14
|
end
|
15
|
+
|
16
|
+
define :comment, :class => Article::Comment do |comment|
|
17
|
+
comment.text = "comment #{counter(:comment)}"
|
18
|
+
comment.article = new_article
|
19
|
+
end
|
15
20
|
end
|
16
21
|
|
17
22
|
user = new_user
|
@@ -38,5 +43,13 @@ describe "Fixjour Builders" do
|
|
38
43
|
article = new_article
|
39
44
|
article.user.should_not be_nil
|
40
45
|
article.user.name.should == "Pat"
|
46
|
+
|
47
|
+
# It works with namespaces
|
48
|
+
comment = new_comment
|
49
|
+
|
50
|
+
# It works with counters
|
51
|
+
first_comment = new_comment
|
52
|
+
second_comment = new_comment
|
53
|
+
first_comment.text.should_not == second_comment.text
|
41
54
|
end
|
42
55
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,8 +9,17 @@ build_model :users do
|
|
9
9
|
attr_protected :age
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
12
|
build_model :articles do
|
14
13
|
integer :user_id
|
15
14
|
belongs_to :user
|
15
|
+
end
|
16
|
+
|
17
|
+
build_model :comments do
|
18
|
+
string :text
|
19
|
+
integer :article_id
|
20
|
+
belongs_to :article
|
21
|
+
end
|
22
|
+
|
23
|
+
class Article
|
24
|
+
Comment = ::Comment
|
16
25
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fixjour-2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Pat Nakajima
|
@@ -66,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
66
|
requirements: []
|
67
67
|
|
68
68
|
rubyforge_project:
|
69
|
-
rubygems_version: 1.
|
69
|
+
rubygems_version: 1.6.2
|
70
70
|
signing_key:
|
71
71
|
specification_version: 3
|
72
72
|
summary: Fixjour Again
|