cucumber_factory 1.2.1 → 1.3.0
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/VERSION +1 -1
- data/cucumber_factory.gemspec +8 -4
- data/lib/cucumber_factory/factory.rb +10 -6
- data/spec/app_root/app/models/opera.rb +4 -0
- data/spec/app_root/app/models/payment.rb +6 -0
- data/spec/app_root/app/models/user.rb +0 -0
- data/spec/app_root/db/migrate/003_create_payments.rb +14 -0
- data/spec/factory_spec.rb +29 -8
- metadata +8 -4
- data/spec/app_root/app/models/benutzer.rb +0 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.3.0
|
data/cucumber_factory.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{cucumber_factory}
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Henning Koch"]
|
12
|
-
s.date = %q{2009-
|
12
|
+
s.date = %q{2009-12-10}
|
13
13
|
s.description = %q{Cucumber Factory allows you to create ActiveRecord models from your Cucumber features without writing step definitions for each model.}
|
14
14
|
s.email = %q{github@makandra.de}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -25,10 +25,11 @@ Gem::Specification.new do |s|
|
|
25
25
|
"lib/cucumber_factory.rb",
|
26
26
|
"lib/cucumber_factory/factory.rb",
|
27
27
|
"spec/app_root/app/controllers/application_controller.rb",
|
28
|
-
"spec/app_root/app/models/benutzer.rb",
|
29
28
|
"spec/app_root/app/models/job_offer.rb",
|
30
29
|
"spec/app_root/app/models/machinist_model.rb",
|
31
30
|
"spec/app_root/app/models/movie.rb",
|
31
|
+
"spec/app_root/app/models/opera.rb",
|
32
|
+
"spec/app_root/app/models/payment.rb",
|
32
33
|
"spec/app_root/app/models/plain_ruby_class.rb",
|
33
34
|
"spec/app_root/app/models/user.rb",
|
34
35
|
"spec/app_root/config/boot.rb",
|
@@ -42,6 +43,7 @@ Gem::Specification.new do |s|
|
|
42
43
|
"spec/app_root/config/routes.rb",
|
43
44
|
"spec/app_root/db/migrate/001_create_movies.rb",
|
44
45
|
"spec/app_root/db/migrate/002_create_users.rb",
|
46
|
+
"spec/app_root/db/migrate/003_create_payments.rb",
|
45
47
|
"spec/app_root/lib/console_with_fixtures.rb",
|
46
48
|
"spec/app_root/log/.gitignore",
|
47
49
|
"spec/app_root/script/console",
|
@@ -56,9 +58,10 @@ Gem::Specification.new do |s|
|
|
56
58
|
s.rubygems_version = %q{1.3.5}
|
57
59
|
s.summary = %q{Create records from Cucumber features without writing step definitions.}
|
58
60
|
s.test_files = [
|
59
|
-
"spec/app_root/app/models/
|
61
|
+
"spec/app_root/app/models/opera.rb",
|
60
62
|
"spec/app_root/app/models/movie.rb",
|
61
63
|
"spec/app_root/app/models/job_offer.rb",
|
64
|
+
"spec/app_root/app/models/payment.rb",
|
62
65
|
"spec/app_root/app/models/machinist_model.rb",
|
63
66
|
"spec/app_root/app/models/plain_ruby_class.rb",
|
64
67
|
"spec/app_root/app/models/user.rb",
|
@@ -73,6 +76,7 @@ Gem::Specification.new do |s|
|
|
73
76
|
"spec/app_root/config/routes.rb",
|
74
77
|
"spec/app_root/db/migrate/002_create_users.rb",
|
75
78
|
"spec/app_root/db/migrate/001_create_movies.rb",
|
79
|
+
"spec/app_root/db/migrate/003_create_payments.rb",
|
76
80
|
"spec/app_root/lib/console_with_fixtures.rb",
|
77
81
|
"spec/factory_spec.rb",
|
78
82
|
"spec/spec_helper.rb"
|
@@ -12,11 +12,11 @@ module Cucumber
|
|
12
12
|
def self.steps
|
13
13
|
[
|
14
14
|
[
|
15
|
-
/^"([^\"]*)" is
|
15
|
+
/^"([^\"]*)" is an? (.+?)( with the .+?)?$/,
|
16
16
|
lambda { |name, raw_model, raw_attributes| Cucumber::Factory.parse_named_creation(self, name, raw_model, raw_attributes) }
|
17
17
|
],
|
18
18
|
[
|
19
|
-
/^there is
|
19
|
+
/^there is an? (.+?)( with the .+?)?$/,
|
20
20
|
lambda { |raw_model, raw_attributes| Cucumber::Factory.parse_creation(self, raw_model, raw_attributes) }
|
21
21
|
]
|
22
22
|
]
|
@@ -86,11 +86,15 @@ module Cucumber
|
|
86
86
|
factory_name = factory_girl_factory_name(model_class)
|
87
87
|
if defined?(::Factory) && factory = ::Factory.factories[factory_name]
|
88
88
|
::Factory.create(factory_name, attributes)
|
89
|
+
elsif model_class.respond_to?(:make) # Machinist blueprint
|
90
|
+
model_class.make(attributes)
|
91
|
+
elsif model_class.respond_to?(:create!) # Plain ActiveRecord
|
92
|
+
model = model_class.new
|
93
|
+
model.send(:attributes=, attributes, false) # ignore attr_accessible
|
94
|
+
model.save!
|
95
|
+
model
|
89
96
|
else
|
90
|
-
|
91
|
-
model_class.respond_to? method_name
|
92
|
-
end
|
93
|
-
model_class.send(create_method, attributes)
|
97
|
+
model_class.new(attributes)
|
94
98
|
end
|
95
99
|
end
|
96
100
|
|
File without changes
|
data/spec/factory_spec.rb
CHANGED
@@ -47,8 +47,10 @@ describe Cucumber::Factory do
|
|
47
47
|
@world = Object.new
|
48
48
|
end
|
49
49
|
|
50
|
-
it "should create ActiveRecord models by calling #
|
51
|
-
Movie.
|
50
|
+
it "should create ActiveRecord models by calling #new and #save!" do
|
51
|
+
movie = Movie.new
|
52
|
+
Movie.should_receive(:new).with().and_return(movie)
|
53
|
+
movie.should_receive(:save!)
|
52
54
|
Cucumber::Factory.parse(@world, "Given there is a movie")
|
53
55
|
end
|
54
56
|
|
@@ -74,25 +76,44 @@ describe Cucumber::Factory do
|
|
74
76
|
end
|
75
77
|
|
76
78
|
it "should instantiate classes with uppercase characters in their name" do
|
77
|
-
|
78
|
-
|
79
|
+
user = User.new
|
80
|
+
User.should_receive(:new).and_return(user)
|
81
|
+
Cucumber::Factory.parse(@world, "Given there is a User")
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should allow either 'a' or 'an' for the article" do
|
85
|
+
Opera.should_receive(:new).with({})
|
86
|
+
Cucumber::Factory.parse(@world, "Given there is an opera")
|
79
87
|
end
|
80
88
|
|
81
89
|
it "should create records with attributes" do
|
82
|
-
Movie.
|
90
|
+
movie = Movie.new
|
91
|
+
Movie.stub(:new => movie)
|
92
|
+
movie.should_receive(:"attributes=").with({ :title => "Sunshine", :year => "2007" }, false)
|
83
93
|
Cucumber::Factory.parse(@world, 'Given there is a movie with the title "Sunshine" and the year "2007"')
|
84
94
|
end
|
85
95
|
|
86
96
|
it "should create records with attributes containing spaces" do
|
87
|
-
Movie.
|
97
|
+
movie = Movie.new
|
98
|
+
Movie.stub(:new => movie)
|
99
|
+
movie.should_receive(:"attributes=").with({ :box_office_result => "99999999" }, false)
|
88
100
|
Cucumber::Factory.parse(@world, 'Given there is a movie with the box office result "99999999"')
|
89
101
|
end
|
90
102
|
|
91
103
|
it "should create records with attributes containing uppercase characters" do
|
92
|
-
|
93
|
-
|
104
|
+
user = User.new
|
105
|
+
User.stub(:new => user)
|
106
|
+
user.should_receive(:"attributes=").with({ :name => "Susanne" }, false)
|
107
|
+
Cucumber::Factory.parse(@world, 'Given there is a User with the Name "Susanne"')
|
94
108
|
end
|
95
109
|
|
110
|
+
it "should override attr_accessible protection" do
|
111
|
+
Cucumber::Factory.parse(@world, 'Given there is a payment with the amount "120" and the comment "Thanks for lending"')
|
112
|
+
payment = Payment.last
|
113
|
+
payment.amount.should == 120
|
114
|
+
payment.comment.should == 'Thanks for lending'
|
115
|
+
end
|
116
|
+
|
96
117
|
it "should set instance variables in the world" do
|
97
118
|
Cucumber::Factory.parse(@world, 'Given "Sunshine" is a movie with the title "Sunshine" and the year "2007"')
|
98
119
|
@world.instance_variable_get(:'@sunshine').title.should == "Sunshine"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber_factory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henning Koch
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-12-10 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -31,10 +31,11 @@ files:
|
|
31
31
|
- lib/cucumber_factory.rb
|
32
32
|
- lib/cucumber_factory/factory.rb
|
33
33
|
- spec/app_root/app/controllers/application_controller.rb
|
34
|
-
- spec/app_root/app/models/benutzer.rb
|
35
34
|
- spec/app_root/app/models/job_offer.rb
|
36
35
|
- spec/app_root/app/models/machinist_model.rb
|
37
36
|
- spec/app_root/app/models/movie.rb
|
37
|
+
- spec/app_root/app/models/opera.rb
|
38
|
+
- spec/app_root/app/models/payment.rb
|
38
39
|
- spec/app_root/app/models/plain_ruby_class.rb
|
39
40
|
- spec/app_root/app/models/user.rb
|
40
41
|
- spec/app_root/config/boot.rb
|
@@ -48,6 +49,7 @@ files:
|
|
48
49
|
- spec/app_root/config/routes.rb
|
49
50
|
- spec/app_root/db/migrate/001_create_movies.rb
|
50
51
|
- spec/app_root/db/migrate/002_create_users.rb
|
52
|
+
- spec/app_root/db/migrate/003_create_payments.rb
|
51
53
|
- spec/app_root/lib/console_with_fixtures.rb
|
52
54
|
- spec/app_root/log/.gitignore
|
53
55
|
- spec/app_root/script/console
|
@@ -84,9 +86,10 @@ signing_key:
|
|
84
86
|
specification_version: 3
|
85
87
|
summary: Create records from Cucumber features without writing step definitions.
|
86
88
|
test_files:
|
87
|
-
- spec/app_root/app/models/
|
89
|
+
- spec/app_root/app/models/opera.rb
|
88
90
|
- spec/app_root/app/models/movie.rb
|
89
91
|
- spec/app_root/app/models/job_offer.rb
|
92
|
+
- spec/app_root/app/models/payment.rb
|
90
93
|
- spec/app_root/app/models/machinist_model.rb
|
91
94
|
- spec/app_root/app/models/plain_ruby_class.rb
|
92
95
|
- spec/app_root/app/models/user.rb
|
@@ -101,6 +104,7 @@ test_files:
|
|
101
104
|
- spec/app_root/config/routes.rb
|
102
105
|
- spec/app_root/db/migrate/002_create_users.rb
|
103
106
|
- spec/app_root/db/migrate/001_create_movies.rb
|
107
|
+
- spec/app_root/db/migrate/003_create_payments.rb
|
104
108
|
- spec/app_root/lib/console_with_fixtures.rb
|
105
109
|
- spec/factory_spec.rb
|
106
110
|
- spec/spec_helper.rb
|