blueprints 0.8.0 → 0.8.1
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/.gitignore +1 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +44 -0
- data/Rakefile +5 -0
- data/VERSION +1 -1
- data/bin/blueprintify +0 -0
- data/blueprints.gemspec +19 -2
- data/lib/blueprints/blueprint.rb +2 -2
- data/lib/blueprints/buildable.rb +20 -5
- data/lib/blueprints/namespace.rb +1 -1
- data/lib/blueprints/root_namespace.rb +1 -2
- data/spec/active_record/blueprints_spec.rb +7 -0
- data/spec/unit/blueprint_spec.rb +1 -6
- data/spec/unit/spec_helper.rb +1 -0
- data/test/blueprints_test.rb +7 -0
- metadata +86 -4
data/.gitignore
CHANGED
data/Gemfile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
gemspec
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
blueprints (0.8.0)
|
5
|
+
activesupport (>= 2.3.0)
|
6
|
+
database_cleaner (~> 0.5.0)
|
7
|
+
|
8
|
+
GEM
|
9
|
+
specs:
|
10
|
+
activerecord (2.3.8)
|
11
|
+
activesupport (= 2.3.8)
|
12
|
+
activesupport (2.3.8)
|
13
|
+
builder (2.1.2)
|
14
|
+
cucumber (0.7.3)
|
15
|
+
builder (>= 2.1.2)
|
16
|
+
diff-lcs (>= 1.1.2)
|
17
|
+
gherkin (>= 1.0.27)
|
18
|
+
json_pure (>= 1.2.4)
|
19
|
+
term-ansicolor (>= 1.0.4)
|
20
|
+
database_cleaner (0.5.2)
|
21
|
+
diff-lcs (1.1.2)
|
22
|
+
gherkin (1.0.30)
|
23
|
+
trollop (>= 1.16.2)
|
24
|
+
json_pure (1.2.4)
|
25
|
+
mocha (0.9.8)
|
26
|
+
rake
|
27
|
+
rake (0.8.7)
|
28
|
+
rspec (1.3.0)
|
29
|
+
shoulda (2.10.3)
|
30
|
+
term-ansicolor (1.0.5)
|
31
|
+
trollop (1.16.2)
|
32
|
+
|
33
|
+
PLATFORMS
|
34
|
+
ruby
|
35
|
+
|
36
|
+
DEPENDENCIES
|
37
|
+
activerecord (>= 2.3.0)
|
38
|
+
activesupport (>= 2.3.0)
|
39
|
+
blueprints!
|
40
|
+
cucumber (>= 0.7.0)
|
41
|
+
database_cleaner (~> 0.5.0)
|
42
|
+
mocha (>= 0.9.8)
|
43
|
+
rspec (>= 1.3.0)
|
44
|
+
shoulda (>= 2.10.0)
|
data/Rakefile
CHANGED
@@ -12,6 +12,11 @@ begin
|
|
12
12
|
gemspec.executables = ['blueprintify']
|
13
13
|
gemspec.add_dependency 'activesupport', '>=2.3.0'
|
14
14
|
gemspec.add_dependency 'database_cleaner', '~>0.5.0'
|
15
|
+
gemspec.add_development_dependency 'rspec', '>=1.3.0'
|
16
|
+
gemspec.add_development_dependency 'activerecord', '>=2.3.0'
|
17
|
+
gemspec.add_development_dependency 'mocha', '>=0.9.8'
|
18
|
+
gemspec.add_development_dependency 'shoulda', '>=2.10.0'
|
19
|
+
gemspec.add_development_dependency 'cucumber', '>=0.7.0'
|
15
20
|
end
|
16
21
|
Jeweler::GemcutterTasks.new
|
17
22
|
rescue LoadError
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.8.
|
1
|
+
0.8.1
|
data/bin/blueprintify
CHANGED
File without changes
|
data/blueprints.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{blueprints}
|
8
|
-
s.version = "0.8.
|
8
|
+
s.version = "0.8.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andrius Chamentauskas"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-09-07}
|
13
13
|
s.default_executable = %q{blueprintify}
|
14
14
|
s.description = %q{Another replacement for factories and fixtures. The library that lazy typists will love}
|
15
15
|
s.email = %q{sinsiliux@gmail.com}
|
@@ -20,6 +20,8 @@ Gem::Specification.new do |s|
|
|
20
20
|
]
|
21
21
|
s.files = [
|
22
22
|
".gitignore",
|
23
|
+
"Gemfile",
|
24
|
+
"Gemfile.lock",
|
23
25
|
"LICENSE",
|
24
26
|
"README.rdoc",
|
25
27
|
"Rakefile",
|
@@ -105,13 +107,28 @@ Gem::Specification.new do |s|
|
|
105
107
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
106
108
|
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.0"])
|
107
109
|
s.add_runtime_dependency(%q<database_cleaner>, ["~> 0.5.0"])
|
110
|
+
s.add_development_dependency(%q<rspec>, [">= 1.3.0"])
|
111
|
+
s.add_development_dependency(%q<activerecord>, [">= 2.3.0"])
|
112
|
+
s.add_development_dependency(%q<mocha>, [">= 0.9.8"])
|
113
|
+
s.add_development_dependency(%q<shoulda>, [">= 2.10.0"])
|
114
|
+
s.add_development_dependency(%q<cucumber>, [">= 0.7.0"])
|
108
115
|
else
|
109
116
|
s.add_dependency(%q<activesupport>, [">= 2.3.0"])
|
110
117
|
s.add_dependency(%q<database_cleaner>, ["~> 0.5.0"])
|
118
|
+
s.add_dependency(%q<rspec>, [">= 1.3.0"])
|
119
|
+
s.add_dependency(%q<activerecord>, [">= 2.3.0"])
|
120
|
+
s.add_dependency(%q<mocha>, [">= 0.9.8"])
|
121
|
+
s.add_dependency(%q<shoulda>, [">= 2.10.0"])
|
122
|
+
s.add_dependency(%q<cucumber>, [">= 0.7.0"])
|
111
123
|
end
|
112
124
|
else
|
113
125
|
s.add_dependency(%q<activesupport>, [">= 2.3.0"])
|
114
126
|
s.add_dependency(%q<database_cleaner>, ["~> 0.5.0"])
|
127
|
+
s.add_dependency(%q<rspec>, [">= 1.3.0"])
|
128
|
+
s.add_dependency(%q<activerecord>, [">= 2.3.0"])
|
129
|
+
s.add_dependency(%q<mocha>, [">= 0.9.8"])
|
130
|
+
s.add_dependency(%q<shoulda>, [">= 2.10.0"])
|
131
|
+
s.add_dependency(%q<cucumber>, [">= 0.7.0"])
|
115
132
|
end
|
116
133
|
end
|
117
134
|
|
data/lib/blueprints/blueprint.rb
CHANGED
@@ -7,7 +7,7 @@ module Blueprints
|
|
7
7
|
@file = file
|
8
8
|
super(name)
|
9
9
|
|
10
|
-
ivname =
|
10
|
+
ivname = variable_name
|
11
11
|
@block = block
|
12
12
|
@demolish_block = lambda { instance_variable_get(ivname).destroy }
|
13
13
|
@update_block = lambda { instance_variable_get(ivname).blueprint(options) }
|
@@ -19,7 +19,7 @@ module Blueprints
|
|
19
19
|
if built? and build_once
|
20
20
|
Namespace.root.context.instance_eval(&@update_block) if RootNamespace.root.context.options.present?
|
21
21
|
elsif @block
|
22
|
-
|
22
|
+
self.result = Namespace.root.context.instance_eval(&@block)
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
data/lib/blueprints/buildable.rb
CHANGED
@@ -27,8 +27,8 @@ module Blueprints
|
|
27
27
|
#
|
28
28
|
# +options+ - list of options to be accessible in the body of a blueprint. Defaults to empty Hash.
|
29
29
|
def build(build_once = true, options = {})
|
30
|
-
return
|
31
|
-
|
30
|
+
return result if @building or (built? and build_once and options.blank?)
|
31
|
+
@building = true
|
32
32
|
|
33
33
|
each_namespace {|namespace| namespace.build_parents }
|
34
34
|
build_parents
|
@@ -39,17 +39,28 @@ module Blueprints
|
|
39
39
|
|
40
40
|
build_self(build_once)
|
41
41
|
Namespace.root.context.options, Namespace.root.context.attributes = old_options, old_attributes
|
42
|
-
Namespace.root.
|
42
|
+
Namespace.root.executed_blueprints << self
|
43
|
+
@building = false
|
44
|
+
result
|
45
|
+
end
|
46
|
+
|
47
|
+
# Returns the result of blueprint
|
48
|
+
def result
|
49
|
+
Namespace.root.context.instance_variable_get(variable_name)
|
50
|
+
end
|
51
|
+
|
52
|
+
# Sets the result of blueprint
|
53
|
+
def result=(value)
|
54
|
+
Namespace.root.add_variable(variable_name, value)
|
43
55
|
end
|
44
56
|
|
45
57
|
# Returns if blueprint has been built
|
46
58
|
def built?
|
47
|
-
|
59
|
+
Namespace.root.executed_blueprints.include?(self)
|
48
60
|
end
|
49
61
|
|
50
62
|
# Marks blueprint as not built
|
51
63
|
def undo!
|
52
|
-
remove_instance_variable(:@result) if built?
|
53
64
|
Namespace.root.executed_blueprints.delete self
|
54
65
|
end
|
55
66
|
|
@@ -100,6 +111,10 @@ module Blueprints
|
|
100
111
|
@path = (namespace.path + "_" unless namespace.nil? or namespace.path.empty?).to_s + @name.to_s
|
101
112
|
end
|
102
113
|
|
114
|
+
def variable_name
|
115
|
+
:"@#{path}"
|
116
|
+
end
|
117
|
+
|
103
118
|
def parse_name(name)
|
104
119
|
case name
|
105
120
|
when Hash
|
data/lib/blueprints/namespace.rb
CHANGED
@@ -31,7 +31,7 @@ module Blueprints
|
|
31
31
|
|
32
32
|
# Builds all children and sets instance variable named by name of namespace with the results.
|
33
33
|
def build_self(build_once = true)
|
34
|
-
|
34
|
+
self.result = @children.collect {|p| p.last.build }.uniq
|
35
35
|
end
|
36
36
|
|
37
37
|
# Demolished all child blueprints and namespaces
|
@@ -59,8 +59,7 @@ module Blueprints
|
|
59
59
|
# Sets instance variable in current context to passed value. If instance variable with same name already exists, it
|
60
60
|
# is set only if it was set using this same method
|
61
61
|
def add_variable(name, value)
|
62
|
-
|
63
|
-
if !@context.instance_variable_get(name) or @auto_iv_list.include?(name)
|
62
|
+
if not @context.instance_variable_defined?(name) or @auto_iv_list.include?(name)
|
64
63
|
@auto_iv_list << name
|
65
64
|
@context.instance_variable_set(name, value)
|
66
65
|
end
|
@@ -107,6 +107,13 @@ describe Blueprints do
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
+
describe "updating" do
|
111
|
+
it "should allow updating prebuilt blueprints" do
|
112
|
+
build :big_cherry => {:species => 'updated cherry'}
|
113
|
+
@big_cherry.species.should == 'updated cherry'
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
110
117
|
describe 'with many apples scenario' do
|
111
118
|
before do
|
112
119
|
build :many_apples, :cherry, :cherry_basket
|
data/spec/unit/blueprint_spec.rb
CHANGED
@@ -17,12 +17,7 @@ describe Blueprints::Blueprint do
|
|
17
17
|
@blueprint.demolish
|
18
18
|
end
|
19
19
|
|
20
|
-
it "should
|
21
|
-
@blueprint.demolish
|
22
|
-
@blueprint.instance_variable_defined?(:@result).should be_false
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should raise error if @result is not set" do
|
20
|
+
it "should raise error if blueprint is not built" do
|
26
21
|
@blueprint.demolish
|
27
22
|
lambda { @blueprint.demolish }.should raise_error(Blueprints::DemolishError)
|
28
23
|
end
|
data/spec/unit/spec_helper.rb
CHANGED
data/test/blueprints_test.rb
CHANGED
@@ -107,6 +107,13 @@ class BlueprintsTest < ActiveSupport::TestCase
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
+
context "updating" do
|
111
|
+
should "allow updating prebuilt blueprints" do
|
112
|
+
build :big_cherry => {:species => 'updated cherry'}
|
113
|
+
assert(@big_cherry.species == 'updated cherry')
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
110
117
|
context 'with many apples scenario' do
|
111
118
|
setup do
|
112
119
|
build :many_apples, :cherry, :cherry_basket
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: blueprints
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 61
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
9
|
+
- 1
|
10
|
+
version: 0.8.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Andrius Chamentauskas
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-09-07 00:00:00 +03:00
|
19
19
|
default_executable: blueprintify
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -50,6 +50,86 @@ dependencies:
|
|
50
50
|
version: 0.5.0
|
51
51
|
type: :runtime
|
52
52
|
version_requirements: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: rspec
|
55
|
+
prerelease: false
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 27
|
62
|
+
segments:
|
63
|
+
- 1
|
64
|
+
- 3
|
65
|
+
- 0
|
66
|
+
version: 1.3.0
|
67
|
+
type: :development
|
68
|
+
version_requirements: *id003
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: activerecord
|
71
|
+
prerelease: false
|
72
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
hash: 3
|
78
|
+
segments:
|
79
|
+
- 2
|
80
|
+
- 3
|
81
|
+
- 0
|
82
|
+
version: 2.3.0
|
83
|
+
type: :development
|
84
|
+
version_requirements: *id004
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: mocha
|
87
|
+
prerelease: false
|
88
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
hash: 43
|
94
|
+
segments:
|
95
|
+
- 0
|
96
|
+
- 9
|
97
|
+
- 8
|
98
|
+
version: 0.9.8
|
99
|
+
type: :development
|
100
|
+
version_requirements: *id005
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: shoulda
|
103
|
+
prerelease: false
|
104
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
hash: 39
|
110
|
+
segments:
|
111
|
+
- 2
|
112
|
+
- 10
|
113
|
+
- 0
|
114
|
+
version: 2.10.0
|
115
|
+
type: :development
|
116
|
+
version_requirements: *id006
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: cucumber
|
119
|
+
prerelease: false
|
120
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
hash: 3
|
126
|
+
segments:
|
127
|
+
- 0
|
128
|
+
- 7
|
129
|
+
- 0
|
130
|
+
version: 0.7.0
|
131
|
+
type: :development
|
132
|
+
version_requirements: *id007
|
53
133
|
description: Another replacement for factories and fixtures. The library that lazy typists will love
|
54
134
|
email: sinsiliux@gmail.com
|
55
135
|
executables:
|
@@ -61,6 +141,8 @@ extra_rdoc_files:
|
|
61
141
|
- README.rdoc
|
62
142
|
files:
|
63
143
|
- .gitignore
|
144
|
+
- Gemfile
|
145
|
+
- Gemfile.lock
|
64
146
|
- LICENSE
|
65
147
|
- README.rdoc
|
66
148
|
- Rakefile
|