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
data/test/helper.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
require File.expand_path('../../../load_paths', __FILE__)
|
2
|
-
require 'test
|
2
|
+
require File.join(File.dirname(__FILE__), '..', '..', 'padrino-core', 'test', 'mini_shoulda')
|
3
3
|
require 'rack/test'
|
4
4
|
require 'rack'
|
5
5
|
require 'uuid'
|
6
|
-
require 'shoulda'
|
7
|
-
require 'mocha'
|
8
6
|
require 'webrat'
|
9
7
|
require 'grit'
|
10
8
|
require 'thor/group'
|
@@ -14,7 +12,7 @@ require 'padrino-core/support_lite' unless defined?(SupportLite)
|
|
14
12
|
|
15
13
|
Padrino::Generators.load_components!
|
16
14
|
|
17
|
-
class
|
15
|
+
class MiniTest::Spec
|
18
16
|
include Rack::Test::Methods
|
19
17
|
include Webrat::Methods
|
20
18
|
include Webrat::Matchers
|
@@ -108,10 +106,6 @@ class Test::Unit::TestCase
|
|
108
106
|
Thor::Actions::CreateFile.expects(:new).with(anything, path, kind_of(Proc), anything).returns(instance)
|
109
107
|
end
|
110
108
|
|
111
|
-
def expects
|
112
|
-
|
113
|
-
end
|
114
|
-
|
115
109
|
# expects_rake "custom"
|
116
110
|
def expects_rake(command,options={})
|
117
111
|
#options.reverse_merge!(:root => '/tmp')
|
@@ -133,18 +127,6 @@ class Test::Unit::TestCase
|
|
133
127
|
|
134
128
|
end
|
135
129
|
|
136
|
-
class Object
|
137
|
-
# Silences the output by redirecting to stringIO
|
138
|
-
# silence_logger { ...commands... } => "...output..."
|
139
|
-
def silence_logger(&block)
|
140
|
-
orig_stdout = $stdout
|
141
|
-
$stdout = log_buffer = StringIO.new
|
142
|
-
block.call
|
143
|
-
$stdout = orig_stdout
|
144
|
-
log_buffer.rewind && log_buffer.read
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
130
|
module Webrat
|
149
131
|
module Logging
|
150
132
|
def logger # # @private
|
data/test/test_app_generator.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
2
|
|
3
|
-
|
3
|
+
describe "AppGenerator" do
|
4
4
|
def setup
|
5
5
|
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{UUID.new.generate}"
|
6
6
|
`mkdir -p #{@apptmp}`
|
@@ -12,14 +12,14 @@ class TestAppGenerator < Test::Unit::TestCase
|
|
12
12
|
|
13
13
|
context 'the app generator' do
|
14
14
|
should "fail outside app root" do
|
15
|
-
|
16
|
-
assert_match(/not at the root/,
|
15
|
+
out, err = capture_io { generate(:app, 'demo_root', "-r=#{@apptmp}") }
|
16
|
+
assert_match(/not at the root/, out)
|
17
17
|
assert_no_file_exists("#{@apptmp}/demo_root")
|
18
18
|
end
|
19
19
|
|
20
20
|
should "create correctly a new padrino application" do
|
21
|
-
|
22
|
-
|
21
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
22
|
+
capture_io { generate(:app, 'demo', "--root=#{@apptmp}/sample_project") }
|
23
23
|
assert_file_exists("#{@apptmp}/sample_project")
|
24
24
|
assert_file_exists("#{@apptmp}/sample_project/demo")
|
25
25
|
assert_file_exists("#{@apptmp}/sample_project/demo/app.rb")
|
@@ -35,8 +35,8 @@ class TestAppGenerator < Test::Unit::TestCase
|
|
35
35
|
end
|
36
36
|
|
37
37
|
should "generate tiny app skeleton" do
|
38
|
-
|
39
|
-
|
38
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
39
|
+
capture_io { generate(:app, 'demo','--tiny',"--root=#{@apptmp}/sample_project") }
|
40
40
|
assert_file_exists("#{@apptmp}/sample_project")
|
41
41
|
assert_file_exists("#{@apptmp}/sample_project/demo")
|
42
42
|
assert_file_exists("#{@apptmp}/sample_project/demo/helpers.rb")
|
@@ -49,27 +49,27 @@ class TestAppGenerator < Test::Unit::TestCase
|
|
49
49
|
end
|
50
50
|
|
51
51
|
should "correctly create a new controller inside a padrino application" do
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
53
|
+
capture_io { generate(:app, 'demo', "--root=#{@apptmp}/sample_project") }
|
54
|
+
capture_io { generate(:controller, 'demo_items', "-r=#{@apptmp}/sample_project", '-a=demo') }
|
55
55
|
assert_match_in_file(/Demo.controllers :demo_items do/m, "#{@apptmp}/sample_project/demo/controllers/demo_items.rb")
|
56
56
|
assert_match_in_file(/Demo.helpers do/m, "#{@apptmp}/sample_project/demo/helpers/demo_items_helper.rb")
|
57
57
|
assert_file_exists("#{@apptmp}/sample_project/demo/views/demo_items")
|
58
58
|
end
|
59
59
|
|
60
60
|
should "correctly create a new mailer inside a padrino application" do
|
61
|
-
|
62
|
-
|
63
|
-
|
61
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
62
|
+
capture_io { generate(:app, 'demo_app', "--root=#{@apptmp}/sample_project") }
|
63
|
+
capture_io { generate(:mailer, 'demo', "-r=#{@apptmp}/sample_project", '-a=demoapp') }
|
64
64
|
end
|
65
65
|
|
66
66
|
# only destroys what it generated.
|
67
67
|
# hence, the folder will still exists if other changes were made to it.
|
68
68
|
should "destroys itself" do
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
assert_no_match(/has been mounted/,
|
69
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
70
|
+
capture_io { generate(:app, 'demo', "--root=#{@apptmp}/sample_project") }
|
71
|
+
out, err = capture_io { generate(:app, 'demo', "--root=#{@apptmp}/sample_project", '-d') }
|
72
|
+
assert_no_match(/has been mounted/, out)
|
73
73
|
assert_no_dir_exists("#{@apptmp}/sample_project/public/demo")
|
74
74
|
assert_no_file_exists("#{@apptmp}/sample_project/demo/app.rb")
|
75
75
|
assert_no_dir_exists("#{@apptmp}/sample_project/demo/controllers")
|
data/test/test_cli.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
2
|
require 'padrino-gen/generators/cli'
|
3
3
|
|
4
|
-
|
4
|
+
describe "Cli" do
|
5
5
|
def setup
|
6
6
|
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{UUID.new.generate}"
|
7
7
|
`mkdir -p #{@apptmp}`
|
@@ -14,13 +14,14 @@ class TestCli < Test::Unit::TestCase
|
|
14
14
|
context 'the cli' do
|
15
15
|
|
16
16
|
should "fail without arguments" do
|
17
|
-
|
18
|
-
assert_match
|
17
|
+
out, err = capture_io { generate(:cli) }
|
18
|
+
assert_match(/Please specify generator to use/, out)
|
19
19
|
end
|
20
20
|
|
21
21
|
should "work correctly if we have a project" do
|
22
|
-
|
23
|
-
|
22
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
23
|
+
capture_io { generate(:cli, "--root=#{@apptmp}/sample_project") }
|
24
|
+
skip "Make a great asserition"
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
2
|
|
3
|
-
|
3
|
+
describe "ControllerGenerator" do
|
4
4
|
def setup
|
5
5
|
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{UUID.new.generate}"
|
6
6
|
`mkdir -p #{@apptmp}`
|
@@ -14,14 +14,14 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
14
14
|
|
15
15
|
context 'the controller generator' do
|
16
16
|
should "fail outside app root" do
|
17
|
-
|
18
|
-
assert_match(/not at the root/,
|
17
|
+
out, err = capture_io { generate(:controller, 'demo', "-r=#{@apptmp}") }
|
18
|
+
assert_match(/not at the root/, out)
|
19
19
|
assert_no_file_exists("#{@apptmp}/app/controllers/demo.rb")
|
20
20
|
end
|
21
21
|
|
22
22
|
should "generate controller within existing project" do
|
23
|
-
|
24
|
-
|
23
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
24
|
+
capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project") }
|
25
25
|
assert_match_in_file(/SampleProject.controllers :demo_items do/m, @controller_path)
|
26
26
|
assert_match_in_file(/SampleProject.helpers do/m, "#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
|
27
27
|
assert_file_exists("#{@apptmp}/sample_project/app/views/demo_items")
|
@@ -29,17 +29,17 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
29
29
|
end
|
30
30
|
|
31
31
|
should "generate controller within existing project with weird name" do
|
32
|
-
|
33
|
-
|
32
|
+
capture_io { generate(:project, 'warepedia', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
33
|
+
capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/warepedia") }
|
34
34
|
assert_match_in_file(/Warepedia.controllers :demo_items do/m, "#{@apptmp}/warepedia/app/controllers/demo_items.rb")
|
35
35
|
assert_match_in_file(/Warepedia.helpers do/m, "#{@apptmp}/warepedia/app/helpers/demo_items_helper.rb")
|
36
36
|
assert_file_exists("#{@apptmp}/warepedia/app/views/demo_items")
|
37
37
|
end
|
38
38
|
|
39
39
|
should "generate controller in specified app" do
|
40
|
-
|
41
|
-
|
42
|
-
|
40
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
41
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
42
|
+
capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
|
43
43
|
assert_match_in_file(/Subby.controllers :demo_items do/m, @controller_path.gsub('app','subby'))
|
44
44
|
assert_match_in_file(/Subby.helpers do/m, "#{@apptmp}/sample_project/subby/helpers/demo_items_helper.rb")
|
45
45
|
assert_file_exists("#{@apptmp}/sample_project/subby/views/demo_items")
|
@@ -47,8 +47,8 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
47
47
|
end
|
48
48
|
|
49
49
|
should 'not fail if we don\'t have test component' do
|
50
|
-
|
51
|
-
|
50
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--test=none') }
|
51
|
+
capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project") }
|
52
52
|
assert_match_in_file(/SampleProject.controllers :demo_items do/m, @controller_path)
|
53
53
|
assert_match_in_file(/SampleProject.helpers do/m, "#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
|
54
54
|
assert_file_exists("#{@apptmp}/sample_project/app/views/demo_items")
|
@@ -56,40 +56,48 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
56
56
|
end
|
57
57
|
|
58
58
|
should "generate controller test for bacon" do
|
59
|
-
|
60
|
-
|
61
|
-
|
59
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
60
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
61
|
+
capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
|
62
62
|
assert_match_in_file(/(\/\.\.){2}/m, @controller_test_path.gsub('app','subby'))
|
63
63
|
assert_match_in_file(/describe "DemoItemsController" do/m, @controller_test_path.gsub('app','subby'))
|
64
64
|
end
|
65
65
|
|
66
66
|
should "generate controller test for riot" do
|
67
|
-
|
68
|
-
|
69
|
-
|
67
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=riot') }
|
68
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
69
|
+
capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
|
70
70
|
assert_match_in_file(/(\/\.\.){2}/m, @controller_test_path.gsub('app','subby'))
|
71
71
|
assert_match_in_file(/context "DemoItemsController" do/m, @controller_test_path.gsub('app','subby'))
|
72
72
|
end
|
73
73
|
|
74
|
+
should "generate controller test for minitest" do
|
75
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=minitest') }
|
76
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
77
|
+
capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
|
78
|
+
assert_match_in_file(/(\/\.\.){2}/m, @controller_test_path.gsub('app', 'subby'))
|
79
|
+
assert_match_in_file(/describe "DemoItemsController" do/m, @controller_test_path.gsub('app', 'subby'))
|
80
|
+
end
|
81
|
+
|
74
82
|
should "generate controller test for testspec" do
|
75
|
-
|
76
|
-
|
77
|
-
|
83
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=testspec') }
|
84
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
85
|
+
capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
|
78
86
|
assert_match_in_file(/(\/\.\.){2}/m, @controller_test_path.gsub('app','subby'))
|
79
87
|
assert_match_in_file(/context "DemoItemsController" do/m, @controller_test_path.gsub('app','subby'))
|
80
88
|
end
|
81
89
|
|
82
90
|
should "generate controller test for rspec" do
|
83
|
-
|
84
|
-
|
85
|
-
|
91
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
|
92
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
93
|
+
capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
|
86
94
|
assert_match_in_file(/describe "DemoItemsController" do/m, "#{@apptmp}/sample_project/spec/subby/controllers/demo_items_controller_spec.rb")
|
87
95
|
end
|
88
96
|
|
89
97
|
should "generate controller test for shoulda" do
|
90
|
-
|
91
|
-
|
92
|
-
|
98
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=shoulda') }
|
99
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
100
|
+
capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
|
93
101
|
expected_pattern = /class DemoItemsControllerTest < Test::Unit::TestCase/m
|
94
102
|
assert_match_in_file(expected_pattern, @controller_test_path.gsub('app','subby'))
|
95
103
|
assert_match_in_file(/(\/\.\.){2}/m, @controller_test_path.gsub('app','subby'))
|
@@ -97,16 +105,16 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
97
105
|
end
|
98
106
|
|
99
107
|
should "generate controller test for cucumber" do
|
100
|
-
|
101
|
-
|
102
|
-
|
108
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=cucumber') }
|
109
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
110
|
+
capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
|
103
111
|
assert_match_in_file(/describe "DemoItemsController" do/m, "#{@apptmp}/sample_project/spec/subby/controllers/demo_items_controller_spec.rb")
|
104
112
|
assert_match_in_file(/Capybara.app = /, "#{@apptmp}/sample_project/features/support/env.rb")
|
105
113
|
end
|
106
114
|
|
107
115
|
should "correctly generate file names" do
|
108
|
-
|
109
|
-
|
116
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
|
117
|
+
capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project") }
|
110
118
|
assert_file_exists("#{@apptmp}/sample_project/app/views/demo_items")
|
111
119
|
assert_file_exists("#{@apptmp}/sample_project/app/controllers/demo_items.rb")
|
112
120
|
assert_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
|
@@ -115,8 +123,8 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
115
123
|
|
116
124
|
# Controller action generation
|
117
125
|
should "generate actions for get:test post:yada" do
|
118
|
-
|
119
|
-
|
126
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=shoulda') }
|
127
|
+
capture_io { generate(:controller, 'demo_items', "get:test", "post:yada","-r=#{@apptmp}/sample_project") }
|
120
128
|
assert_match_in_file(/get :test do\n end\n/m, @controller_path)
|
121
129
|
assert_match_in_file(/post :yada do\n end\n/m, @controller_path)
|
122
130
|
end
|
@@ -124,28 +132,28 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
124
132
|
|
125
133
|
context "the controller destroy option" do
|
126
134
|
should "destroy controller files" do
|
127
|
-
|
128
|
-
|
129
|
-
|
135
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
136
|
+
capture_io { generate(:controller, 'demo_items',"-r=#{@apptmp}/sample_project") }
|
137
|
+
capture_io { generate(:controller, 'demo_items',"-r=#{@apptmp}/sample_project",'-d') }
|
130
138
|
assert_no_file_exists(@controller_path)
|
131
139
|
assert_no_file_exists(@controller_test_path)
|
132
140
|
assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
|
133
141
|
end
|
134
142
|
|
135
143
|
should "destroy controller files with rspec" do
|
136
|
-
|
137
|
-
|
138
|
-
|
144
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
|
145
|
+
capture_io { generate(:controller, 'demo_items',"-r=#{@apptmp}/sample_project") }
|
146
|
+
capture_io { generate(:controller, 'demo_items',"-r=#{@apptmp}/sample_project",'-d') }
|
139
147
|
assert_no_file_exists(@controller_path)
|
140
148
|
assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
|
141
149
|
assert_no_file_exists("#{@apptmp}/sample_project/spec/app/controllers/demo_items_controller_spec.rb")
|
142
150
|
end
|
143
151
|
|
144
152
|
should "destroy controller files in sub apps" do
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
153
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
154
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
155
|
+
capture_io { generate(:controller, 'demo_items',"-a=/subby","-r=#{@apptmp}/sample_project") }
|
156
|
+
capture_io { generate(:controller, 'demo_items',"-a=/subby","-r=#{@apptmp}/sample_project",'-d') }
|
149
157
|
assert_no_file_exists(@controller_path.gsub('app','subby'))
|
150
158
|
assert_no_file_exists(@controller_test_path.gsub('app','subby'))
|
151
159
|
assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
|
data/test/test_generator.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
2
|
|
3
|
-
|
3
|
+
describe "MailerGenerator" do
|
4
4
|
def setup
|
5
5
|
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{UUID.new.generate}"
|
6
6
|
`mkdir -p #{@apptmp}`
|
@@ -12,23 +12,23 @@ class TestMailerGenerator < Test::Unit::TestCase
|
|
12
12
|
|
13
13
|
context 'the mailer generator' do
|
14
14
|
should "fail outside app root" do
|
15
|
-
|
16
|
-
assert_match(/not at the root/,
|
15
|
+
out, err = capture_io { generate(:mailer, 'demo', "-r=#{@apptmp}") }
|
16
|
+
assert_match(/not at the root/, out)
|
17
17
|
assert_no_file_exists('/tmp/app/mailers/demo_mailer.rb')
|
18
18
|
end
|
19
19
|
|
20
20
|
should "generate mailer in specified app" do
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
22
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
23
|
+
capture_io { generate(:mailer, 'demo', '-a=/subby', "-r=#{@apptmp}/sample_project") }
|
24
24
|
assert_match_in_file(/Subby.mailer :demo/m, "#{@apptmp}/sample_project/subby/mailers/demo.rb")
|
25
25
|
assert_dir_exists("#{@apptmp}/sample_project/subby/views/mailers/demo")
|
26
26
|
end
|
27
27
|
|
28
28
|
should "generate mailer in specified app with actions" do
|
29
|
-
|
30
|
-
|
31
|
-
|
29
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
30
|
+
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
31
|
+
capture_io { generate(:mailer, 'demo', 'action1', 'action2', '-a=/subby', "-r=#{@apptmp}/sample_project") }
|
32
32
|
assert_match_in_file(/Subby.mailer :demo/m, "#{@apptmp}/sample_project/subby/mailers/demo.rb")
|
33
33
|
assert_match_in_file(/email :action1 do.*?end/m, "#{@apptmp}/sample_project/subby/mailers/demo.rb")
|
34
34
|
assert_match_in_file(/email :action2 do.*?end/m, "#{@apptmp}/sample_project/subby/mailers/demo.rb")
|
@@ -36,22 +36,22 @@ class TestMailerGenerator < Test::Unit::TestCase
|
|
36
36
|
end
|
37
37
|
|
38
38
|
should "support generating a new mailer extended from base" do
|
39
|
-
|
40
|
-
|
39
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
40
|
+
capture_io { generate(:mailer, 'demo', "-r=#{@apptmp}/sample_project") }
|
41
41
|
assert_match_in_file(/SampleProject.mailer :demo/m, "#{@apptmp}/sample_project/app/mailers/demo.rb")
|
42
42
|
assert_dir_exists("#{@apptmp}/sample_project/app/views/mailers/demo")
|
43
43
|
end
|
44
44
|
|
45
45
|
should "support generating a new mailer extended from base with long name" do
|
46
|
-
|
47
|
-
|
46
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
47
|
+
capture_io { generate(:mailer, 'UserNotice', "-r=#{@apptmp}/sample_project") }
|
48
48
|
assert_match_in_file(/SampleProject.mailer :user_notice/m, "#{@apptmp}/sample_project/app/mailers/user_notice.rb")
|
49
49
|
assert_dir_exists("#{@apptmp}/sample_project/app/views/mailers/user_notice")
|
50
50
|
end
|
51
51
|
|
52
52
|
should "support generating a new mailer extended from base with capitalized name" do
|
53
|
-
|
54
|
-
|
53
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
54
|
+
capture_io { generate(:mailer, 'DEMO', "-r=#{@apptmp}/sample_project") }
|
55
55
|
assert_match_in_file(/SampleProject.mailer :demo/m, "#{@apptmp}/sample_project/app/mailers/demo.rb")
|
56
56
|
assert_dir_exists("#{@apptmp}/sample_project/app/views/mailers/demo")
|
57
57
|
end
|
@@ -59,9 +59,9 @@ class TestMailerGenerator < Test::Unit::TestCase
|
|
59
59
|
|
60
60
|
context "the mailer destroy option" do
|
61
61
|
should "destroy mailer file" do
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
63
|
+
capture_io { generate(:mailer, 'demo', "-r=#{@apptmp}/sample_project") }
|
64
|
+
capture_io { generate(:mailer, 'demo', "-r=#{@apptmp}/sample_project",'-d') }
|
65
65
|
assert_no_dir_exists("#{@apptmp}/sample_project/app/views/demo")
|
66
66
|
assert_no_file_exists("#{@apptmp}/sample_project/app/mailers/demo.rb")
|
67
67
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + '/helper')
|
2
2
|
|
3
|
-
|
3
|
+
describe "MigrationGenerator" do
|
4
4
|
def setup
|
5
5
|
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{UUID.new.generate}"
|
6
6
|
`mkdir -p #{@apptmp}`
|
@@ -12,33 +12,33 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
12
12
|
|
13
13
|
context 'the migration generator' do
|
14
14
|
should "fail outside app root" do
|
15
|
-
|
16
|
-
assert_match(/not at the root/,
|
15
|
+
out, err = capture_io { generate(:migration, 'add_email_to_users', '-r=/tmp') }
|
16
|
+
assert_match(/not at the root/, out)
|
17
17
|
assert_no_file_exists("#{@apptmp}/db/migrate")
|
18
18
|
end
|
19
19
|
|
20
20
|
should "fail if we don't use an adapter" do
|
21
|
-
|
22
|
-
|
21
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
22
|
+
assert_raises(SystemExit) { capture_io { generate(:migration, 'AddEmailToUsers', "-r=#{@apptmp}/sample_project") } }
|
23
23
|
end
|
24
24
|
|
25
25
|
should "generate migration inside app root" do
|
26
|
-
|
27
|
-
response_success =
|
26
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
27
|
+
response_success = capture_io { generate(:migration, 'AddEmailToUsers', "-r=#{@apptmp}/sample_project") }
|
28
28
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_add_email_to_users.rb"
|
29
29
|
assert_match_in_file(/class AddEmailToUser/m, migration_file_path)
|
30
30
|
end
|
31
31
|
|
32
32
|
should "generate migration inside app root with lowercase migration argument" do
|
33
|
-
|
34
|
-
response_success =
|
33
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
34
|
+
response_success = capture_io { generate(:migration, 'add_email_to_users', "-r=#{@apptmp}/sample_project") }
|
35
35
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_add_email_to_users.rb"
|
36
36
|
assert_match_in_file(/class AddEmailToUsers/m, migration_file_path)
|
37
37
|
end
|
38
38
|
|
39
39
|
should "generate migration inside app root with singular table" do
|
40
|
-
|
41
|
-
|
40
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
41
|
+
capture_io { generate(:migration, 'add_email_to_user', "email:string", "-r=#{@apptmp}/sample_project") }
|
42
42
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_add_email_to_user.rb"
|
43
43
|
assert_match_in_file(/class AddEmailToUser/m, migration_file_path)
|
44
44
|
assert_match_in_file(/t.string :email/, migration_file_path)
|
@@ -46,10 +46,10 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
46
46
|
end
|
47
47
|
|
48
48
|
should "properly calculate version number" do
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=sequel') }
|
50
|
+
capture_io { generate(:migration, 'add_email_to_person', "email:string", "-r=#{@apptmp}/sample_project") }
|
51
|
+
capture_io { generate(:migration, 'add_name_to_person', "email:string", "-r=#{@apptmp}/sample_project") }
|
52
|
+
capture_io { generate(:migration, 'add_age_to_user', "email:string", "-r=#{@apptmp}/sample_project") }
|
53
53
|
assert_match_in_file(/class AddEmailToPerson/m, "#{@apptmp}/sample_project/db/migrate/001_add_email_to_person.rb")
|
54
54
|
assert_match_in_file(/class AddNameToPerson/m, "#{@apptmp}/sample_project/db/migrate/002_add_name_to_person.rb")
|
55
55
|
assert_match_in_file(/class AddAgeToUser/m, "#{@apptmp}/sample_project/db/migrate/003_add_age_to_user.rb")
|
@@ -58,8 +58,8 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
58
58
|
|
59
59
|
context 'the migration generator for activerecord' do
|
60
60
|
should "generate migration for generic needs" do
|
61
|
-
|
62
|
-
response_success =
|
61
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
62
|
+
response_success = capture_io { generate(:migration, 'ModifyUserFields', "-r=#{@apptmp}/sample_project") }
|
63
63
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_modify_user_fields.rb"
|
64
64
|
assert_match_in_file(/class ModifyUserFields/m, migration_file_path)
|
65
65
|
assert_match_in_file(/def self\.up\s+end/m, migration_file_path)
|
@@ -67,9 +67,9 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
67
67
|
end
|
68
68
|
|
69
69
|
should "generate migration for adding columns" do
|
70
|
-
|
70
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
71
71
|
migration_params = ['AddEmailToUsers', "email:string", "age:integer", "-r=#{@apptmp}/sample_project"]
|
72
|
-
response_success =
|
72
|
+
response_success = capture_io { generate(:migration, *migration_params) }
|
73
73
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_add_email_to_users.rb"
|
74
74
|
assert_match_in_file(/class AddEmailToUsers/m, migration_file_path)
|
75
75
|
assert_match_in_file(/change_table :users.*?t\.string :email/m, migration_file_path)
|
@@ -79,9 +79,9 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
79
79
|
end
|
80
80
|
|
81
81
|
should "generate migration for removing columns" do
|
82
|
-
|
82
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
83
83
|
migration_params = ['RemoveEmailFromUsers', "email:string", "age:integer", "-r=#{@apptmp}/sample_project"]
|
84
|
-
response_success =
|
84
|
+
response_success = capture_io { generate(:migration, *migration_params) }
|
85
85
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_remove_email_from_users.rb"
|
86
86
|
assert_match_in_file(/class RemoveEmailFromUsers/m, migration_file_path)
|
87
87
|
assert_match_in_file(/change_table :users.*?t\.remove :email/m, migration_file_path)
|
@@ -93,8 +93,8 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
93
93
|
|
94
94
|
context 'the migration generator for datamapper' do
|
95
95
|
should "generate migration for generic needs" do
|
96
|
-
|
97
|
-
response_success =
|
96
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=datamapper') }
|
97
|
+
response_success = capture_io { generate(:migration, 'ModifyUserFields', "-r=#{@apptmp}/sample_project") }
|
98
98
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_modify_user_fields.rb"
|
99
99
|
assert_match_in_file(/migration\s1.*?:modify_user_fields/m, migration_file_path)
|
100
100
|
assert_match_in_file(/up\sdo\s+end/m, migration_file_path)
|
@@ -102,9 +102,9 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
102
102
|
end
|
103
103
|
|
104
104
|
should "generate migration for adding columns" do
|
105
|
-
|
105
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=datamapper') }
|
106
106
|
migration_params = ['AddEmailToUsers', "email:string", "age:integer", "-r=#{@apptmp}/sample_project"]
|
107
|
-
response_success =
|
107
|
+
response_success = capture_io { generate(:migration, *migration_params) }
|
108
108
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_add_email_to_users.rb"
|
109
109
|
assert_match_in_file(/migration\s1.*?:add_email_to_users/m, migration_file_path)
|
110
110
|
assert_match_in_file(/modify_table :users.*?add_column :email, String/m, migration_file_path)
|
@@ -114,9 +114,9 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
114
114
|
end
|
115
115
|
|
116
116
|
should "generate migration for removing columns" do
|
117
|
-
|
117
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=datamapper') }
|
118
118
|
migration_params = ['RemoveEmailFromUsers', "email:string", "age:integer", "-r=#{@apptmp}/sample_project"]
|
119
|
-
response_success =
|
119
|
+
response_success = capture_io { generate(:migration, *migration_params) }
|
120
120
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_remove_email_from_users.rb"
|
121
121
|
assert_match_in_file(/migration\s1.*?:remove_email_from_users/m, migration_file_path)
|
122
122
|
assert_match_in_file(/modify_table :users.*?drop_column :email/m, migration_file_path)
|
@@ -126,10 +126,10 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
126
126
|
end
|
127
127
|
|
128
128
|
should "properly version migration files" do
|
129
|
-
|
130
|
-
response_success =
|
131
|
-
response_success =
|
132
|
-
response_success =
|
129
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=datamapper') }
|
130
|
+
response_success = capture_io { generate(:migration, 'ModifyUserFields', "-r=#{@apptmp}/sample_project") }
|
131
|
+
response_success = capture_io { generate(:migration, 'ModifyUserFields2', "-r=#{@apptmp}/sample_project") }
|
132
|
+
response_success = capture_io { generate(:migration, 'ModifyUserFields3', "-r=#{@apptmp}/sample_project") }
|
133
133
|
assert_match_in_file(/migration\s1.*?:modify_user_fields/m, "#{@apptmp}/sample_project/db/migrate/001_modify_user_fields.rb")
|
134
134
|
assert_match_in_file(/migration\s2.*?:modify_user_fields2/m, "#{@apptmp}/sample_project/db/migrate/002_modify_user_fields2.rb")
|
135
135
|
assert_match_in_file(/migration\s3.*?:modify_user_fields3/m, "#{@apptmp}/sample_project/db/migrate/003_modify_user_fields3.rb")
|
@@ -138,8 +138,8 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
138
138
|
|
139
139
|
context 'the migration generator for sequel' do
|
140
140
|
should "generate migration for generic needs" do
|
141
|
-
|
142
|
-
response_success =
|
141
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=sequel') }
|
142
|
+
response_success = capture_io { generate(:migration, 'ModifyUserFields', "-r=#{@apptmp}/sample_project") }
|
143
143
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_modify_user_fields.rb"
|
144
144
|
assert_match_in_file(/class ModifyUserFields/m, migration_file_path)
|
145
145
|
assert_match_in_file(/def\sup\s+end/m, migration_file_path)
|
@@ -147,9 +147,9 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
147
147
|
end
|
148
148
|
|
149
149
|
should "generate migration for adding columns" do
|
150
|
-
|
150
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=sequel') }
|
151
151
|
migration_params = ['AddEmailToUsers', "email:string", "age:integer", "-r=#{@apptmp}/sample_project"]
|
152
|
-
response_success =
|
152
|
+
response_success = capture_io { generate(:migration, *migration_params) }
|
153
153
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_add_email_to_users.rb"
|
154
154
|
assert_match_in_file(/class AddEmailToUsers/m, migration_file_path)
|
155
155
|
assert_match_in_file(/alter_table :users.*?add_column :email, String/m, migration_file_path)
|
@@ -159,9 +159,9 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
159
159
|
end
|
160
160
|
|
161
161
|
should "generate migration for removing columns" do
|
162
|
-
|
162
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=sequel') }
|
163
163
|
migration_params = ['RemoveEmailFromUsers', "email:string", "age:integer", "-r=#{@apptmp}/sample_project"]
|
164
|
-
response_success =
|
164
|
+
response_success = capture_io { generate(:migration, *migration_params) }
|
165
165
|
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_remove_email_from_users.rb"
|
166
166
|
assert_match_in_file(/class RemoveEmailFromUsers/m, migration_file_path)
|
167
167
|
assert_match_in_file(/alter_table :users.*?drop_column :email/m, migration_file_path)
|
@@ -174,20 +174,20 @@ class TestMigrationGenerator < Test::Unit::TestCase
|
|
174
174
|
context "the migration destroy option" do
|
175
175
|
|
176
176
|
should "destroy the migration files" do
|
177
|
-
|
177
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=sequel') }
|
178
178
|
migration_params = ['RemoveEmailFromUsers', "email:string", "age:integer", "-r=#{@apptmp}/sample_project"]
|
179
|
-
|
180
|
-
|
179
|
+
capture_io { generate(:migration, *migration_params) }
|
180
|
+
capture_io { generate(:migration, 'RemoveEmailFromUsers', "-r=#{@apptmp}/sample_project",'-d') }
|
181
181
|
assert_no_file_exists("#{@apptmp}/sample_project/db/migrate/001_remove_email_from_users.rb")
|
182
182
|
end
|
183
183
|
|
184
184
|
should "destroy the migration file regardless of number" do
|
185
|
-
|
185
|
+
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=sequel') }
|
186
186
|
migration_params = ['RemoveEmailFromUsers', "email:string", "age:integer", "-r=#{@apptmp}/sample_project"]
|
187
187
|
migration_param2 = ['AddEmailFromUsers', "email:string", "age:integer", "-r=#{@apptmp}/sample_project"]
|
188
|
-
|
189
|
-
|
190
|
-
|
188
|
+
capture_io { generate(:migration, *migration_param2) }
|
189
|
+
capture_io { generate(:migration, *migration_params) }
|
190
|
+
capture_io { generate(:migration, 'RemoveEmailFromUsers', "-r=#{@apptmp}/sample_project",'-d') }
|
191
191
|
assert_no_file_exists("#{@apptmp}/sample_project/db/migrate/002_remove_email_from_users.rb")
|
192
192
|
end
|
193
193
|
end
|