tennpipes-init 3.6.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +20 -0
  3. data/README.rdoc +163 -0
  4. data/Rakefile +1 -0
  5. data/bin/tennpipes-init +16 -0
  6. data/lib/tennpipes-init.rb +73 -0
  7. data/lib/tennpipes-init/command.rb +18 -0
  8. data/lib/tennpipes-init/generators/actions.rb +630 -0
  9. data/lib/tennpipes-init/generators/app.rb +75 -0
  10. data/lib/tennpipes-init/generators/app/app.rb.tt +72 -0
  11. data/lib/tennpipes-init/generators/app/app.rb.tt~ +72 -0
  12. data/lib/tennpipes-init/generators/cli.rb +57 -0
  13. data/lib/tennpipes-init/generators/component.rb +73 -0
  14. data/lib/tennpipes-init/generators/components/actions.rb +208 -0
  15. data/lib/tennpipes-init/generators/components/mocks/mocha.rb +10 -0
  16. data/lib/tennpipes-init/generators/components/mocks/rr.rb +13 -0
  17. data/lib/tennpipes-init/generators/components/orms/activerecord.rb +201 -0
  18. data/lib/tennpipes-init/generators/components/orms/couchrest.rb +55 -0
  19. data/lib/tennpipes-init/generators/components/orms/datamapper.rb +140 -0
  20. data/lib/tennpipes-init/generators/components/orms/dynamoid.rb +67 -0
  21. data/lib/tennpipes-init/generators/components/orms/minirecord.rb +165 -0
  22. data/lib/tennpipes-init/generators/components/orms/mongoid.rb +113 -0
  23. data/lib/tennpipes-init/generators/components/orms/mongomapper.rb +43 -0
  24. data/lib/tennpipes-init/generators/components/orms/mongomatic.rb +84 -0
  25. data/lib/tennpipes-init/generators/components/orms/ohm.rb +65 -0
  26. data/lib/tennpipes-init/generators/components/orms/ripple.rb +75 -0
  27. data/lib/tennpipes-init/generators/components/orms/sequel.rb +99 -0
  28. data/lib/tennpipes-init/generators/components/renderers/erb.rb +3 -0
  29. data/lib/tennpipes-init/generators/components/renderers/haml.rb +3 -0
  30. data/lib/tennpipes-init/generators/components/renderers/liquid.rb +4 -0
  31. data/lib/tennpipes-init/generators/components/renderers/slim.rb +3 -0
  32. data/lib/tennpipes-init/generators/components/scripts/dojo.rb +10 -0
  33. data/lib/tennpipes-init/generators/components/scripts/extcore.rb +10 -0
  34. data/lib/tennpipes-init/generators/components/scripts/jquery.rb +10 -0
  35. data/lib/tennpipes-init/generators/components/scripts/mootools.rb +10 -0
  36. data/lib/tennpipes-init/generators/components/scripts/prototype.rb +12 -0
  37. data/lib/tennpipes-init/generators/components/scripts/rightjs.rb +10 -0
  38. data/lib/tennpipes-init/generators/components/stylesheets/compass.rb +39 -0
  39. data/lib/tennpipes-init/generators/components/stylesheets/compass/application.scss +43 -0
  40. data/lib/tennpipes-init/generators/components/stylesheets/compass/partials/_base.scss +12 -0
  41. data/lib/tennpipes-init/generators/components/stylesheets/less.rb +25 -0
  42. data/lib/tennpipes-init/generators/components/stylesheets/sass.rb +15 -0
  43. data/lib/tennpipes-init/generators/components/stylesheets/scss.rb +16 -0
  44. data/lib/tennpipes-init/generators/components/tests/bacon.rb +103 -0
  45. data/lib/tennpipes-init/generators/components/tests/cucumber.rb +86 -0
  46. data/lib/tennpipes-init/generators/components/tests/minitest.rb +110 -0
  47. data/lib/tennpipes-init/generators/components/tests/riot.rb +117 -0
  48. data/lib/tennpipes-init/generators/components/tests/rspec.rb +111 -0
  49. data/lib/tennpipes-init/generators/components/tests/shoulda.rb +114 -0
  50. data/lib/tennpipes-init/generators/components/tests/steak.rb +114 -0
  51. data/lib/tennpipes-init/generators/controller.rb +77 -0
  52. data/lib/tennpipes-init/generators/helper.rb +50 -0
  53. data/lib/tennpipes-init/generators/mailer.rb +52 -0
  54. data/lib/tennpipes-init/generators/migration.rb +43 -0
  55. data/lib/tennpipes-init/generators/model.rb +113 -0
  56. data/lib/tennpipes-init/generators/plugin.rb +67 -0
  57. data/lib/tennpipes-init/generators/project.rb +160 -0
  58. data/lib/tennpipes-init/generators/project/config.ru +9 -0
  59. data/lib/tennpipes-init/generators/project/config/apps.rb.tt +35 -0
  60. data/lib/tennpipes-init/generators/project/config/boot.rb +49 -0
  61. data/lib/tennpipes-init/generators/project/public/favicon.ico +0 -0
  62. data/lib/tennpipes-init/generators/project/public/images/booking.com.png +0 -0
  63. data/lib/tennpipes-init/generators/project/public/images/causes.png +0 -0
  64. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bg.jpg +0 -0
  65. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bluelogo.png +0 -0
  66. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_bluelogo.svg +68 -0
  67. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_whitelogo.png +0 -0
  68. data/lib/tennpipes-init/generators/project/public/images/ennkeypee_whitelogo.svg +65 -0
  69. data/lib/tennpipes-init/generators/project/public/images/forever21.png +0 -0
  70. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.eot +0 -0
  71. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.svg +970 -0
  72. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.ttf +0 -0
  73. data/lib/tennpipes-init/generators/project/public/images/icons/foundation-icons.woff +0 -0
  74. data/lib/tennpipes-init/generators/project/public/images/icons/tennpipes-icons.css +598 -0
  75. data/lib/tennpipes-init/generators/project/public/images/image1.jpg +0 -0
  76. data/lib/tennpipes-init/generators/project/public/images/image11.jpg +0 -0
  77. data/lib/tennpipes-init/generators/project/public/images/image2.jpg +0 -0
  78. data/lib/tennpipes-init/generators/project/public/images/image3.jpg +0 -0
  79. data/lib/tennpipes-init/generators/project/public/images/intuit.png +0 -0
  80. data/lib/tennpipes-init/generators/project/public/images/krispykreme.png +0 -0
  81. data/lib/tennpipes-init/generators/project/public/images/placeholders/README.md +302 -0
  82. data/lib/tennpipes-init/generators/project/public/images/placeholders/bower.json +4 -0
  83. data/lib/tennpipes-init/generators/project/public/images/placeholders/composer.json +34 -0
  84. data/lib/tennpipes-init/generators/project/public/images/placeholders/gulpfile.js +92 -0
  85. data/lib/tennpipes-init/generators/project/public/images/placeholders/holder.js +1920 -0
  86. data/lib/tennpipes-init/generators/project/public/images/placeholders/holder.min.js +12 -0
  87. data/lib/tennpipes-init/generators/project/public/images/placeholders/package.json +46 -0
  88. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/holder.js +1411 -0
  89. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/augment.js +27 -0
  90. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/ondomready.js +155 -0
  91. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/lib/polyfills.js +177 -0
  92. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/scenegraph.js +101 -0
  93. data/lib/tennpipes-init/generators/project/public/images/placeholders/src/utils.js +129 -0
  94. data/lib/tennpipes-init/generators/project/public/images/priceline.com.png +0 -0
  95. data/lib/tennpipes-init/generators/project/public/images/stripe.png +0 -0
  96. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes.min.js +6081 -0
  97. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.abide.js +340 -0
  98. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.accordion.js +67 -0
  99. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.alert.js +43 -0
  100. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.clearing.js +556 -0
  101. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.dropdown.js +448 -0
  102. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.equalizer.js +77 -0
  103. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.interchange.js +354 -0
  104. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.joyride.js +932 -0
  105. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.js +703 -0
  106. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.magellan.js +203 -0
  107. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.offcanvas.js +152 -0
  108. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.orbit.js +476 -0
  109. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.reveal.js +471 -0
  110. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.slider.js +263 -0
  111. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.tab.js +237 -0
  112. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.tooltip.js +307 -0
  113. data/lib/tennpipes-init/generators/project/public/javascripts/tennpipes/tennpipes.topbar.js +452 -0
  114. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/fastclick.js +8 -0
  115. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/jquery.cookie.js +8 -0
  116. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/jquery.js +26 -0
  117. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/modernizr.js +8 -0
  118. data/lib/tennpipes-init/generators/project/public/javascripts/vendor/placeholder.js +2 -0
  119. data/lib/tennpipes-init/generators/project/public/stylesheets/app.css~ +178 -0
  120. data/lib/tennpipes-init/generators/project/public/stylesheets/app1.css~ +177 -0
  121. data/lib/tennpipes-init/generators/project/public/stylesheets/ennkeypee.css +214 -0
  122. data/lib/tennpipes-init/generators/project/public/stylesheets/ennkeypee.css~ +214 -0
  123. data/lib/tennpipes-init/generators/project/public/stylesheets/normalize.css +427 -0
  124. data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.css +6201 -0
  125. data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.css~ +6201 -0
  126. data/lib/tennpipes-init/generators/project/public/stylesheets/tennpipes.min.css +1 -0
  127. data/lib/tennpipes-init/generators/runner.rb +139 -0
  128. data/lib/tennpipes-init/generators/task.rb +45 -0
  129. data/lib/tennpipes-init/generators/templates/Gemfile.tt +32 -0
  130. data/lib/tennpipes-init/generators/templates/Rakefile.tt +8 -0
  131. data/lib/tennpipes-init/generators/templates/controller.rb.tt +22 -0
  132. data/lib/tennpipes-init/generators/templates/gem/README.md.tt +29 -0
  133. data/lib/tennpipes-init/generators/templates/gem/gemspec.tt +19 -0
  134. data/lib/tennpipes-init/generators/templates/gem/lib/libname.tt +6 -0
  135. data/lib/tennpipes-init/generators/templates/gem/lib/libname/version.tt +3 -0
  136. data/lib/tennpipes-init/generators/templates/helper.rb.tt +13 -0
  137. data/lib/tennpipes-init/generators/templates/initializer.rb.tt +5 -0
  138. data/lib/tennpipes-init/generators/templates/mailer.rb.tt +54 -0
  139. data/lib/tennpipes-init/generators/templates/project_bin.tt +14 -0
  140. data/lib/tennpipes-init/generators/templates/task.rb.tt +7 -0
  141. data/lib/tennpipes-init/tennpipes-tasks/activerecord.rb +377 -0
  142. data/lib/tennpipes-init/tennpipes-tasks/database.rb +12 -0
  143. data/lib/tennpipes-init/tennpipes-tasks/datamapper.rb +94 -0
  144. data/lib/tennpipes-init/tennpipes-tasks/minirecord.rb +19 -0
  145. data/lib/tennpipes-init/tennpipes-tasks/mongoid.rb +215 -0
  146. data/lib/tennpipes-init/tennpipes-tasks/mongomapper.rb +55 -0
  147. data/lib/tennpipes-init/tennpipes-tasks/sequel.rb +85 -0
  148. data/lib/tennpipes-init/tennpipes-tasks/sql-helpers.rb +72 -0
  149. data/test/fixtures/admin_template.rb +7 -0
  150. data/test/fixtures/example_template.rb +15 -0
  151. data/test/fixtures/git_template.rb +4 -0
  152. data/test/fixtures/plugin_template.rb +13 -0
  153. data/test/fixtures/rake_template.rb +9 -0
  154. data/test/helper.rb +103 -0
  155. data/test/test_app_generator.rb +142 -0
  156. data/test/test_cli.rb +27 -0
  157. data/test/test_component_generator.rb +98 -0
  158. data/test/test_controller_generator.rb +272 -0
  159. data/test/test_generator.rb +13 -0
  160. data/test/test_helper_generator.rb +133 -0
  161. data/test/test_mailer_generator.rb +69 -0
  162. data/test/test_migration_generator.rb +222 -0
  163. data/test/test_model_generator.rb +553 -0
  164. data/test/test_plugin_generator.rb +152 -0
  165. data/test/test_project_generator.rb +757 -0
  166. data/test/test_task_generator.rb +53 -0
  167. metadata +285 -0
