padrino-gen 0.16.0.pre4 → 0.16.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.
- checksums.yaml +4 -4
- data/Rakefile +1 -1
- data/bin/padrino-gen +4 -4
- data/lib/padrino-gen/command.rb +2 -2
- data/lib/padrino-gen/generators/actions.rb +68 -64
- data/lib/padrino-gen/generators/app/app.rb.tt +6 -6
- data/lib/padrino-gen/generators/app.rb +19 -19
- data/lib/padrino-gen/generators/cli.rb +16 -19
- data/lib/padrino-gen/generators/component.rb +18 -19
- data/lib/padrino-gen/generators/components/actions.rb +42 -42
- data/lib/padrino-gen/generators/components/mocks/mocha.rb +7 -7
- data/lib/padrino-gen/generators/components/mocks/rr.rb +7 -7
- data/lib/padrino-gen/generators/components/orms/activerecord.rb +158 -156
- data/lib/padrino-gen/generators/components/orms/couchrest.rb +33 -33
- data/lib/padrino-gen/generators/components/orms/datamapper.rb +108 -103
- data/lib/padrino-gen/generators/components/orms/dynamoid.rb +40 -40
- data/lib/padrino-gen/generators/components/orms/minirecord.rb +114 -114
- data/lib/padrino-gen/generators/components/orms/mongoid.rb +65 -65
- data/lib/padrino-gen/generators/components/orms/mongomapper.rb +20 -20
- data/lib/padrino-gen/generators/components/orms/mongomatic.rb +63 -59
- data/lib/padrino-gen/generators/components/orms/ohm.rb +49 -47
- data/lib/padrino-gen/generators/components/orms/ripple.rb +45 -45
- data/lib/padrino-gen/generators/components/orms/sequel.rb +51 -46
- data/lib/padrino-gen/generators/components/renderers/erb.rb +1 -1
- data/lib/padrino-gen/generators/components/renderers/liquid.rb +1 -1
- data/lib/padrino-gen/generators/components/scripts/dojo.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/extcore.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/jquery.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/mootools.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/prototype.rb +8 -8
- data/lib/padrino-gen/generators/components/stylesheets/compass.rb +1 -1
- data/lib/padrino-gen/generators/components/stylesheets/less.rb +4 -4
- data/lib/padrino-gen/generators/components/tests/bacon.rb +66 -66
- data/lib/padrino-gen/generators/components/tests/cucumber.rb +61 -61
- data/lib/padrino-gen/generators/components/tests/minitest.rb +70 -70
- data/lib/padrino-gen/generators/components/tests/rspec.rb +74 -74
- data/lib/padrino-gen/generators/components/tests/shoulda.rb +72 -72
- data/lib/padrino-gen/generators/components/tests/testunit.rb +69 -69
- data/lib/padrino-gen/generators/controller.rb +16 -17
- data/lib/padrino-gen/generators/helper.rb +8 -9
- data/lib/padrino-gen/generators/mailer.rb +8 -9
- data/lib/padrino-gen/generators/migration.rb +6 -6
- data/lib/padrino-gen/generators/model.rb +20 -21
- data/lib/padrino-gen/generators/plugin.rb +9 -9
- data/lib/padrino-gen/generators/project/config/apps.rb.tt +4 -4
- data/lib/padrino-gen/generators/project/config/boot.rb +2 -2
- data/lib/padrino-gen/generators/project/config.ru +1 -1
- data/lib/padrino-gen/generators/project.rb +49 -51
- data/lib/padrino-gen/generators/runner.rb +25 -24
- data/lib/padrino-gen/generators/task.rb +7 -8
- data/lib/padrino-gen/generators/templates/Gemfile.tt +5 -5
- data/lib/padrino-gen/generators/templates/controller.rb.tt +3 -3
- data/lib/padrino-gen/generators/templates/mailer.rb.tt +15 -15
- data/lib/padrino-gen/generators/templates/project_bin.tt +1 -1
- data/lib/padrino-gen/generators/templates/task.rb.tt +1 -1
- data/lib/padrino-gen/padrino-tasks/activerecord.rb +152 -160
- data/lib/padrino-gen/padrino-tasks/database.rb +2 -2
- data/lib/padrino-gen/padrino-tasks/datamapper.rb +31 -31
- data/lib/padrino-gen/padrino-tasks/minirecord.rb +3 -3
- data/lib/padrino-gen/padrino-tasks/mongoid.rb +39 -41
- data/lib/padrino-gen/padrino-tasks/mongomapper.rb +18 -14
- data/lib/padrino-gen/padrino-tasks/sequel.rb +28 -28
- data/lib/padrino-gen/padrino-tasks/sql-helpers.rb +45 -45
- data/lib/padrino-gen.rb +4 -4
- data/padrino-gen.gemspec +19 -19
- data/test/fixtures/admin_template.rb +5 -5
- data/test/fixtures/database_template.rb +19 -22
- data/test/fixtures/example_template.rb +8 -8
- data/test/fixtures/git_template.rb +2 -2
- data/test/fixtures/plugin_template.rb +3 -3
- data/test/fixtures/rake_template.rb +5 -5
- data/test/helper.rb +23 -21
- data/test/test_app_generator.rb +13 -13
- data/test/test_cli.rb +4 -5
- data/test/test_component_generator.rb +17 -17
- data/test/test_controller_generator.rb +62 -63
- data/test/test_generator.rb +6 -6
- data/test/test_helper_generator.rb +23 -24
- data/test/test_mailer_generator.rb +7 -7
- data/test/test_migration_generator.rb +31 -31
- data/test/test_model_generator.rb +80 -80
- data/test/test_plugin_generator.rb +35 -36
- data/test/test_project_generator.rb +171 -169
- data/test/test_sql_helpers.rb +49 -50
- data/test/test_task_generator.rb +13 -13
- metadata +10 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
require_relative 'helper'
|
|
2
2
|
|
|
3
|
-
describe
|
|
3
|
+
describe 'ModelGenerator' do
|
|
4
4
|
def setup
|
|
5
5
|
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{SecureRandom.hex}"
|
|
6
6
|
`mkdir -p #{@apptmp}`
|
|
@@ -12,20 +12,20 @@ describe "ModelGenerator" do
|
|
|
12
12
|
|
|
13
13
|
describe 'the model generator' do
|
|
14
14
|
it 'should fail outside app root' do
|
|
15
|
-
out,
|
|
15
|
+
out, = capture_io { generate(:model, 'user', "-r=#{@apptmp}") }
|
|
16
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
|
it 'should generate filename properly' do
|
|
21
21
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=couchrest') }
|
|
22
|
-
capture_io { generate(:model, 'DemoItem',
|
|
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
|
it 'should fail if field name is not acceptable' do
|
|
27
27
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=couchrest') }
|
|
28
|
-
out,
|
|
28
|
+
out, = capture_io { generate(:model, 'DemoItem', 're@l$ly:string', 'display-name:string', 'age&year:datetime', 'email_two:string', "-r=#{@apptmp}/sample_project") }
|
|
29
29
|
assert_match(/Invalid field name:/, out)
|
|
30
30
|
assert_match(/display-name:string/, out)
|
|
31
31
|
assert_match(/age&year:datetime/, out)
|
|
@@ -42,7 +42,7 @@ describe "ModelGenerator" do
|
|
|
42
42
|
|
|
43
43
|
it 'should not fail if we do not have test component' do
|
|
44
44
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--test=none', '-d=activerecord') }
|
|
45
|
-
|
|
45
|
+
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
|
|
@@ -50,15 +50,15 @@ describe "ModelGenerator" do
|
|
|
50
50
|
it 'should generate model in specified app' do
|
|
51
51
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper', '--script=none', '-t=bacon') }
|
|
52
52
|
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
|
53
|
-
capture_io { generate(:model, 'Post',
|
|
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")
|
|
57
|
-
assert_match_in_file(/DataMapper.finalize/m,"#{@apptmp}/sample_project/config/boot.rb")
|
|
57
|
+
assert_match_in_file(/DataMapper.finalize/m, "#{@apptmp}/sample_project/config/boot.rb")
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
it 'should generate migration file versions properly' do
|
|
61
|
-
capture_io { generate(:project, 'sample_project',
|
|
61
|
+
capture_io { generate(:project, 'sample_project', '--migration_format=number', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
|
62
62
|
capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
|
63
63
|
capture_io { generate(:model, 'account', "-r=#{@apptmp}/sample_project") }
|
|
64
64
|
capture_io { generate(:model, 'bank', "-r=#{@apptmp}/sample_project") }
|
|
@@ -68,55 +68,55 @@ describe "ModelGenerator" do
|
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
it 'should generate migration file versions properly when timestamped' do
|
|
71
|
-
capture_io { generate(:project, 'sample_project',
|
|
71
|
+
capture_io { generate(:project, 'sample_project', '--migration_format=timestamp', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
|
72
72
|
|
|
73
|
-
time = stop_time_for_test.utc.strftime(
|
|
73
|
+
time = stop_time_for_test.utc.strftime('%Y%m%d%H%M%S')
|
|
74
74
|
|
|
75
75
|
capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
|
76
76
|
assert_file_exists("#{@apptmp}/sample_project/db/migrate/#{time}_create_users.rb")
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
it 'should generate a default type value for fields' do
|
|
80
|
-
|
|
80
|
+
stop_time_for_test
|
|
81
81
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
|
82
|
-
capture_io { generate(:model, 'friend',
|
|
82
|
+
capture_io { generate(:model, 'friend', 'name', 'age:integer', 'email', "-r=#{@apptmp}/sample_project") }
|
|
83
83
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_friends.rb"
|
|
84
84
|
assert_match_in_file(/class CreateFriends < ActiveRecord::Migration/m, migration_file_path)
|
|
85
|
-
assert_match_in_file(/ create_table :friends/m,
|
|
86
|
-
assert_match_in_file(/ t.string :name/m,
|
|
87
|
-
assert_match_in_file(/ t.integer :age/m,
|
|
88
|
-
assert_match_in_file(/ t.string :email/m,
|
|
89
|
-
assert_match_in_file(/ drop_table :friends/m,
|
|
85
|
+
assert_match_in_file(/ create_table :friends/m, migration_file_path)
|
|
86
|
+
assert_match_in_file(/ t.string :name/m, migration_file_path)
|
|
87
|
+
assert_match_in_file(/ t.integer :age/m, migration_file_path)
|
|
88
|
+
assert_match_in_file(/ t.string :email/m, migration_file_path)
|
|
89
|
+
assert_match_in_file(/ drop_table :friends/m, migration_file_path)
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
it 'should abort if model name already exists' do
|
|
93
|
-
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}",
|
|
94
|
-
out,
|
|
93
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord') }
|
|
94
|
+
out, = capture_io { generate(:model, 'kernel', "--root=#{@apptmp}/sample_project") }
|
|
95
95
|
assert_match(/Kernel already exists/, out)
|
|
96
96
|
assert_no_file_exists("#{@apptmp}/sample_project/db/migrate/001_create_kernel.rb")
|
|
97
97
|
assert_no_file_exists("#{@apptmp}/sample_project/models/kernel.rb")
|
|
98
98
|
end
|
|
99
99
|
|
|
100
100
|
it 'should abort if model name already exists in root' do
|
|
101
|
-
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}",
|
|
101
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord') }
|
|
102
102
|
capture_io { generate(:app, 'user', "--root=#{@apptmp}/sample_project") }
|
|
103
|
-
out,
|
|
103
|
+
out, = capture_io { generate_with_parts(:model, 'user', "--root=#{@apptmp}/sample_project", apps: 'user') }
|
|
104
104
|
assert_file_exists("#{@apptmp}/sample_project/user/app.rb")
|
|
105
105
|
assert_no_file_exists("#{@apptmp}/sample_project/models/user.rb")
|
|
106
106
|
assert_match(/User already exists/, out)
|
|
107
107
|
end
|
|
108
108
|
|
|
109
109
|
it 'should generate model files if :force option is specified' do
|
|
110
|
-
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}",
|
|
110
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=activerecord') }
|
|
111
111
|
capture_io { generate(:app, 'user', "--root=#{@apptmp}/sample_project") }
|
|
112
|
-
|
|
112
|
+
capture_io { generate_with_parts(:model, 'user', "--root=#{@apptmp}/sample_project", '--force', apps: 'user') }
|
|
113
113
|
assert_file_exists("#{@apptmp}/sample_project/user/app.rb")
|
|
114
114
|
assert_file_exists("#{@apptmp}/sample_project/models/user.rb")
|
|
115
115
|
end
|
|
116
116
|
end
|
|
117
117
|
|
|
118
118
|
# ACTIVERECORD
|
|
119
|
-
describe
|
|
119
|
+
describe 'model generator using activerecord' do
|
|
120
120
|
it 'should add activerecord middleware' do
|
|
121
121
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=activerecord') }
|
|
122
122
|
assert_match_in_file(/ use ConnectionPoolManagement/m, "#{@apptmp}/sample_project/app/app.rb")
|
|
@@ -137,7 +137,7 @@ describe "ModelGenerator" do
|
|
|
137
137
|
end
|
|
138
138
|
|
|
139
139
|
it 'should generate migration file with no fields' do
|
|
140
|
-
|
|
140
|
+
stop_time_for_test
|
|
141
141
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
|
142
142
|
capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
|
143
143
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_users.rb"
|
|
@@ -147,9 +147,9 @@ describe "ModelGenerator" do
|
|
|
147
147
|
end
|
|
148
148
|
|
|
149
149
|
it 'should generate migration file with given fields' do
|
|
150
|
-
|
|
150
|
+
stop_time_for_test
|
|
151
151
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
|
152
|
-
capture_io { generate(:model, 'friend',
|
|
152
|
+
capture_io { generate(:model, 'friend', 'name:string', 'age:integer', 'email:string', "-r=#{@apptmp}/sample_project") }
|
|
153
153
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_friends.rb"
|
|
154
154
|
assert_match_in_file(/class CreateFriends < ActiveRecord::Migration/m, migration_file_path)
|
|
155
155
|
assert_match_in_file(/ create_table :friends/m, migration_file_path)
|
|
@@ -161,7 +161,7 @@ describe "ModelGenerator" do
|
|
|
161
161
|
end
|
|
162
162
|
|
|
163
163
|
# MINIRECORD
|
|
164
|
-
describe
|
|
164
|
+
describe 'model generator using minirecord' do
|
|
165
165
|
it 'should generate hooks for auto upgrade' do
|
|
166
166
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=minirecord') }
|
|
167
167
|
assert_match_in_file(
|
|
@@ -180,9 +180,9 @@ describe "ModelGenerator" do
|
|
|
180
180
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=minirecord') }
|
|
181
181
|
capture_io { generate(:model, 'user', 'name:string', 'surname:string', 'age:integer', "-r=#{@apptmp}/sample_project") }
|
|
182
182
|
assert_match_in_file(/class User < ActiveRecord::Base/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
183
|
-
assert_match_in_file(/field :name, :
|
|
184
|
-
assert_match_in_file(/field :surname, :
|
|
185
|
-
assert_match_in_file(/field :age, :
|
|
183
|
+
assert_match_in_file(/field :name, as: :string/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
184
|
+
assert_match_in_file(/field :surname, as: :string/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
185
|
+
assert_match_in_file(/field :age, as: :integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
186
186
|
end
|
|
187
187
|
|
|
188
188
|
it 'should generate model file with camelized name' do
|
|
@@ -194,7 +194,7 @@ describe "ModelGenerator" do
|
|
|
194
194
|
end
|
|
195
195
|
|
|
196
196
|
# COUCHREST
|
|
197
|
-
describe
|
|
197
|
+
describe 'model generator using couchrest' do
|
|
198
198
|
it 'should generate model file with no properties' do
|
|
199
199
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=couchrest') }
|
|
200
200
|
capture_io { generate(:model, 'user', "-r=#{@apptmp}/sample_project") }
|
|
@@ -204,7 +204,7 @@ describe "ModelGenerator" do
|
|
|
204
204
|
|
|
205
205
|
it 'should generate model file with given fields' do
|
|
206
206
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=couchrest') }
|
|
207
|
-
capture_io { generate(:model, 'person',
|
|
207
|
+
capture_io { generate(:model, 'person', 'name:string', 'age', 'email:string', "-r=#{@apptmp}/sample_project") }
|
|
208
208
|
assert_match_in_file(/class Person < CouchRest::Model::Base/m, "#{@apptmp}/sample_project/models/person.rb")
|
|
209
209
|
assert_match_in_file(/property :name/m, "#{@apptmp}/sample_project/models/person.rb")
|
|
210
210
|
assert_match_in_file(/property :age/m, "#{@apptmp}/sample_project/models/person.rb")
|
|
@@ -213,7 +213,7 @@ describe "ModelGenerator" do
|
|
|
213
213
|
end
|
|
214
214
|
|
|
215
215
|
# DATAMAPPER
|
|
216
|
-
describe
|
|
216
|
+
describe 'model generator using datamapper' do
|
|
217
217
|
it 'should add activerecord middleware' do
|
|
218
218
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=datamapper') }
|
|
219
219
|
assert_match_in_file(/ use IdentityMap/m, "#{@apptmp}/sample_project/app/app.rb")
|
|
@@ -229,7 +229,7 @@ describe "ModelGenerator" do
|
|
|
229
229
|
|
|
230
230
|
it 'should generate model file with fields' do
|
|
231
231
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=datamapper') }
|
|
232
|
-
capture_io { generate(:model, 'user',
|
|
232
|
+
capture_io { generate(:model, 'user', 'name:string', 'age:integer', 'created_at:datetime', "-r=#{@apptmp}/sample_project") }
|
|
233
233
|
assert_match_in_file(/class User\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
234
234
|
assert_match_in_file(/property :name, String/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
235
235
|
assert_match_in_file(/property :age, Integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
@@ -238,9 +238,9 @@ describe "ModelGenerator" do
|
|
|
238
238
|
|
|
239
239
|
it 'should properly generate version numbers' do
|
|
240
240
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=datamapper') }
|
|
241
|
-
capture_io { generate(:model, 'user',
|
|
242
|
-
capture_io { generate(:model, 'friend',
|
|
243
|
-
capture_io { generate(:model, 'account',
|
|
241
|
+
capture_io { generate(:model, 'user', 'name:string', 'age:integer', 'created_at:datetime', "-r=#{@apptmp}/sample_project") }
|
|
242
|
+
capture_io { generate(:model, 'friend', 'name:string', 'age:integer', 'created_at:datetime', "-r=#{@apptmp}/sample_project") }
|
|
243
|
+
capture_io { generate(:model, 'account', 'name:string', 'age:integer', 'created_at:datetime', "-r=#{@apptmp}/sample_project") }
|
|
244
244
|
assert_match_in_file(/class User\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
245
245
|
assert_match_in_file(/migration 1, :create_users do/m, "#{@apptmp}/sample_project/db/migrate/001_create_users.rb")
|
|
246
246
|
assert_match_in_file(/class Friend\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/friend.rb")
|
|
@@ -250,9 +250,9 @@ describe "ModelGenerator" do
|
|
|
250
250
|
end
|
|
251
251
|
|
|
252
252
|
it 'should generate migration with given fields' do
|
|
253
|
-
|
|
253
|
+
stop_time_for_test
|
|
254
254
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=datamapper') }
|
|
255
|
-
capture_io { generate(:model, 'friend',
|
|
255
|
+
capture_io { generate(:model, 'friend', 'name:string', 'created_at:date_time', 'email:string', "-r=#{@apptmp}/sample_project") }
|
|
256
256
|
assert_match_in_file(/class Friend\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/friend.rb")
|
|
257
257
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_friends.rb"
|
|
258
258
|
assert_match_in_file(/migration 1, :create_friends do/m, migration_file_path)
|
|
@@ -265,10 +265,10 @@ describe "ModelGenerator" do
|
|
|
265
265
|
end
|
|
266
266
|
|
|
267
267
|
# SEQUEL
|
|
268
|
-
describe
|
|
268
|
+
describe 'model generator using sequel' do
|
|
269
269
|
it 'should generate model file with given properties' do
|
|
270
270
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=sequel') }
|
|
271
|
-
capture_io { generate(:model, 'user',
|
|
271
|
+
capture_io { generate(:model, 'user', 'name:string', 'age:integer', 'created:datetime', "-r=#{@apptmp}/sample_project") }
|
|
272
272
|
assert_match_in_file(/class User < Sequel::Model/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
273
273
|
end
|
|
274
274
|
|
|
@@ -280,22 +280,22 @@ describe "ModelGenerator" do
|
|
|
280
280
|
end
|
|
281
281
|
|
|
282
282
|
it 'should generate migration file with given properties' do
|
|
283
|
-
|
|
283
|
+
stop_time_for_test
|
|
284
284
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=sequel') }
|
|
285
|
-
capture_io { generate(:model, 'friend',
|
|
285
|
+
capture_io { generate(:model, 'friend', 'name:string', 'age:integer', 'created:datetime', "-r=#{@apptmp}/sample_project") }
|
|
286
286
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_friends.rb"
|
|
287
287
|
assert_match_in_file(/class Friend < Sequel::Model/m, "#{@apptmp}/sample_project/models/friend.rb")
|
|
288
|
-
assert_match_in_file(/Sequel\.migration do/m,
|
|
288
|
+
assert_match_in_file(/Sequel\.migration do/m, migration_file_path)
|
|
289
289
|
assert_match_in_file(/create_table :friends/m, migration_file_path)
|
|
290
|
-
assert_match_in_file(/String :name/m,
|
|
291
|
-
assert_match_in_file(/Integer :age/m,
|
|
292
|
-
assert_match_in_file(/DateTime :created/m,
|
|
293
|
-
assert_match_in_file(/drop_table :friends/m,
|
|
290
|
+
assert_match_in_file(/String :name/m, migration_file_path)
|
|
291
|
+
assert_match_in_file(/Integer :age/m, migration_file_path)
|
|
292
|
+
assert_match_in_file(/DateTime :created/m, migration_file_path)
|
|
293
|
+
assert_match_in_file(/drop_table :friends/m, migration_file_path)
|
|
294
294
|
end
|
|
295
295
|
end
|
|
296
296
|
|
|
297
297
|
# MONGODB
|
|
298
|
-
describe
|
|
298
|
+
describe 'model generator using mongomapper' do
|
|
299
299
|
it 'should generate model file with no properties' do
|
|
300
300
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongomapper') }
|
|
301
301
|
capture_io { generate(:model, 'person', "-r=#{@apptmp}/sample_project") }
|
|
@@ -306,7 +306,7 @@ describe "ModelGenerator" do
|
|
|
306
306
|
|
|
307
307
|
it 'should generate model file with given fields' do
|
|
308
308
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongomapper') }
|
|
309
|
-
capture_io { generate(:model, 'user',
|
|
309
|
+
capture_io { generate(:model, 'user', 'name:string', 'age:integer', 'email:string', "-r=#{@apptmp}/sample_project") }
|
|
310
310
|
assert_match_in_file(/class User\n\s+include MongoMapper::Document/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
311
311
|
assert_match_in_file(/key :name, String/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
312
312
|
assert_match_in_file(/key :age, Integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
@@ -315,26 +315,26 @@ describe "ModelGenerator" do
|
|
|
315
315
|
end
|
|
316
316
|
end
|
|
317
317
|
|
|
318
|
-
describe
|
|
318
|
+
describe 'model generator using mongoid' do
|
|
319
319
|
it 'should generate model file with no properties' do
|
|
320
320
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongoid') }
|
|
321
321
|
capture_io { generate(:model, 'person', "-r=#{@apptmp}/sample_project") }
|
|
322
322
|
assert_match_in_file(/class Person\n\s+include Mongoid::Document/m, "#{@apptmp}/sample_project/models/person.rb")
|
|
323
|
-
assert_match_in_file(/# field <name>, :
|
|
323
|
+
assert_match_in_file(/# field <name>, type: <type>, default: <value>/m, "#{@apptmp}/sample_project/models/person.rb")
|
|
324
324
|
end
|
|
325
325
|
|
|
326
326
|
it 'should generate model file with given fields' do
|
|
327
327
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongoid') }
|
|
328
|
-
capture_io { generate(:model, 'user',
|
|
328
|
+
capture_io { generate(:model, 'user', 'name:string', 'age:integer', 'email:string', "-r=#{@apptmp}/sample_project") }
|
|
329
329
|
assert_match_in_file(/class User\n\s+include Mongoid::Document/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
330
|
-
assert_match_in_file(/field :name, :
|
|
331
|
-
assert_match_in_file(/field :age, :
|
|
332
|
-
assert_match_in_file(/field :email, :
|
|
330
|
+
assert_match_in_file(/field :name, type: String/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
331
|
+
assert_match_in_file(/field :age, type: Integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
332
|
+
assert_match_in_file(/field :email, type: String/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
333
333
|
end
|
|
334
334
|
end
|
|
335
335
|
|
|
336
336
|
# REDIS
|
|
337
|
-
describe
|
|
337
|
+
describe 'model generator using ohm' do
|
|
338
338
|
it 'should generate model file with no properties' do
|
|
339
339
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=ohm') }
|
|
340
340
|
capture_io { generate(:model, 'person', "-r=#{@apptmp}/sample_project") }
|
|
@@ -345,7 +345,7 @@ describe "ModelGenerator" do
|
|
|
345
345
|
|
|
346
346
|
it 'should generate model file with given fields' do
|
|
347
347
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=ohm') }
|
|
348
|
-
capture_io { generate(:model, 'user',
|
|
348
|
+
capture_io { generate(:model, 'user', 'name:string', 'age:integer', 'email:string', "-r=#{@apptmp}/sample_project") }
|
|
349
349
|
assert_match_in_file(/class User < Ohm::Model/, "#{@apptmp}/sample_project/models/user.rb")
|
|
350
350
|
assert_match_in_file(/attribute :name/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
351
351
|
assert_match_in_file(/attribute :age/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
@@ -354,7 +354,7 @@ describe "ModelGenerator" do
|
|
|
354
354
|
end
|
|
355
355
|
|
|
356
356
|
# MONGOMATIC
|
|
357
|
-
describe
|
|
357
|
+
describe 'model generator using mongomatic' do
|
|
358
358
|
it 'should generate model file with no properties' do
|
|
359
359
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongomatic') }
|
|
360
360
|
capture_io { generate(:model, 'person', "-r=#{@apptmp}/sample_project") }
|
|
@@ -364,7 +364,7 @@ describe "ModelGenerator" do
|
|
|
364
364
|
|
|
365
365
|
it 'should generate model file with given fields' do
|
|
366
366
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=mongomatic') }
|
|
367
|
-
capture_io { generate(:model, 'user',
|
|
367
|
+
capture_io { generate(:model, 'user', 'name:string', 'age:integer', 'email:string', "-r=#{@apptmp}/sample_project") }
|
|
368
368
|
assert_match_in_file(/class User < Mongomatic::Base/, "#{@apptmp}/sample_project/models/user.rb")
|
|
369
369
|
assert_match_in_file(/include Mongomatic::Expectations::Helper/, "#{@apptmp}/sample_project/models/user.rb")
|
|
370
370
|
assert_match_in_file(/be_present self\['name'\]/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
@@ -375,10 +375,10 @@ describe "ModelGenerator" do
|
|
|
375
375
|
end
|
|
376
376
|
|
|
377
377
|
# RIPPLE
|
|
378
|
-
describe
|
|
378
|
+
describe 'model generator using ripple' do
|
|
379
379
|
it 'should generate model file with no properties' do
|
|
380
380
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=ripple') }
|
|
381
|
-
capture_io { generate(:model, 'person',
|
|
381
|
+
capture_io { generate(:model, 'person', 'name:string', "-r=#{@apptmp}/sample_project") }
|
|
382
382
|
assert_match_in_file(/class Person\n\s+include Ripple::Document/m, "#{@apptmp}/sample_project/models/person.rb")
|
|
383
383
|
assert_match_in_file(/# property :name, String/m, "#{@apptmp}/sample_project/models/person.rb")
|
|
384
384
|
assert_match_in_file(/# many :addresses/m, "#{@apptmp}/sample_project/models/person.rb")
|
|
@@ -387,7 +387,7 @@ describe "ModelGenerator" do
|
|
|
387
387
|
|
|
388
388
|
it 'should generate model file with given fields' do
|
|
389
389
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=ripple') }
|
|
390
|
-
capture_io { generate(:model, 'user',
|
|
390
|
+
capture_io { generate(:model, 'user', 'name:string', 'age:integer', 'email:string', "-r=#{@apptmp}/sample_project") }
|
|
391
391
|
assert_match_in_file(/class User\n\s+include Ripple::Document/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
392
392
|
assert_match_in_file(/property :name, String/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
393
393
|
assert_match_in_file(/property :age, Integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
@@ -396,16 +396,16 @@ describe "ModelGenerator" do
|
|
|
396
396
|
end
|
|
397
397
|
|
|
398
398
|
# DYNAMOID
|
|
399
|
-
describe
|
|
399
|
+
describe 'model generator using dynamoid' do
|
|
400
400
|
it 'should generate model file with no properties' do
|
|
401
401
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=dynamoid') }
|
|
402
|
-
capture_io { generate(:model, 'person',
|
|
402
|
+
capture_io { generate(:model, 'person', 'name:string', "-r=#{@apptmp}/sample_project") }
|
|
403
403
|
assert_match_in_file(/class Person\n\s+include Dynamoid::Document/m, "#{@apptmp}/sample_project/models/person.rb")
|
|
404
404
|
end
|
|
405
405
|
|
|
406
406
|
it 'should generate model file with given fields' do
|
|
407
407
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=dynamoid') }
|
|
408
|
-
capture_io { generate(:model, 'user',
|
|
408
|
+
capture_io { generate(:model, 'user', 'name:string', 'age:integer', 'email:string', "-r=#{@apptmp}/sample_project") }
|
|
409
409
|
assert_match_in_file(/class User\n\s+include Dynamoid::Document/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
410
410
|
assert_match_in_file(/field :name, :string/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
411
411
|
assert_match_in_file(/field :age, :integer/m, "#{@apptmp}/sample_project/models/user.rb")
|
|
@@ -413,7 +413,7 @@ describe "ModelGenerator" do
|
|
|
413
413
|
end
|
|
414
414
|
end
|
|
415
415
|
|
|
416
|
-
describe
|
|
416
|
+
describe 'model generator testing files' do
|
|
417
417
|
# BACON
|
|
418
418
|
it 'should generate test file for bacon' do
|
|
419
419
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
|
@@ -422,17 +422,17 @@ describe "ModelGenerator" do
|
|
|
422
422
|
assert_match_in_file(/describe "SomeUser Model"/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
|
423
423
|
assert_match_in_file(/@some_user = SomeUser.new/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
|
424
424
|
assert_match_in_file(/@some_user\.should\.not\.be\.nil/m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
|
425
|
-
assert_match_in_file(
|
|
425
|
+
assert_match_in_file(%r{"\#\{__dir__\}(/\.\.){1}/test}m, "#{@apptmp}/sample_project/test/models/some_user_test.rb")
|
|
426
426
|
end
|
|
427
427
|
|
|
428
428
|
it 'should generate test file for bacon in specified app' do
|
|
429
429
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
|
430
430
|
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
|
431
|
-
capture_io { generate(:model, 'SomeUser',
|
|
431
|
+
capture_io { generate(:model, 'SomeUser', '-a=/subby', "-r=#{@apptmp}/sample_project") }
|
|
432
432
|
assert_match_in_file(/describe "SomeUser Model"/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
|
433
433
|
assert_match_in_file(/@some_user = SomeUser.new/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
|
434
434
|
assert_match_in_file(/@some_user\.should\.not\.be\.nil/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
|
435
|
-
assert_match_in_file(
|
|
435
|
+
assert_match_in_file(%r{"\#\{__dir__\}(/\.\.){2}/test}m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
|
436
436
|
end
|
|
437
437
|
|
|
438
438
|
# MINITEST
|
|
@@ -447,7 +447,7 @@ describe "ModelGenerator" do
|
|
|
447
447
|
it 'should generate test file for minitest in specified app' do
|
|
448
448
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=minitest', '-d=activerecord') }
|
|
449
449
|
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
|
450
|
-
capture_io { generate(:model, 'SomeUser',
|
|
450
|
+
capture_io { generate(:model, 'SomeUser', '-a=/subby', "-r=#{@apptmp}/sample_project") }
|
|
451
451
|
assert_match_in_file(/describe "SomeUser Model"/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
|
452
452
|
assert_match_in_file(/refute_nil @some_user/m, "#{@apptmp}/sample_project/test/subby/models/some_user_test.rb")
|
|
453
453
|
end
|
|
@@ -465,7 +465,7 @@ describe "ModelGenerator" do
|
|
|
465
465
|
it 'should generate test file for rspec in specified app' do
|
|
466
466
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec', '-d=activerecord') }
|
|
467
467
|
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
|
468
|
-
capture_io { generate(:model, 'SomeUser',
|
|
468
|
+
capture_io { generate(:model, 'SomeUser', '-a=/subby', "-r=#{@apptmp}/sample_project") }
|
|
469
469
|
assert_match_in_file(/describe SomeUser do/m, "#{@apptmp}/sample_project/spec/subby/models/some_user_spec.rb")
|
|
470
470
|
# assert_match_in_file(/let\(:some_user\) \{ SomeUser.new \}/m, "#{@apptmp}/sample_project/spec/subby/models/some_user_spec.rb")
|
|
471
471
|
# assert_match_in_file(/some_user\.should_not be_nil/m, "#{@apptmp}/sample_project/spec/subby/models/some_user_spec.rb")
|
|
@@ -480,22 +480,22 @@ describe "ModelGenerator" do
|
|
|
480
480
|
assert_match_in_file(/context "SomePerson Model"/m, "#{@apptmp}/sample_project/test/models/some_person_test.rb")
|
|
481
481
|
assert_match_in_file(/@some_person = SomePerson.new/m, "#{@apptmp}/sample_project/test/models/some_person_test.rb")
|
|
482
482
|
assert_match_in_file(/assert_not_nil @some_person/m, "#{@apptmp}/sample_project/test/models/some_person_test.rb")
|
|
483
|
-
assert_match_in_file(
|
|
483
|
+
assert_match_in_file(%r{"\#\{__dir__\}(/\.\.){1}/test}m, "#{@apptmp}/sample_project/test/models/some_person_test.rb")
|
|
484
484
|
end
|
|
485
485
|
|
|
486
486
|
it 'should generate test file for shoulda in specified app' do
|
|
487
487
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=shoulda', '-d=activerecord') }
|
|
488
488
|
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
|
489
|
-
capture_io { generate(:model, 'SomePerson',
|
|
489
|
+
capture_io { generate(:model, 'SomePerson', '-a=/subby', "-r=#{@apptmp}/sample_project") }
|
|
490
490
|
assert_match_in_file(/class SomePersonTest < Test::Unit::TestCase/m, "#{@apptmp}/sample_project/test/subby/models/some_person_test.rb")
|
|
491
491
|
assert_match_in_file(/context "SomePerson Model"/m, "#{@apptmp}/sample_project/test/subby/models/some_person_test.rb")
|
|
492
492
|
assert_match_in_file(/@some_person = SomePerson.new/m, "#{@apptmp}/sample_project/test/subby/models/some_person_test.rb")
|
|
493
493
|
assert_match_in_file(/assert_not_nil @some_person/m, "#{@apptmp}/sample_project/test/subby/models/some_person_test.rb")
|
|
494
|
-
assert_match_in_file(
|
|
494
|
+
assert_match_in_file(%r{"\#\{__dir__\}(/\.\.){2}/test}m, "#{@apptmp}/sample_project/test/subby/models/some_person_test.rb")
|
|
495
495
|
end
|
|
496
496
|
end
|
|
497
497
|
|
|
498
|
-
describe
|
|
498
|
+
describe 'the model destroy option' do
|
|
499
499
|
module ActiveRecord
|
|
500
500
|
Base = Class.new
|
|
501
501
|
end
|
|
@@ -519,8 +519,8 @@ describe "ModelGenerator" do
|
|
|
519
519
|
it 'should destroy the model test file in a sub app' do
|
|
520
520
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
|
521
521
|
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
|
522
|
-
capture_io { generate(:model, 'User',
|
|
523
|
-
capture_io { generate_with_parts(:model, 'User',
|
|
522
|
+
capture_io { generate(:model, 'User', '-a=/subby', "-r=#{@apptmp}/sample_project") }
|
|
523
|
+
capture_io { generate_with_parts(:model, 'User', '-a=/subby', "-r=#{@apptmp}/sample_project", '-d', apps: 'subby') }
|
|
524
524
|
assert_no_file_exists("#{@apptmp}/sample_project/subby/models/user.rb")
|
|
525
525
|
assert_no_file_exists("#{@apptmp}/sample_project/test/subby/models/user_test.rb")
|
|
526
526
|
assert_no_file_exists("#{@apptmp}/sample_project/db/migrate/001_create_users.rb")
|