padrino-gen 0.10.2 → 0.10.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +3 -3
- data/.yardopts +1 -0
- data/{LICENSE → LICENSE.txt} +0 -0
- data/README.rdoc +1 -1
- data/lib/padrino-gen/command.rb +7 -0
- data/lib/padrino-gen/generators/actions.rb +264 -24
- data/lib/padrino-gen/generators/app/app.rb.tt +11 -11
- data/lib/padrino-gen/generators/app.rb +10 -9
- data/lib/padrino-gen/generators/cli.rb +3 -0
- data/lib/padrino-gen/generators/components/actions.rb +86 -11
- data/lib/padrino-gen/generators/components/mocks/rr.rb +3 -1
- data/lib/padrino-gen/generators/components/orms/mongoid.rb +1 -1
- data/lib/padrino-gen/generators/components/orms/mongomapper.rb +1 -1
- data/lib/padrino-gen/generators/components/orms/mongomatic.rb +1 -1
- data/lib/padrino-gen/generators/components/stylesheets/less.rb +1 -1
- data/lib/padrino-gen/generators/components/tests/minitest.rb +78 -0
- data/lib/padrino-gen/generators/controller.rb +3 -0
- data/lib/padrino-gen/generators/mailer.rb +3 -0
- data/lib/padrino-gen/generators/model.rb +3 -0
- data/lib/padrino-gen/generators/plugin.rb +2 -0
- data/lib/padrino-gen/generators/project.rb +11 -3
- data/lib/padrino-gen/generators/runner.rb +85 -34
- data/lib/padrino-gen/generators/templates/Gemfile.tt +12 -21
- data/lib/padrino-gen/padrino-tasks/activerecord.rb +0 -194
- data/lib/padrino-gen.rb +21 -0
- data/test/helper.rb +2 -20
- data/test/test_app_generator.rb +17 -17
- data/test/test_cli.rb +6 -5
- data/test/test_controller_generator.rb +52 -44
- data/test/test_generator.rb +1 -1
- data/test/test_mailer_generator.rb +18 -18
- data/test/test_migration_generator.rb +44 -44
- data/test/test_model_generator.rb +140 -123
- data/test/test_plugin_generator.rb +21 -33
- data/test/test_project_generator.rb +125 -103
- metadata +10 -8
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
2
|
|
3
|
-
|
3
|
+
describe "ModelGenerator" do
|
4
4
|
def setup
|
5
5
|
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{UUID.new.generate}"
|
6
6
|
`mkdir -p #{@apptmp}`
|
@@ -12,45 +12,45 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
12
12
|
|
13
13
|
context 'the model generator' do
|
14
14
|
should "fail outside app root" do
|
15
|
-
|
16
|
-
assert_match(/not at the root/,
|
15
|
+
out, err = capture_io { generate(:model, 'user', "-r=#{@apptmp}") }
|
16
|
+
assert_match(/not at the root/, out)
|
17
17
|
assert_no_file_exists('/tmp/models/user.rb')
|
18
18
|
end
|
19
19
|
|
20
20
|
should "generate filename properly" do
|
21
|
-
|
22
|
-
|
21
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=couchrest') }
|
22
|
+
capture_io { generate(:model, 'DemoItem', "name:string", "age", "email:string", "-r=#{@apptmp}/sample_project") }
|
23
23
|
assert_file_exists("#{@apptmp}/sample_project/models/demo_item.rb")
|
24
24
|
end
|
25
25
|
|
26
26
|
should "fail if field name is not acceptable" do
|
27
|
-
|
28
|
-
|
29
|
-
assert_match(/Invalid field name:/,
|
30
|
-
assert_match(/display-name:string/,
|
31
|
-
assert_match(/age&year:datetime/,
|
32
|
-
assert_match(/re@l\$ly:string/,
|
33
|
-
assert_no_match(/email_two:string/,
|
34
|
-
assert_no_match(/apply/,
|
27
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=couchrest') }
|
28
|
+
out, err = capture_io { generate(:model, 'DemoItem', "re@l$ly:string","display-name:string", "age&year:datetime", "email_two:string", "-r=#{@apptmp}/sample_project") }
|
29
|
+
assert_match(/Invalid field name:/, out)
|
30
|
+
assert_match(/display-name:string/, out)
|
31
|
+
assert_match(/age&year:datetime/, out)
|
32
|
+
assert_match(/re@l\$ly:string/, out)
|
33
|
+
assert_no_match(/email_two:string/, out)
|
34
|
+
assert_no_match(/apply/, out)
|
35
35
|
assert_no_file_exists("#{@apptmp}/sample_project/models/demo_item.rb")
|
36
36
|
end
|
37
37
|
|
38
38
|
should "fail if we don't use an adapter" do
|
39
|
-
|
40
|
-
|
39
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
40
|
+
assert_raises(SystemExit) { capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") } }
|
41
41
|
end
|
42
42
|
|
43
43
|
should "not fail if we don't have test component" do
|
44
|
-
|
45
|
-
response_success =
|
44
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--test=none', '-d=activerecord') }
|
45
|
+
response_success = capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
46
46
|
assert_match_in_file(/class User < ActiveRecord::Base/m, "#{@apptmp}/sample_project/models/user.rb")
|
47
47
|
assert_no_file_exists("#{@apptmp}/sample_project/test")
|
48
48
|
end
|
49
49
|
|
50
50
|
should "generate model in specified app" do
|
51
|
-
|
52
|
-
|
53
|
-
|
51
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper', '--script=none', '-t=bacon') }
|
52
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
53
|
+
capture_io { generate(:model, 'Post', "body:string", '-a=/subby', "-r=#{@apptmp}/sample_project") }
|
54
54
|
assert_match_in_file(/class Post\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/subby/models/post.rb")
|
55
55
|
assert_match_in_file(/property :body, String/m, "#{@apptmp}/sample_project/subby/models/post.rb")
|
56
56
|
assert_match_in_file(/migration 1, :create_posts do/m, "#{@apptmp}/sample_project/db/migrate/001_create_posts.rb")
|
@@ -59,19 +59,19 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
59
59
|
end
|
60
60
|
|
61
61
|
should "generate only generate model once" do
|
62
|
-
|
63
|
-
response_success =
|
64
|
-
|
62
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
63
|
+
response_success = capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
64
|
+
out, err = capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
65
65
|
assert_match_in_file(/class User < ActiveRecord::Base/m, "#{@apptmp}/sample_project/models/user.rb")
|
66
|
-
assert_match
|
67
|
-
assert_match
|
66
|
+
assert_match(/identical\e\[0m models\/user\.rb/, out)
|
67
|
+
assert_match(/identical\e\[0m test\/models\/user_test\.rb/, out)
|
68
68
|
end
|
69
69
|
|
70
70
|
should "generate migration file versions properly" do
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
71
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
72
|
+
capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
73
|
+
capture_io { generate(:model, 'account', "-r=#{@apptmp}/sample_project") }
|
74
|
+
capture_io { generate(:model, 'bank', "-r=#{@apptmp}/sample_project") }
|
75
75
|
assert_file_exists("#{@apptmp}/sample_project/db/migrate/001_create_users.rb")
|
76
76
|
assert_file_exists("#{@apptmp}/sample_project/db/migrate/002_create_accounts.rb")
|
77
77
|
assert_file_exists("#{@apptmp}/sample_project/db/migrate/003_create_banks.rb")
|
@@ -81,22 +81,22 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
81
81
|
# ACTIVERECORD
|
82
82
|
context "model generator using activerecord" do
|
83
83
|
should "generate model file" do
|
84
|
-
|
85
|
-
|
84
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
85
|
+
capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
86
86
|
assert_match_in_file(/class User < ActiveRecord::Base/m, "#{@apptmp}/sample_project/models/user.rb")
|
87
87
|
end
|
88
88
|
|
89
89
|
should "generate model file with camelized name" do
|
90
|
-
|
91
|
-
|
90
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
91
|
+
capture_io { generate(:model, 'ChunkyBacon', "-r=#{@apptmp}/sample_project") }
|
92
92
|
assert_match_in_file(/class ChunkyBacon < ActiveRecord::Base/m, "#{@apptmp}/sample_project/models/chunky_bacon.rb")
|
93
93
|
assert_match_in_file(/ChunkyBacon Model/, "#{@apptmp}/sample_project/test/models/chunky_bacon_test.rb")
|
94
94
|
end
|
95
95
|
|
96
96
|
should "generate migration file with no fields" do
|
97
97
|
current_time = stop_time_for_test.strftime("%Y%m%d%H%M%S")
|
98
|
-
|
99
|
-
|
98
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
99
|
+
capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
100
100
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_users.rb"
|
101
101
|
assert_match_in_file(/class CreateUsers < ActiveRecord::Migration/m, migration_file_path)
|
102
102
|
assert_match_in_file(/create_table :users/m, migration_file_path)
|
@@ -105,8 +105,8 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
105
105
|
|
106
106
|
should "generate migration file with given fields" do
|
107
107
|
current_time = stop_time_for_test.strftime("%Y%m%d%H%M%S")
|
108
|
-
|
109
|
-
|
108
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
109
|
+
capture_io { generate(:model, 'person', "name:string", "age:integer", "email:string", "-r=#{@apptmp}/sample_project") }
|
110
110
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_people.rb"
|
111
111
|
assert_match_in_file(/class CreatePeople < ActiveRecord::Migration/m, migration_file_path)
|
112
112
|
assert_match_in_file(/create_table :people/m, migration_file_path)
|
@@ -120,15 +120,15 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
120
120
|
# COUCHREST
|
121
121
|
context "model generator using couchrest" do
|
122
122
|
should "generate model file with no properties" do
|
123
|
-
|
124
|
-
|
123
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=couchrest') }
|
124
|
+
capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
125
125
|
assert_match_in_file(/class User < CouchRest::Model::Base/m, "#{@apptmp}/sample_project/models/user.rb")
|
126
126
|
assert_match_in_file(/# property <name>[\s\n]+?end/m, "#{@apptmp}/sample_project/models/user.rb")
|
127
127
|
end
|
128
128
|
|
129
129
|
should "generate model file with given fields" do
|
130
|
-
|
131
|
-
|
130
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=couchrest') }
|
131
|
+
capture_io { generate(:model, 'person', "name:string", "age", "email:string", "-r=#{@apptmp}/sample_project") }
|
132
132
|
assert_match_in_file(/class Person < CouchRest::Model::Base/m, "#{@apptmp}/sample_project/models/person.rb")
|
133
133
|
assert_match_in_file(/property :name/m, "#{@apptmp}/sample_project/models/person.rb")
|
134
134
|
assert_match_in_file(/property :age/m, "#{@apptmp}/sample_project/models/person.rb")
|
@@ -140,21 +140,21 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
140
140
|
context "model generator using datamapper" do
|
141
141
|
|
142
142
|
should "generate gemfile gem" do
|
143
|
-
|
144
|
-
|
143
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=datamapper') }
|
144
|
+
capture_io { generate(:model, 'user', "name:string", "age:integer", "created_at:datetime", "-r=#{@apptmp}/sample_project") }
|
145
145
|
assert_match_in_file(/gem 'dm-core'/m,"#{@apptmp}/sample_project/Gemfile")
|
146
146
|
end
|
147
147
|
|
148
148
|
should "generate model file with camelized name" do
|
149
|
-
|
150
|
-
|
149
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=datamapper') }
|
150
|
+
capture_io { generate(:model, 'ChunkyBacon', "-r=#{@apptmp}/sample_project") }
|
151
151
|
assert_match_in_file(/class ChunkyBacon\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/chunky_bacon.rb")
|
152
152
|
assert_match_in_file(/ChunkyBacon Model/, "#{@apptmp}/sample_project/test/models/chunky_bacon_test.rb")
|
153
153
|
end
|
154
154
|
|
155
155
|
should "generate model file with fields" do
|
156
|
-
|
157
|
-
|
156
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=datamapper') }
|
157
|
+
capture_io { generate(:model, 'user', "name:string", "age:integer", "created_at:datetime", "-r=#{@apptmp}/sample_project") }
|
158
158
|
assert_match_in_file(/class User\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/user.rb")
|
159
159
|
assert_match_in_file(/property :name, String/m, "#{@apptmp}/sample_project/models/user.rb")
|
160
160
|
assert_match_in_file(/property :age, Integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
@@ -162,10 +162,10 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
162
162
|
end
|
163
163
|
|
164
164
|
should "properly generate version numbers" do
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
165
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=datamapper') }
|
166
|
+
capture_io { generate(:model, 'user', "name:string", "age:integer", "created_at:datetime", "-r=#{@apptmp}/sample_project") }
|
167
|
+
capture_io { generate(:model, 'person', "name:string", "age:integer", "created_at:datetime", "-r=#{@apptmp}/sample_project") }
|
168
|
+
capture_io { generate(:model, 'account', "name:string", "age:integer", "created_at:datetime", "-r=#{@apptmp}/sample_project") }
|
169
169
|
assert_match_in_file(/class User\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/user.rb")
|
170
170
|
assert_match_in_file(/migration 1, :create_users do/m, "#{@apptmp}/sample_project/db/migrate/001_create_users.rb")
|
171
171
|
assert_match_in_file(/class Person\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/person.rb")
|
@@ -176,8 +176,8 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
176
176
|
|
177
177
|
should "generate migration with given fields" do
|
178
178
|
current_time = stop_time_for_test.strftime("%Y%m%d%H%M%S")
|
179
|
-
|
180
|
-
|
179
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=datamapper') }
|
180
|
+
capture_io { generate(:model, 'person', "name:string", "created_at:date_time", "email:string", "-r=#{@apptmp}/sample_project") }
|
181
181
|
assert_match_in_file(/class Person\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/person.rb")
|
182
182
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_people.rb"
|
183
183
|
assert_match_in_file(/migration 1, :create_people do/m, migration_file_path)
|
@@ -192,22 +192,22 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
192
192
|
# SEQUEL
|
193
193
|
context "model generator using sequel" do
|
194
194
|
should "generate model file with given properties" do
|
195
|
-
|
196
|
-
|
195
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=sequel') }
|
196
|
+
capture_io { generate(:model, 'user', "name:string", "age:integer", "created:datetime", "-r=#{@apptmp}/sample_project") }
|
197
197
|
assert_match_in_file(/class User < Sequel::Model/m, "#{@apptmp}/sample_project/models/user.rb")
|
198
198
|
end
|
199
199
|
|
200
200
|
should "generate model file with camelized name" do
|
201
|
-
|
202
|
-
|
201
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=sequel') }
|
202
|
+
capture_io { generate(:model, 'ChunkyBacon', "-r=#{@apptmp}/sample_project") }
|
203
203
|
assert_match_in_file(/class ChunkyBacon < Sequel::Model/m, "#{@apptmp}/sample_project/models/chunky_bacon.rb")
|
204
204
|
assert_match_in_file(/ChunkyBacon Model/, "#{@apptmp}/sample_project/test/models/chunky_bacon_test.rb")
|
205
205
|
end
|
206
206
|
|
207
207
|
should "generate migration file with given properties" do
|
208
208
|
current_time = stop_time_for_test.strftime("%Y%m%d%H%M%S")
|
209
|
-
|
210
|
-
|
209
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=sequel') }
|
210
|
+
capture_io { generate(:model, 'person', "name:string", "age:integer", "created:datetime", "-r=#{@apptmp}/sample_project") }
|
211
211
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_people.rb"
|
212
212
|
assert_match_in_file(/class Person < Sequel::Model/m, "#{@apptmp}/sample_project/models/person.rb")
|
213
213
|
assert_match_in_file(/class CreatePeople < Sequel::Migration/m, migration_file_path)
|
@@ -222,16 +222,16 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
222
222
|
# MONGODB
|
223
223
|
context "model generator using mongomapper" do
|
224
224
|
should "generate model file with no properties" do
|
225
|
-
|
226
|
-
|
225
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongomapper') }
|
226
|
+
capture_io { generate(:model, 'person', "-r=#{@apptmp}/sample_project") }
|
227
227
|
assert_match_in_file(/class Person\n\s+include MongoMapper::Document/m, "#{@apptmp}/sample_project/models/person.rb")
|
228
228
|
assert_match_in_file(/# key <name>, <type>/m, "#{@apptmp}/sample_project/models/person.rb")
|
229
229
|
assert_match_in_file(/timestamps![\n\s]+end/m, "#{@apptmp}/sample_project/models/person.rb")
|
230
230
|
end
|
231
231
|
|
232
232
|
should "generate model file with given fields" do
|
233
|
-
|
234
|
-
|
233
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongomapper') }
|
234
|
+
capture_io { generate(:model, 'user', "name:string", "age:integer", "email:string", "-r=#{@apptmp}/sample_project") }
|
235
235
|
assert_match_in_file(/class User\n\s+include MongoMapper::Document/m, "#{@apptmp}/sample_project/models/user.rb")
|
236
236
|
assert_match_in_file(/key :name, String/m, "#{@apptmp}/sample_project/models/user.rb")
|
237
237
|
assert_match_in_file(/key :age, Integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
@@ -242,15 +242,15 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
242
242
|
|
243
243
|
context "model generator using mongoid" do
|
244
244
|
should "generate model file with no properties" do
|
245
|
-
|
246
|
-
|
245
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongoid') }
|
246
|
+
capture_io { generate(:model, 'person', "-r=#{@apptmp}/sample_project") }
|
247
247
|
assert_match_in_file(/class Person\n\s+include Mongoid::Document/m, "#{@apptmp}/sample_project/models/person.rb")
|
248
248
|
assert_match_in_file(/# field <name>, :type => <type>, :default => <value>/m, "#{@apptmp}/sample_project/models/person.rb")
|
249
249
|
end
|
250
250
|
|
251
251
|
should "generate model file with given fields" do
|
252
|
-
|
253
|
-
|
252
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongoid') }
|
253
|
+
capture_io { generate(:model, 'user', "name:string", "age:integer", "email:string", "-r=#{@apptmp}/sample_project") }
|
254
254
|
assert_match_in_file(/class User\n\s+include Mongoid::Document/m, "#{@apptmp}/sample_project/models/user.rb")
|
255
255
|
assert_match_in_file(/field :name, :type => String/m, "#{@apptmp}/sample_project/models/user.rb")
|
256
256
|
assert_match_in_file(/field :age, :type => Integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
@@ -261,8 +261,8 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
261
261
|
# REDIS
|
262
262
|
context "model generator using ohm" do
|
263
263
|
should "generate model file with no properties" do
|
264
|
-
|
265
|
-
|
264
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=ohm') }
|
265
|
+
capture_io { generate(:model, 'person', "-r=#{@apptmp}/sample_project") }
|
266
266
|
assert_match_in_file(/class Person < Ohm::Model/, "#{@apptmp}/sample_project/models/person.rb")
|
267
267
|
assert_match_in_file(/include Ohm::Timestamping/, "#{@apptmp}/sample_project/models/person.rb")
|
268
268
|
assert_match_in_file(/include Ohm::Typecast/, "#{@apptmp}/sample_project/models/person.rb")
|
@@ -271,8 +271,8 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
271
271
|
end
|
272
272
|
|
273
273
|
should "generate model file with given fields" do
|
274
|
-
|
275
|
-
|
274
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=ohm') }
|
275
|
+
capture_io { generate(:model, 'user', "name:string", "age:integer", "email:string", "-r=#{@apptmp}/sample_project") }
|
276
276
|
assert_match_in_file(/class User < Ohm::Model/, "#{@apptmp}/sample_project/models/user.rb")
|
277
277
|
assert_match_in_file(/attribute :name, String/m, "#{@apptmp}/sample_project/models/user.rb")
|
278
278
|
assert_match_in_file(/attribute :age, Integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
@@ -283,15 +283,15 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
283
283
|
# MONGOMATIC
|
284
284
|
context "model generator using mongomatic" do
|
285
285
|
should "generate model file with no properties" do
|
286
|
-
|
287
|
-
|
286
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongomatic') }
|
287
|
+
capture_io { generate(:model, 'person', "-r=#{@apptmp}/sample_project") }
|
288
288
|
assert_match_in_file(/class Person < Mongomatic::Base/, "#{@apptmp}/sample_project/models/person.rb")
|
289
289
|
assert_match_in_file(/include Mongomatic::Expectations::Helper/m, "#{@apptmp}/sample_project/models/person.rb")
|
290
290
|
end
|
291
291
|
|
292
292
|
should "generate model file with given fields" do
|
293
|
-
|
294
|
-
|
293
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongomatic') }
|
294
|
+
capture_io { generate(:model, 'user', "name:string", "age:integer", "email:string", "-r=#{@apptmp}/sample_project") }
|
295
295
|
assert_match_in_file(/class User < Mongomatic::Base/, "#{@apptmp}/sample_project/models/user.rb")
|
296
296
|
assert_match_in_file(/include Mongomatic::Expectations::Helper/, "#{@apptmp}/sample_project/models/user.rb")
|
297
297
|
assert_match_in_file(/be_present self\['name'\]/m, "#{@apptmp}/sample_project/models/user.rb")
|
@@ -304,8 +304,8 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
304
304
|
# RIPPLE
|
305
305
|
context "model generator using ripple" do
|
306
306
|
should "generate model file with no properties" do
|
307
|
-
|
308
|
-
|
307
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=ripple') }
|
308
|
+
capture_io { generate(:model, 'person', "name:string", "-r=#{@apptmp}/sample_project") }
|
309
309
|
assert_match_in_file(/class Person\n\s+include Ripple::Document/m, "#{@apptmp}/sample_project/models/person.rb")
|
310
310
|
assert_match_in_file(/# property :name, String/m, "#{@apptmp}/sample_project/models/person.rb")
|
311
311
|
assert_match_in_file(/# many :addresses/m, "#{@apptmp}/sample_project/models/person.rb")
|
@@ -313,8 +313,8 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
313
313
|
end
|
314
314
|
|
315
315
|
should "generate model file with given fields" do
|
316
|
-
|
317
|
-
|
316
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=ripple') }
|
317
|
+
capture_io { generate(:model, 'user', "name:string", "age:integer", "email:string", "-r=#{@apptmp}/sample_project") }
|
318
318
|
assert_match_in_file(/class User\n\s+include Ripple::Document/m, "#{@apptmp}/sample_project/models/user.rb")
|
319
319
|
assert_match_in_file(/property :name, String/m, "#{@apptmp}/sample_project/models/user.rb")
|
320
320
|
assert_match_in_file(/property :age, Integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
@@ -325,9 +325,9 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
325
325
|
context "model generator testing files" do
|
326
326
|
# BACON
|
327
327
|
should "generate test file for bacon" do
|
328
|
-
|
329
|
-
|
330
|
-
|
328
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
329
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
330
|
+
capture_io { generate(:model, 'SomeUser', "-r=#{@apptmp}/sample_project") }
|
331
331
|
assert_match_in_file(/describe "SomeUser Model"/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
332
332
|
assert_match_in_file(/@some_user = SomeUser.new/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
333
333
|
assert_match_in_file(/@some_user\.should\.not\.be\.nil/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
@@ -335,9 +335,9 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
335
335
|
end
|
336
336
|
|
337
337
|
should "generate test file for bacon in specified app" do
|
338
|
-
|
339
|
-
|
340
|
-
|
338
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
339
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
340
|
+
capture_io { generate(:model, 'SomeUser', "-a=/subby", "-r=#{@apptmp}/sample_project") }
|
341
341
|
assert_match_in_file(/describe "SomeUser Model"/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
342
342
|
assert_match_in_file(/@some_user = SomeUser.new/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
343
343
|
assert_match_in_file(/@some_user\.should\.not\.be\.nil/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
@@ -346,9 +346,9 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
346
346
|
|
347
347
|
# RIOT
|
348
348
|
should "generate test file for riot" do
|
349
|
-
|
350
|
-
|
351
|
-
|
349
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=riot', '-d=activerecord') }
|
350
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
351
|
+
capture_io { generate(:model, 'SomeUser', "-r=#{@apptmp}/sample_project") }
|
352
352
|
assert_match_in_file(/context "SomeUser Model" do/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
353
353
|
assert_match_in_file(/SomeUser.new/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
354
354
|
assert_match_in_file(/asserts\("that record is not nil"\) \{ \!topic.nil\? \}/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
@@ -356,29 +356,46 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
356
356
|
end
|
357
357
|
|
358
358
|
should "generate test file for riot in specified app" do
|
359
|
-
|
360
|
-
|
361
|
-
|
359
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=riot', '-d=activerecord') }
|
360
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
361
|
+
capture_io { generate(:model, 'SomeUser', "-a=/subby", "-r=#{@apptmp}/sample_project") }
|
362
362
|
assert_match_in_file(/context "SomeUser Model" do/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
363
363
|
assert_match_in_file(/SomeUser.new/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
364
364
|
assert_match_in_file(/asserts\("that record is not nil"\) \{ \!topic.nil\? \}/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
365
365
|
assert_match_in_file(/'(\/\.\.){2}\/test/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
366
366
|
end
|
367
367
|
|
368
|
+
# MINITEST
|
369
|
+
should "generate test file for minitest" do
|
370
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=minitest', '-d=activerecord') }
|
371
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
372
|
+
capture_io { generate(:model, 'SomeUser', "-r=#{@apptmp}/sample_project") }
|
373
|
+
assert_match_in_file(/describe "SomeUser Model"/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
374
|
+
assert_match_in_file(/refute_nil @some_user/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
375
|
+
end
|
376
|
+
|
377
|
+
should "generate test file for minitest in specified app" do
|
378
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=minitest', '-d=activerecord') }
|
379
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
380
|
+
capture_io { generate(:model, 'SomeUser', "-a=/subby", "-r=#{@apptmp}/sample_project") }
|
381
|
+
assert_match_in_file(/describe "SomeUser Model"/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
382
|
+
assert_match_in_file(/refute_nil @some_user/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
383
|
+
end
|
384
|
+
|
368
385
|
# RSPEC
|
369
386
|
should "generate test file for rspec" do
|
370
|
-
|
371
|
-
|
372
|
-
|
387
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec', '-d=activerecord') }
|
388
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
389
|
+
capture_io { generate(:model, 'SomeUser', "-r=#{@apptmp}/sample_project") }
|
373
390
|
assert_match_in_file(/describe "SomeUser Model"/m, "#{@apptmp}/sample_project/spec/models/some_user_spec.rb")
|
374
391
|
assert_match_in_file(/let\(:some_user\) \{ SomeUser.new \}/m, "#{@apptmp}/sample_project/spec/models/some_user_spec.rb")
|
375
392
|
assert_match_in_file(/some_user\.should_not be_nil/m, "#{@apptmp}/sample_project/spec/models/some_user_spec.rb")
|
376
393
|
end
|
377
394
|
|
378
395
|
should "generate test file for rspec in specified app" do
|
379
|
-
|
380
|
-
|
381
|
-
|
396
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec', '-d=activerecord') }
|
397
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
398
|
+
capture_io { generate(:model, 'SomeUser', "-a=/subby", "-r=#{@apptmp}/sample_project") }
|
382
399
|
assert_match_in_file(/describe "SomeUser Model"/m, "#{@apptmp}/sample_project/spec/subby/models/some_user_spec.rb")
|
383
400
|
assert_match_in_file(/let\(:some_user\) \{ SomeUser.new \}/m, "#{@apptmp}/sample_project/spec/subby/models/some_user_spec.rb")
|
384
401
|
assert_match_in_file(/some_user\.should_not be_nil/m, "#{@apptmp}/sample_project/spec/subby/models/some_user_spec.rb")
|
@@ -386,9 +403,9 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
386
403
|
|
387
404
|
# SHOULDA
|
388
405
|
should "generate test file for shoulda" do
|
389
|
-
|
390
|
-
|
391
|
-
|
406
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=shoulda', '-d=activerecord') }
|
407
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
408
|
+
capture_io { generate(:model, 'SomePerson', "-r=#{@apptmp}/sample_project") }
|
392
409
|
assert_match_in_file(/class SomePersonTest < Test::Unit::TestCase/m, "#{@apptmp}/sample_project/test/models/some_person_test.rb")
|
393
410
|
assert_match_in_file(/context "SomePerson Model"/m, "#{@apptmp}/sample_project/test/models/some_person_test.rb")
|
394
411
|
assert_match_in_file(/@some_person = SomePerson.new/m, "#{@apptmp}/sample_project/test/models/some_person_test.rb")
|
@@ -397,9 +414,9 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
397
414
|
end
|
398
415
|
|
399
416
|
should "generate test file for shoulda in specified app" do
|
400
|
-
|
401
|
-
|
402
|
-
|
417
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=shoulda', '-d=activerecord') }
|
418
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
419
|
+
capture_io { generate(:model, 'SomePerson', "-a=/subby", "-r=#{@apptmp}/sample_project") }
|
403
420
|
assert_match_in_file(/class SomePersonTest < Test::Unit::TestCase/m, "#{@apptmp}/sample_project/test/subby/models/some_person_test.rb")
|
404
421
|
assert_match_in_file(/context "SomePerson Model"/m, "#{@apptmp}/sample_project/test/subby/models/some_person_test.rb")
|
405
422
|
assert_match_in_file(/@some_person = SomePerson.new/m, "#{@apptmp}/sample_project/test/subby/models/some_person_test.rb")
|
@@ -409,9 +426,9 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
409
426
|
|
410
427
|
# TESTSPEC
|
411
428
|
should "generate test file for testspec" do
|
412
|
-
|
413
|
-
|
414
|
-
|
429
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=testspec', '-d=activerecord') }
|
430
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
431
|
+
capture_io { generate(:model, 'SomeUser', "-r=#{@apptmp}/sample_project") }
|
415
432
|
assert_match_in_file(/context "SomeUser Model"/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
416
433
|
assert_match_in_file(/@some_user = SomeUser.new/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
417
434
|
assert_match_in_file(/@some_user\.should\.not\.be\.nil/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
@@ -419,9 +436,9 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
419
436
|
end
|
420
437
|
|
421
438
|
should "generate test file for testspec in specified app" do
|
422
|
-
|
423
|
-
|
424
|
-
|
439
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=testspec', '-d=activerecord') }
|
440
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
441
|
+
capture_io { generate(:model, 'SomeUser', "-a=/subby", "-r=#{@apptmp}/sample_project") }
|
425
442
|
assert_match_in_file(/context "SomeUser Model"/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
426
443
|
assert_match_in_file(/@some_user = SomeUser.new/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
427
444
|
assert_match_in_file(/@some_user\.should\.not\.be\.nil/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
@@ -432,36 +449,36 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
432
449
|
context "the model destroy option" do
|
433
450
|
|
434
451
|
should "destroy the model file" do
|
435
|
-
|
436
|
-
|
437
|
-
|
452
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
453
|
+
capture_io { generate(:model, 'User', "-r=#{@apptmp}/sample_project") }
|
454
|
+
capture_io { generate(:model, 'User', "-r=#{@apptmp}/sample_project", '-d') }
|
438
455
|
assert_no_file_exists("#{@apptmp}/sample_project/models/user.rb")
|
439
456
|
assert_no_file_exists("#{@apptmp}/sample_project/test/models/user_test.rb")
|
440
457
|
assert_no_file_exists("#{@apptmp}/sample_project/db/migrate/001_create_users.rb")
|
441
458
|
end
|
442
459
|
|
443
460
|
should "destroy the model test file with rspec" do
|
444
|
-
|
445
|
-
|
446
|
-
|
461
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec', '-d=activerecord') }
|
462
|
+
capture_io { generate(:model, 'User', "-r=#{@apptmp}/sample_project") }
|
463
|
+
capture_io { generate(:model, 'User', "-r=#{@apptmp}/sample_project", '-d') }
|
447
464
|
assert_no_file_exists("#{@apptmp}/sample_project/spec/models/user_spec.rb")
|
448
465
|
end
|
449
466
|
|
450
467
|
should "destroy the model test file in a sub app" do
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
468
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
469
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
470
|
+
capture_io { generate(:model, 'User', "-a=/subby","-r=#{@apptmp}/sample_project") }
|
471
|
+
capture_io { generate(:model, 'User', "-a=/subby","-r=#{@apptmp}/sample_project", '-d') }
|
455
472
|
assert_no_file_exists("#{@apptmp}/sample_project/subby/models/user.rb")
|
456
473
|
assert_no_file_exists("#{@apptmp}/sample_project/test/subby/models/user_test.rb")
|
457
474
|
assert_no_file_exists("#{@apptmp}/sample_project/db/migrate/001_create_users.rb")
|
458
475
|
end
|
459
476
|
|
460
477
|
should "destroy the right model migration" do
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
478
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec', '-d=activerecord') }
|
479
|
+
capture_io { generate(:model, 'bar_foo', "-r=#{@apptmp}/sample_project") }
|
480
|
+
capture_io { generate(:model, 'foo', "-r=#{@apptmp}/sample_project") }
|
481
|
+
capture_io { generate(:model, 'foo', "-r=#{@apptmp}/sample_project", '-d') }
|
465
482
|
assert_no_file_exists("#{@apptmp}/sample_project/db/migrate/002_create_foos.rb")
|
466
483
|
assert_file_exists("#{@apptmp}/sample_project/db/migrate/001_create_bar_foos.rb")
|
467
484
|
end
|