@@ -0,0 +1,272 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
+
3
+ describe "ControllerGenerator" do
4
+ def setup
5
+ @apptmp = "#{Dir.tmpdir}/tennpipes-tests/#{SecureRandom.hex}"
6
+ `mkdir -p #{@apptmp}`
7
+ @controller_path = "#{@apptmp}/sample_project/app/controllers/demo_items.rb"
8
+ @controller_test_path = "#{@apptmp}/sample_project/test/app/controllers/demo_items_controller_test.rb"
9
+ @controller_with_parent_test_path = "#{@apptmp}/sample_project/test/app/controllers/user_items_controller_test.rb"
10
+ @helper_path = "#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb"
11
+ @helper_test_path = "#{@apptmp}/sample_project/test/app/helpers/demo_items_helper_test.rb"
12
+ end
13
+
14
+ def teardown
15
+ `rm -rf #{@apptmp}`
16
+ end
17
+
18
+ describe 'the controller generator' do
19
+ it 'should fail outside app root' do
20
+ out, err = capture_io { generate(:controller, 'demo', "-r=#{@apptmp}") }
21
+ assert_match(/not at the root/, out)
22
+ assert_no_file_exists("#{@apptmp}/app/controllers/demo.rb")
23
+ end
24
+
25
+ it 'should generate controller within existing project' do
26
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
27
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project") }
28
+ assert_match_in_file(/SampleProject::App.controllers :demo_items do/m, @controller_path)
29
+ assert_match_in_file(/helpers DemoItemsHelper/, @helper_path)
30
+ assert_dir_exists("#{@apptmp}/sample_project/app/views/demo_items")
31
+ assert_file_exists(@controller_test_path)
32
+ end
33
+
34
+ it 'should generate helper within existing project' do
35
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
36
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project") }
37
+ assert_match_in_file(/module SampleProject/, @helper_path)
38
+ assert_match_in_file(/class App/, @helper_path)
39
+ assert_match_in_file(/module DemoItemsHelper/, @helper_path)
40
+ assert_match_in_file(/helpers DemoItemsHelper/, @helper_path)
41
+ assert_file_exists(@helper_path)
42
+ assert_file_exists(@helper_test_path)
43
+ end
44
+
45
+ it 'should generate controller within existing project with weird name' do
46
+ capture_io { generate(:project, 'warepedia', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
47
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/warepedia") }
48
+ assert_match_in_file(/Warepedia::App.controllers :demo_items do/m, "#{@apptmp}/warepedia/app/controllers/demo_items.rb")
49
+ assert_match_in_file(/helpers DemoItemsHelper/, "#{@apptmp}/warepedia/app/helpers/demo_items_helper.rb")
50
+ assert_dir_exists("#{@apptmp}/warepedia/app/views/demo_items")
51
+ end
52
+
53
+ it 'should generate controller in specified app' do
54
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
55
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
56
+ capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
57
+ assert_match_in_file(/SampleProject::Subby.controllers :demo_items do/m, @controller_path.gsub('app','subby'))
58
+ assert_match_in_file(/helpers DemoItemsHelper/m, "#{@apptmp}/sample_project/subby/helpers/demo_items_helper.rb")
59
+ assert_dir_exists("#{@apptmp}/sample_project/subby/views/demo_items")
60
+ assert_match_in_file(/describe "\/demo_items" do/m, @controller_test_path.gsub('app','subby'))
61
+ assert_match_in_file(/get "\/demo_items"/m, @controller_test_path.gsub('app','subby'))
62
+ end
63
+
64
+ it 'should generate controller with specified layout' do
65
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
66
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project", '-l=xyzlayout') }
67
+ assert_match_in_file(/layout :xyzlayout/m, @controller_path)
68
+ end
69
+
70
+ it 'should generate controller without specified layout if empty' do
71
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
72
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project", '-l=') }
73
+ assert_no_match_in_file(/layout/m, @controller_path)
74
+ end
75
+
76
+ it 'should generate controller with specified parent' do
77
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
78
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project", '-p=user') }
79
+ assert_match_in_file(/SampleProject::App.controllers :demo_items, :parent => :user do/m, @controller_path)
80
+ assert_match_in_file(/describe "\/user\/:user_id\/demo_items" do/, @controller_test_path)
81
+ assert_match_in_file(/get "\/user\/1\/demo_items"/, @controller_test_path)
82
+ end
83
+
84
+ it 'should generate controller without specified parent' do
85
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
86
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project", '-p=') }
87
+ assert_match_in_file(/SampleProject::App.controllers :demo_items do/m, @controller_path)
88
+ end
89
+
90
+ it 'should generate controller with specified providers' do
91
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
92
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project", '-f=:html, :js') }
93
+ assert_match_in_file(/SampleProject::App.controllers :demo_items, :provides => \[:html, :js\] do/m, @controller_path)
94
+ end
95
+
96
+ it 'should generate controller without specified providers' do
97
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
98
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project", '-f=') }
99
+ assert_match_in_file(/SampleProject::App.controllers :demo_items do/m, @controller_path)
100
+ end
101
+
102
+ it 'should not fail if we do not have test component' do
103
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--test=none') }
104
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project") }
105
+ assert_match_in_file(/SampleProject::App.controllers :demo_items do/m, @controller_path)
106
+ assert_match_in_file(/helpers DemoItemsHelper/m, "#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
107
+ assert_dir_exists("#{@apptmp}/sample_project/app/views/demo_items")
108
+ assert_no_file_exists("#{@apptmp}/sample_project/test")
109
+ end
110
+
111
+ it 'should generate controller test for bacon' do
112
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
113
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
114
+ capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
115
+ capture_io { generate(:controller, 'UserItems','-a=/subby', "-r=#{@apptmp}/sample_project", "-p=user") }
116
+ assert_match_in_file(/(\/\.\.){2}/m, @controller_test_path.gsub('app','subby'))
117
+ assert_match_in_file(/describe "\/demo_items" do/m, @controller_test_path.gsub('app','subby'))
118
+ assert_match_in_file(/describe "\/user\/:user_id\/user_items"/, @controller_with_parent_test_path.gsub('app','subby'))
119
+ assert_match_in_file(/get "\/demo_items"/m, @controller_test_path.gsub('app','subby'))
120
+ assert_match_in_file(/get "\/user\/1\/user_items"/m, @controller_with_parent_test_path.gsub('app','subby'))
121
+ assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
122
+ end
123
+
124
+ it 'should generate controller test for riot' do
125
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=riot') }
126
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
127
+ capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
128
+ capture_io { generate(:controller, 'UserItems','-a=/subby', "-r=#{@apptmp}/sample_project", "-p=user") }
129
+ assert_match_in_file(/(\/\.\.){2}/m, @controller_test_path.gsub('app','subby'))
130
+ assert_match_in_file(/context "\/demo_items" do/m, @controller_test_path.gsub('app','subby'))
131
+ assert_match_in_file(/context "\/user\/:user_id\/user_items"/, @controller_with_parent_test_path.gsub('app','subby'))
132
+ assert_match_in_file(/get "\/demo_items"/m, @controller_test_path.gsub('app','subby'))
133
+ assert_match_in_file(/get "\/user\/1\/user_items"/m, @controller_with_parent_test_path.gsub('app','subby'))
134
+ assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
135
+ end
136
+
137
+ it 'should generate controller test for minitest' do
138
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=minitest') }
139
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
140
+ capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
141
+ capture_io { generate(:controller, 'UserItems','-a=/subby', "-r=#{@apptmp}/sample_project", "-p=user") }
142
+ assert_match_in_file(/(\/\.\.){2}/m, @controller_test_path.gsub('app', 'subby'))
143
+ assert_match_in_file(/describe "\/demo_items" do/m, @controller_test_path.gsub('app', 'subby'))
144
+ assert_match_in_file(/describe "\/user\/:user_id\/user_items"/, @controller_with_parent_test_path.gsub('app','subby'))
145
+ assert_match_in_file(/get "\/demo_items"/m, @controller_test_path.gsub('app','subby'))
146
+ assert_match_in_file(/get "\/user\/1\/user_items"/m, @controller_with_parent_test_path.gsub('app','subby'))
147
+ assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
148
+ end
149
+
150
+ it 'should generate controller test for rspec' do
151
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
152
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
153
+ capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
154
+ capture_io { generate(:controller, 'UserItems','-a=/subby', "-r=#{@apptmp}/sample_project", "-p=user") }
155
+ assert_match_in_file(/describe "\/demo_items" do/m, "#{@apptmp}/sample_project/spec/subby/controllers/demo_items_controller_spec.rb")
156
+ assert_match_in_file(/describe "\/user\/:user_id\/user_items"/,"#{@apptmp}/sample_project/spec/subby/controllers/user_items_controller_spec.rb")
157
+ assert_match_in_file(/get "\/demo_items"/m, "#{@apptmp}/sample_project/spec/subby/controllers/demo_items_controller_spec.rb")
158
+ assert_match_in_file(/get "\/user\/1\/user_items"/m, "#{@apptmp}/sample_project/spec/subby/controllers/user_items_controller_spec.rb")
159
+ assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, "#{@apptmp}/sample_project/spec/subby/helpers/demo_items_helper_spec.rb")
160
+ end
161
+
162
+ it 'should generate controller test for shoulda' do
163
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=shoulda') }
164
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
165
+ capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
166
+ capture_io { generate(:controller, 'UserItems','-a=/subby', "-r=#{@apptmp}/sample_project", "-p=user") }
167
+ expected_pattern = /class DemoItemsControllerTest < Test::Unit::TestCase/m
168
+ expected_pattern2 = /class UserItemsControllerTest < Test::Unit::TestCase/m
169
+ assert_match_in_file(expected_pattern, @controller_test_path.gsub('app','subby'))
170
+ assert_match_in_file(/(\/\.\.){2}/m, @controller_test_path.gsub('app','subby'))
171
+ assert_match_in_file(expected_pattern2, @controller_with_parent_test_path.gsub('app','subby'))
172
+ assert_match_in_file(/context "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
173
+ assert_file_exists(@helper_test_path.gsub('app','subby'))
174
+ assert_file_exists("#{@apptmp}/sample_project/test/subby/helpers/demo_items_helper_test.rb")
175
+ end
176
+
177
+ it 'should generate controller test for steak' do
178
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=steak') }
179
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
180
+ capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
181
+ capture_io { generate(:controller, 'UserItems','-a=/subby', "-r=#{@apptmp}/sample_project", "-p=user") }
182
+ assert_match_in_file(/describe "\/demo_items" do/m, "#{@apptmp}/sample_project/spec/subby/controllers/demo_items_controller_spec.rb")
183
+ assert_match_in_file(/feature "\/demo_items" do/m, "#{@apptmp}/sample_project/spec/subby/acceptance/controllers/demo_items_controller_spec.rb")
184
+ assert_match_in_file(/describe "\/user\/:user_id\/user_items" do/m, "#{@apptmp}/sample_project/spec/subby/controllers/user_items_controller_spec.rb")
185
+ assert_match_in_file(/get "\/demo_items"/m, "#{@apptmp}/sample_project/spec/subby/controllers/demo_items_controller_spec.rb")
186
+ assert_match_in_file(/get "\/user\/1\/user_items"/m, "#{@apptmp}/sample_project/spec/subby/controllers/user_items_controller_spec.rb")
187
+ assert_match_in_file(/feature "\/user\/:user_id\/user_items" do/m, "#{@apptmp}/sample_project/spec/subby/acceptance/controllers/user_items_controller_spec.rb")
188
+ assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, "#{@apptmp}/sample_project/spec/subby/helpers/demo_items_helper_spec.rb")
189
+ end
190
+
191
+ it 'should generate controller test for cucumber' do
192
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=cucumber') }
193
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
194
+ capture_io { generate(:controller, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
195
+ capture_io { generate(:controller, 'UserItems','-a=/subby', "-r=#{@apptmp}/sample_project", "-p=user") }
196
+ assert_match_in_file(/describe "\/demo_items" do/m, "#{@apptmp}/sample_project/spec/subby/controllers/demo_items_controller_spec.rb")
197
+ assert_match_in_file(/describe "\/user\/:user_id\/user_items"/, "#{@apptmp}/sample_project/spec/subby/controllers/user_items_controller_spec.rb")
198
+ assert_match_in_file(/get "\/demo_items"/m, "#{@apptmp}/sample_project/spec/subby/controllers/demo_items_controller_spec.rb")
199
+ assert_match_in_file(/get "\/user\/1\/user_items"/m, "#{@apptmp}/sample_project/spec/subby/controllers/user_items_controller_spec.rb")
200
+ assert_match_in_file(/Capybara.app = /, "#{@apptmp}/sample_project/features/support/env.rb")
201
+ end
202
+
203
+ it 'should correctly generate file names' do
204
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
205
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project") }
206
+ assert_dir_exists("#{@apptmp}/sample_project/app/views/demo_items")
207
+ assert_file_exists("#{@apptmp}/sample_project/app/controllers/demo_items.rb")
208
+ assert_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
209
+ assert_file_exists("#{@apptmp}/sample_project/spec/app/controllers/demo_items_controller_spec.rb")
210
+ assert_file_exists("#{@apptmp}/sample_project/spec/app/helpers/demo_items_helper_spec.rb")
211
+ end
212
+
213
+ # Controller action generation
214
+ it 'should generate actions for get:test post:yada' do
215
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=shoulda') }
216
+ capture_io { generate(:controller, 'demo_items', "get:test", "post:yada","-r=#{@apptmp}/sample_project") }
217
+ assert_match_in_file(/get :test do\n\n end\n/m, @controller_path)
218
+ assert_match_in_file(/post :yada do\n\n end\n/m, @controller_path)
219
+ end
220
+
221
+ describe "with 'no-helper' option" do
222
+ it 'should not generate helper within existing project' do
223
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
224
+ capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project", '--no-helper') }
225
+ assert_dir_exists("#{@apptmp}/sample_project/app/views/demo_items")
226
+ assert_file_exists("#{@apptmp}/sample_project/app/controllers/demo_items.rb")
227
+ assert_file_exists("#{@apptmp}/sample_project/spec/app/controllers/demo_items_controller_spec.rb")
228
+ assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
229
+ assert_no_file_exists("#{@apptmp}/sample_project/spec/app/helpers/demo_items_helper_spec.rb")
230
+ end
231
+ end
232
+ end
233
+
234
+ describe "the controller destroy option" do
235
+ it 'should destroy controller files' do
236
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
237
+ capture_io { generate(:controller, 'demo_items',"-r=#{@apptmp}/sample_project") }
238
+ capture_io { generate(:controller, 'demo_items',"-r=#{@apptmp}/sample_project",'-d') }
239
+ assert_no_file_exists(@controller_path)
240
+ assert_no_file_exists(@controller_test_path)
241
+ assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
242
+ end
243
+
244
+ it 'should destroy controller files with rspec' do
245
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
246
+ capture_io { generate(:controller, 'demo_items',"-r=#{@apptmp}/sample_project") }
247
+ capture_io { generate(:controller, 'demo_items',"-r=#{@apptmp}/sample_project",'-d') }
248
+ assert_no_file_exists(@controller_path)
249
+ assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
250
+ assert_no_file_exists("#{@apptmp}/sample_project/spec/app/controllers/demo_items_controller_spec.rb")
251
+ end
252
+
253
+ it 'should destroy helper files with rspec' do
254
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
255
+ capture_io { generate(:controller, 'demo_items',"-r=#{@apptmp}/sample_project") }
256
+ capture_io { generate(:controller, 'demo_items',"-r=#{@apptmp}/sample_project",'-d') }
257
+ assert_no_file_exists(@controller_path)
258
+ assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
259
+ assert_no_file_exists("#{@apptmp}/sample_project/spec/app/helpers/demo_items_helper_spec.rb")
260
+ end
261
+
262
+ it 'should destroy controller files in sub apps' do
263
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
264
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
265
+ capture_io { generate(:controller, 'demo_items',"-a=/subby","-r=#{@apptmp}/sample_project") }
266
+ capture_io { generate(:controller, 'demo_items',"-a=/subby","-r=#{@apptmp}/sample_project",'-d') }
267
+ assert_no_file_exists(@controller_path.gsub('app','subby'))
268
+ assert_no_file_exists(@controller_test_path.gsub('app','subby'))
269
+ assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
270
+ end
271
+ end
272
+ end
@@ -0,0 +1,13 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
+
3
+ describe "Generator" do
4
+ describe "the generator" do
5
+ it 'should have default generators' do
6
+ %w{controller mailer migration model app plugin component task helper}.each do |gen|
7
+ assert Tennpipes::Generators.mappings.has_key?(gen.to_sym)
8
+ assert_equal "Tennpipes::Generators::#{gen.camelize}", Tennpipes::Generators.mappings[gen.to_sym].name
9
+ assert Tennpipes::Generators.mappings[gen.to_sym].respond_to?(:start)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,133 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
+
3
+ describe "HelperGenerator" do
4
+ def setup
5
+ @apptmp = "#{Dir.tmpdir}/tennpipes-tests/#{SecureRandom.hex}"
6
+ `mkdir -p #{@apptmp}`
7
+ @helper_path = "#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb"
8
+ @helper_test_path = "#{@apptmp}/sample_project/test/app/helpers/demo_items_helper_test.rb"
9
+ end
10
+
11
+ def teardown
12
+ `rm -rf #{@apptmp}`
13
+ end
14
+
15
+ describe 'the helper generator' do
16
+ it 'should fail outside app root' do
17
+ out, err = capture_io { generate(:helper, 'demo', "-r=#{@apptmp}") }
18
+ assert_match(/not at the root/, out)
19
+ assert_no_file_exists("#{@apptmp}/app/helpers/demo_helper.rb")
20
+ end
21
+
22
+ it 'should generate helper within existing project' do
23
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
24
+ capture_io { generate(:helper, 'DemoItems', "-r=#{@apptmp}/sample_project") }
25
+ assert_match_in_file(/module SampleProject/, @helper_path)
26
+ assert_match_in_file(/class App/, @helper_path)
27
+ assert_match_in_file(/module DemoItemsHelper/, @helper_path)
28
+ assert_match_in_file(/helpers DemoItemsHelper/, @helper_path)
29
+ assert_file_exists(@helper_path)
30
+ assert_file_exists(@helper_test_path)
31
+ end
32
+
33
+ it 'should generate helper within existing project with weird name' do
34
+ capture_io { generate(:project, 'warepedia', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
35
+ capture_io { generate(:helper, 'DemoItems', "-r=#{@apptmp}/warepedia") }
36
+ assert_match_in_file(/helpers DemoItemsHelper/, "#{@apptmp}/warepedia/app/helpers/demo_items_helper.rb")
37
+ end
38
+
39
+ it 'should generate helper in specified app' do
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(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
43
+ assert_match_in_file(/helpers DemoItemsHelper/m, "#{@apptmp}/sample_project/subby/helpers/demo_items_helper.rb")
44
+ end
45
+
46
+ it 'should not fail if we do not have test component' do
47
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--test=none') }
48
+ capture_io { generate(:helper, 'DemoItems', "-r=#{@apptmp}/sample_project") }
49
+ assert_match_in_file(/helpers DemoItemsHelper/m, "#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
50
+ assert_no_file_exists("#{@apptmp}/sample_project/test")
51
+ end
52
+
53
+ it 'should generate helper test for bacon' do
54
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
55
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
56
+ capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
57
+ assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
58
+ end
59
+
60
+ it 'should generate helper test for riot' do
61
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=riot') }
62
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
63
+ capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
64
+ assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
65
+ end
66
+
67
+ it 'should generate helper test for minitest' do
68
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=minitest') }
69
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
70
+ capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
71
+ assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
72
+ end
73
+
74
+ it 'should generate helper test for rspec' do
75
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
76
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
77
+ capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
78
+ assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, "#{@apptmp}/sample_project/spec/subby/helpers/demo_items_helper_spec.rb")
79
+ end
80
+
81
+ it 'should generate helper test for shoulda' do
82
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=shoulda') }
83
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
84
+ capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
85
+ expected_pattern = /class DemoItemsHelperTest < Test::Unit::TestCase/m
86
+ assert_match_in_file(/context "SampleProject::Subby::DemoItemsHelper" do/m, @helper_test_path.gsub('app','subby'))
87
+ assert_file_exists(@helper_test_path.gsub('app','subby'))
88
+ assert_file_exists("#{@apptmp}/sample_project/test/subby/helpers/demo_items_helper_test.rb")
89
+ end
90
+
91
+ it 'should generate helper test for steak' do
92
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=steak') }
93
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
94
+ capture_io { generate(:helper, 'DemoItems','-a=/subby', "-r=#{@apptmp}/sample_project") }
95
+ assert_match_in_file(/describe "SampleProject::Subby::DemoItemsHelper" do/m, "#{@apptmp}/sample_project/spec/subby/helpers/demo_items_helper_spec.rb")
96
+ end
97
+
98
+ it 'should correctly generate file names' do
99
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
100
+ capture_io { generate(:helper, 'DemoItems', "-r=#{@apptmp}/sample_project") }
101
+ assert_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
102
+ assert_file_exists("#{@apptmp}/sample_project/spec/app/helpers/demo_items_helper_spec.rb")
103
+ end
104
+ end
105
+
106
+ describe "the helper destroy option" do
107
+ it 'should destroy helper files' do
108
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
109
+ capture_io { generate(:helper, 'demo_items',"-r=#{@apptmp}/sample_project") }
110
+ capture_io { generate(:helper, 'demo_items',"-r=#{@apptmp}/sample_project",'-d') }
111
+ assert_no_file_exists(@helper_path)
112
+ assert_no_file_exists(@helper_test_path)
113
+ assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
114
+ end
115
+
116
+ it 'should destroy helper files with rspec' do
117
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=rspec') }
118
+ capture_io { generate(:helper, 'demo_items',"-r=#{@apptmp}/sample_project") }
119
+ capture_io { generate(:helper, 'demo_items',"-r=#{@apptmp}/sample_project",'-d') }
120
+ assert_no_file_exists(@helper_path)
121
+ assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
122
+ assert_no_file_exists("#{@apptmp}/sample_project/spec/app/helpers/demo_items_helper_spec.rb")
123
+ end
124
+
125
+ it 'should destroy helper files in sub apps' do
126
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
127
+ capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
128
+ capture_io { generate(:helper, 'demo_items',"-a=/subby","-r=#{@apptmp}/sample_project") }
129
+ capture_io { generate(:helper, 'demo_items',"-a=/subby","-r=#{@apptmp}/sample_project",'-d') }
130
+ assert_no_file_exists("#{@apptmp}/sample_project/app/helpers/demo_items_helper.rb")
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,69 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helper')
2
+
3
+ describe "MailerGenerator" do
4
+ def setup
5
+ @apptmp = "#{Dir.tmpdir}/tennpipes-tests/#{SecureRandom.hex}"
6
+ `mkdir -p #{@apptmp}`
7
+ end
8
+
9
+ def teardown
10
+ `rm -rf #{@apptmp}`
11
+ end
12
+
13
+ describe 'the mailer generator' do
14
+ it 'should fail outside app root' do
15
+ out, err = capture_io { generate(:mailer, 'demo', "-r=#{@apptmp}") }
16
+ assert_match(/not at the root/, out)
17
+ assert_no_file_exists('/tmp/app/mailers/demo_mailer.rb')
18
+ end
19
+
20
+ it 'should generate mailer in specified app' do
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
+ assert_match_in_file(/SampleProject::Subby.mailer :demo/m, "#{@apptmp}/sample_project/subby/mailers/demo.rb")
25
+ assert_dir_exists("#{@apptmp}/sample_project/subby/views/mailers/demo")
26
+ end
27
+
28
+ it 'should generate mailer in specified app with actions' do
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
+ assert_match_in_file(/SampleProject::Subby.mailer :demo/m, "#{@apptmp}/sample_project/subby/mailers/demo.rb")
33
+ assert_match_in_file(/email :action1 do.*?end/m, "#{@apptmp}/sample_project/subby/mailers/demo.rb")
34
+ assert_match_in_file(/email :action2 do.*?end/m, "#{@apptmp}/sample_project/subby/mailers/demo.rb")
35
+ assert_dir_exists("#{@apptmp}/sample_project/subby/views/mailers/demo")
36
+ end
37
+
38
+ it 'should support generating a new mailer extended from base' do
39
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
40
+ capture_io { generate(:mailer, 'demo', "-r=#{@apptmp}/sample_project") }
41
+ assert_match_in_file(/SampleProject::App.mailer :demo/m, "#{@apptmp}/sample_project/app/mailers/demo.rb")
42
+ assert_dir_exists("#{@apptmp}/sample_project/app/views/mailers/demo")
43
+ end
44
+
45
+ it 'should support generating a new mailer extended from base with long name' do
46
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
47
+ capture_io { generate(:mailer, 'UserNotice', "-r=#{@apptmp}/sample_project") }
48
+ assert_match_in_file(/SampleProject::App.mailer :user_notice/m, "#{@apptmp}/sample_project/app/mailers/user_notice.rb")
49
+ assert_dir_exists("#{@apptmp}/sample_project/app/views/mailers/user_notice")
50
+ end
51
+
52
+ it 'should support generating a new mailer extended from base with capitalized name' do
53
+ capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
54
+ capture_io { generate(:mailer, 'DEMO', "-r=#{@apptmp}/sample_project") }
55
+ assert_match_in_file(/SampleProject::App.mailer :demo/m, "#{@apptmp}/sample_project/app/mailers/demo.rb")
56
+ assert_dir_exists("#{@apptmp}/sample_project/app/views/mailers/demo")
57
+ end
58
+ end
59
+
60
+ describe "the mailer destroy option" do
61
+ it 'should destroy mailer file' do
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
+ assert_no_dir_exists("#{@apptmp}/sample_project/app/views/demo")
66
+ assert_no_file_exists("#{@apptmp}/sample_project/app/mailers/demo.rb")
67
+ end
68
+ end
69
+ end