niftier-generators 0.1.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.
Files changed (106) hide show
  1. data/CHANGELOG +7 -0
  2. data/LICENSE +20 -0
  3. data/README.rdoc +89 -0
  4. data/Rakefile +18 -0
  5. data/features/niftier_authentication.feature +59 -0
  6. data/features/niftier_config.feature +17 -0
  7. data/features/niftier_layout.feature +19 -0
  8. data/features/niftier_scaffold.feature +22 -0
  9. data/features/step_definitions/common_steps.rb +37 -0
  10. data/features/step_definitions/rails_setup_steps.rb +6 -0
  11. data/features/support/env.rb +6 -0
  12. data/features/support/matchers.rb +7 -0
  13. data/lib/generators/niftier/authentication/USAGE +55 -0
  14. data/lib/generators/niftier/authentication/authentication_generator.rb +145 -0
  15. data/lib/generators/niftier/authentication/templates/authentication.rb +60 -0
  16. data/lib/generators/niftier/authentication/templates/authlogic_session.rb +2 -0
  17. data/lib/generators/niftier/authentication/templates/fixtures.yml +24 -0
  18. data/lib/generators/niftier/authentication/templates/migration.rb +20 -0
  19. data/lib/generators/niftier/authentication/templates/sessions_controller.rb +45 -0
  20. data/lib/generators/niftier/authentication/templates/sessions_helper.rb +2 -0
  21. data/lib/generators/niftier/authentication/templates/tests/rspec/sessions_controller.rb +39 -0
  22. data/lib/generators/niftier/authentication/templates/tests/rspec/user.rb +83 -0
  23. data/lib/generators/niftier/authentication/templates/tests/rspec/users_controller.rb +26 -0
  24. data/lib/generators/niftier/authentication/templates/tests/shoulda/sessions_controller.rb +40 -0
  25. data/lib/generators/niftier/authentication/templates/tests/shoulda/user.rb +85 -0
  26. data/lib/generators/niftier/authentication/templates/tests/shoulda/users_controller.rb +27 -0
  27. data/lib/generators/niftier/authentication/templates/tests/testunit/sessions_controller.rb +36 -0
  28. data/lib/generators/niftier/authentication/templates/tests/testunit/user.rb +88 -0
  29. data/lib/generators/niftier/authentication/templates/tests/testunit/users_controller.rb +23 -0
  30. data/lib/generators/niftier/authentication/templates/user.rb +42 -0
  31. data/lib/generators/niftier/authentication/templates/users_controller.rb +18 -0
  32. data/lib/generators/niftier/authentication/templates/users_helper.rb +2 -0
  33. data/lib/generators/niftier/authentication/templates/views/erb/login.html.erb +30 -0
  34. data/lib/generators/niftier/authentication/templates/views/erb/signup.html.erb +24 -0
  35. data/lib/generators/niftier/authentication/templates/views/haml/login.html.haml +30 -0
  36. data/lib/generators/niftier/authentication/templates/views/haml/signup.html.haml +24 -0
  37. data/lib/generators/niftier/config/USAGE +23 -0
  38. data/lib/generators/niftier/config/config_generator.rb +24 -0
  39. data/lib/generators/niftier/config/templates/config.yml +14 -0
  40. data/lib/generators/niftier/config/templates/load_config.rb +2 -0
  41. data/lib/generators/niftier/layout/USAGE +25 -0
  42. data/lib/generators/niftier/layout/layout_generator.rb +29 -0
  43. data/lib/generators/niftier/layout/templates/error_messages_helper.rb +23 -0
  44. data/lib/generators/niftier/layout/templates/layout.html.erb +24 -0
  45. data/lib/generators/niftier/layout/templates/layout.html.haml +26 -0
  46. data/lib/generators/niftier/layout/templates/layout_helper.rb +26 -0
  47. data/lib/generators/niftier/layout/templates/stylesheet.css +75 -0
  48. data/lib/generators/niftier/layout/templates/stylesheet.sass +66 -0
  49. data/lib/generators/niftier/scaffold/USAGE +51 -0
  50. data/lib/generators/niftier/scaffold/scaffold_generator.rb +241 -0
  51. data/lib/generators/niftier/scaffold/templates/actions/create.rb +9 -0
  52. data/lib/generators/niftier/scaffold/templates/actions/destroy.rb +6 -0
  53. data/lib/generators/niftier/scaffold/templates/actions/edit.rb +3 -0
  54. data/lib/generators/niftier/scaffold/templates/actions/index.rb +3 -0
  55. data/lib/generators/niftier/scaffold/templates/actions/new.rb +3 -0
  56. data/lib/generators/niftier/scaffold/templates/actions/show.rb +3 -0
  57. data/lib/generators/niftier/scaffold/templates/actions/update.rb +9 -0
  58. data/lib/generators/niftier/scaffold/templates/controller.rb +3 -0
  59. data/lib/generators/niftier/scaffold/templates/fixtures.yml +9 -0
  60. data/lib/generators/niftier/scaffold/templates/helper.rb +2 -0
  61. data/lib/generators/niftier/scaffold/templates/migration.rb +16 -0
  62. data/lib/generators/niftier/scaffold/templates/model.rb +3 -0
  63. data/lib/generators/niftier/scaffold/templates/tests/rspec/actions/create.rb +11 -0
  64. data/lib/generators/niftier/scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
  65. data/lib/generators/niftier/scaffold/templates/tests/rspec/actions/edit.rb +4 -0
  66. data/lib/generators/niftier/scaffold/templates/tests/rspec/actions/index.rb +4 -0
  67. data/lib/generators/niftier/scaffold/templates/tests/rspec/actions/new.rb +4 -0
  68. data/lib/generators/niftier/scaffold/templates/tests/rspec/actions/show.rb +4 -0
  69. data/lib/generators/niftier/scaffold/templates/tests/rspec/actions/update.rb +11 -0
  70. data/lib/generators/niftier/scaffold/templates/tests/rspec/controller.rb +8 -0
  71. data/lib/generators/niftier/scaffold/templates/tests/rspec/model.rb +7 -0
  72. data/lib/generators/niftier/scaffold/templates/tests/shoulda/actions/create.rb +13 -0
  73. data/lib/generators/niftier/scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
  74. data/lib/generators/niftier/scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
  75. data/lib/generators/niftier/scaffold/templates/tests/shoulda/actions/index.rb +6 -0
  76. data/lib/generators/niftier/scaffold/templates/tests/shoulda/actions/new.rb +6 -0
  77. data/lib/generators/niftier/scaffold/templates/tests/shoulda/actions/show.rb +6 -0
  78. data/lib/generators/niftier/scaffold/templates/tests/shoulda/actions/update.rb +13 -0
  79. data/lib/generators/niftier/scaffold/templates/tests/shoulda/controller.rb +5 -0
  80. data/lib/generators/niftier/scaffold/templates/tests/shoulda/model.rb +7 -0
  81. data/lib/generators/niftier/scaffold/templates/tests/testunit/actions/create.rb +11 -0
  82. data/lib/generators/niftier/scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
  83. data/lib/generators/niftier/scaffold/templates/tests/testunit/actions/edit.rb +4 -0
  84. data/lib/generators/niftier/scaffold/templates/tests/testunit/actions/index.rb +4 -0
  85. data/lib/generators/niftier/scaffold/templates/tests/testunit/actions/new.rb +4 -0
  86. data/lib/generators/niftier/scaffold/templates/tests/testunit/actions/show.rb +4 -0
  87. data/lib/generators/niftier/scaffold/templates/tests/testunit/actions/update.rb +11 -0
  88. data/lib/generators/niftier/scaffold/templates/tests/testunit/controller.rb +5 -0
  89. data/lib/generators/niftier/scaffold/templates/tests/testunit/model.rb +7 -0
  90. data/lib/generators/niftier/scaffold/templates/views/erb/_form.html.erb +10 -0
  91. data/lib/generators/niftier/scaffold/templates/views/erb/edit.html.erb +14 -0
  92. data/lib/generators/niftier/scaffold/templates/views/erb/index.html.erb +29 -0
  93. data/lib/generators/niftier/scaffold/templates/views/erb/new.html.erb +7 -0
  94. data/lib/generators/niftier/scaffold/templates/views/erb/show.html.erb +20 -0
  95. data/lib/generators/niftier/scaffold/templates/views/haml/_form.html.haml +10 -0
  96. data/lib/generators/niftier/scaffold/templates/views/haml/edit.html.haml +14 -0
  97. data/lib/generators/niftier/scaffold/templates/views/haml/index.html.haml +25 -0
  98. data/lib/generators/niftier/scaffold/templates/views/haml/new.html.haml +7 -0
  99. data/lib/generators/niftier/scaffold/templates/views/haml/show.html.haml +20 -0
  100. data/lib/generators/niftier.rb +15 -0
  101. data/test/test_helper.rb +119 -0
  102. data/test/test_niftier_authentication_generator.rb +274 -0
  103. data/test/test_niftier_config_generator.rb +37 -0
  104. data/test/test_niftier_layout_generator.rb +42 -0
  105. data/test/test_niftier_scaffold_generator.rb +534 -0
  106. metadata +173 -0
@@ -0,0 +1,274 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper.rb")
2
+
3
+ class TestNiftierAuthenticationGenerator < Test::Unit::TestCase
4
+ include NiftierGenerators::TestHelper
5
+
6
+ # Some generator-related assertions:
7
+ # assert_generated_file(name, &block) # block passed the file contents
8
+ # assert_directory_exists(name)
9
+ # assert_generated_class(name, &block)
10
+ # assert_generated_module(name, &block)
11
+ # assert_generated_test_for(name, &block)
12
+ # The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
13
+ # assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
14
+ #
15
+ # Other helper methods are:
16
+ # app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
17
+ # bare_setup - place this in setup method to create the APP_ROOT folder for each test
18
+ # bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
19
+ context "" do # empty context so we can use setup block
20
+ setup do
21
+ Rails.stubs(:version).returns("2.0.2")
22
+ Dir.mkdir("#{RAILS_ROOT}/config") unless File.exists?("#{RAILS_ROOT}/config")
23
+ File.open("#{RAILS_ROOT}/config/routes.rb", 'w') do |f|
24
+ f.puts "ActionController::Routing::Routes.draw do |map|\n\nend"
25
+ end
26
+ Dir.mkdir("#{RAILS_ROOT}/app") unless File.exists?("#{RAILS_ROOT}/app")
27
+ Dir.mkdir("#{RAILS_ROOT}/app/controllers") unless File.exists?("#{RAILS_ROOT}/app/controllers")
28
+ File.open("#{RAILS_ROOT}/app/controllers/application.rb", 'w') do |f|
29
+ f.puts "class Application < ActionController::Base\n\nend"
30
+ end
31
+ end
32
+
33
+ teardown do
34
+ FileUtils.rm_rf "#{RAILS_ROOT}/config"
35
+ FileUtils.rm_rf "#{RAILS_ROOT}/app"
36
+ end
37
+
38
+ context "generator without arguments" do
39
+ rails_generator :niftier_authentication
40
+ should_generate_file 'app/models/user.rb'
41
+ should_generate_file 'app/controllers/users_controller.rb'
42
+ should_generate_file 'app/helpers/users_helper.rb'
43
+ should_generate_file 'app/views/users/new.html.erb'
44
+ should_generate_file 'app/controllers/sessions_controller.rb'
45
+ should_generate_file 'app/helpers/sessions_helper.rb'
46
+ should_generate_file 'app/views/sessions/new.html.erb'
47
+ should_generate_file 'lib/authentication.rb'
48
+ should_generate_file 'test/fixtures/users.yml'
49
+ should_generate_file 'test/unit/user_test.rb'
50
+ should_generate_file 'test/functional/users_controller_test.rb'
51
+ should_generate_file 'test/functional/sessions_controller_test.rb'
52
+
53
+ should "generate migration file" do
54
+ assert !Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").empty?
55
+ end
56
+
57
+ should "generate routes" do
58
+ assert_generated_file "config/routes.rb" do |body|
59
+ assert_match "map.resources :sessions", body
60
+ assert_match "map.resources :users", body
61
+ assert_match "map.login 'login', :controller => 'sessions', :action => 'new'", body
62
+ assert_match "map.logout 'logout', :controller => 'sessions', :action => 'destroy'", body
63
+ assert_match "map.signup 'signup', :controller => 'users', :action => 'new'", body
64
+ end
65
+ end
66
+
67
+ should "include Authentication" do
68
+ application_controller_name = Rails.version >= '2.3.0' ? 'application_controller' : 'application'
69
+ assert_generated_file "app/controllers/#{application_controller_name}.rb" do |body|
70
+ assert_match "include Authentication", body
71
+ end
72
+ end
73
+ end
74
+
75
+ context "generator with user and session names" do
76
+ rails_generator :niftier_authentication, "Account", "CurrentSession"
77
+ should_generate_file 'app/models/account.rb'
78
+ should_generate_file 'app/controllers/accounts_controller.rb'
79
+ should_generate_file 'app/helpers/accounts_helper.rb'
80
+ should_generate_file 'app/views/accounts/new.html.erb'
81
+ should_generate_file 'app/controllers/current_sessions_controller.rb'
82
+ should_generate_file 'app/helpers/current_sessions_helper.rb'
83
+ should_generate_file 'app/views/current_sessions/new.html.erb'
84
+ should_generate_file 'test/fixtures/accounts.yml'
85
+ should_generate_file 'test/unit/account_test.rb'
86
+ should_generate_file 'test/functional/accounts_controller_test.rb'
87
+ should_generate_file 'test/functional/current_sessions_controller_test.rb'
88
+
89
+ should "generate routes" do
90
+ assert_generated_file "config/routes.rb" do |body|
91
+ assert_match "map.resources :current_sessions", body
92
+ assert_match "map.resources :accounts", body
93
+ assert_match "map.login 'login', :controller => 'current_sessions', :action => 'new'", body
94
+ assert_match "map.logout 'logout', :controller => 'current_sessions', :action => 'destroy'", body
95
+ assert_match "map.signup 'signup', :controller => 'accounts', :action => 'new'", body
96
+ end
97
+ end
98
+ end
99
+
100
+ context "generator with shoulda option" do
101
+ rails_generator :niftier_authentication, :test_framework => :shoulda
102
+
103
+ should "have controller and model tests using shoulda syntax" do
104
+ assert_generated_file "test/functional/users_controller_test.rb" do |body|
105
+ assert_match " should ", body
106
+ end
107
+ assert_generated_file "test/functional/sessions_controller_test.rb" do |body|
108
+ assert_match " should ", body
109
+ end
110
+
111
+ assert_generated_file "test/unit/user_test.rb" do |body|
112
+ assert_match " should ", body
113
+ end
114
+ end
115
+ end
116
+
117
+ context "generator with rspec option" do
118
+ rails_generator :niftier_authentication, :test_framework => :rspec
119
+ should_generate_file 'spec/fixtures/users.yml'
120
+ end
121
+
122
+ context "with spec dir" do
123
+ setup do
124
+ Dir.mkdir("#{RAILS_ROOT}/spec") unless File.exists?("#{RAILS_ROOT}/spec")
125
+ end
126
+
127
+ teardown do
128
+ FileUtils.rm_rf "#{RAILS_ROOT}/spec"
129
+ end
130
+
131
+ context "generator without arguments" do
132
+ rails_generator :niftier_authentication
133
+ should_generate_file 'spec/fixtures/users.yml'
134
+ should_generate_file 'spec/models/user_spec.rb'
135
+ should_generate_file 'spec/controllers/users_controller_spec.rb'
136
+ should_generate_file 'spec/controllers/sessions_controller_spec.rb'
137
+ end
138
+
139
+ context "generator with user and session names" do
140
+ rails_generator :niftier_authentication, "Account", "CurrentSessions"
141
+ should_generate_file 'spec/fixtures/accounts.yml'
142
+ should_generate_file 'spec/models/account_spec.rb'
143
+ should_generate_file 'spec/controllers/accounts_controller_spec.rb'
144
+ should_generate_file 'spec/controllers/current_sessions_controller_spec.rb'
145
+ end
146
+
147
+ context "generator with testunit option" do
148
+ rails_generator :niftier_authentication, :test_framework => :testunit
149
+ should_generate_file 'test/fixtures/users.yml'
150
+ end
151
+ end
152
+
153
+ context "generator with haml option" do
154
+ rails_generator :niftier_authentication, :haml => true
155
+
156
+ should_generate_file "app/views/users/new.html.haml"
157
+ should_generate_file "app/views/sessions/new.html.haml"
158
+ end
159
+
160
+ context "generator with authlogic option and custom account name" do
161
+ rails_generator :niftier_authentication, "Account", :authlogic => true
162
+ should_generate_file 'app/models/account.rb'
163
+ should_generate_file 'app/controllers/accounts_controller.rb'
164
+ should_generate_file 'app/helpers/accounts_helper.rb'
165
+ should_generate_file 'app/views/accounts/new.html.erb'
166
+ should_generate_file 'app/controllers/account_sessions_controller.rb'
167
+ should_generate_file 'app/helpers/account_sessions_helper.rb'
168
+ should_generate_file 'app/views/account_sessions/new.html.erb'
169
+ should_generate_file 'test/fixtures/accounts.yml'
170
+ should_generate_file 'test/unit/account_test.rb'
171
+ should_generate_file 'test/functional/accounts_controller_test.rb'
172
+ should_generate_file 'test/functional/account_sessions_controller_test.rb'
173
+ should_generate_file 'lib/authentication.rb'
174
+
175
+ should "only include acts_as_authentic in account model" do
176
+ assert_generated_file "app/models/account.rb" do |body|
177
+ assert_match "acts_as_authentic", body
178
+ assert_no_match(/validates/, body)
179
+ assert_no_match(/def/, body)
180
+ end
181
+ end
182
+
183
+ should "should generate authentication module with current_account_session method" do
184
+ assert_generated_file "lib/authentication.rb" do |body|
185
+ assert_match "def current_account_session", body
186
+ end
187
+ end
188
+
189
+ should "should generate AccountSession model" do
190
+ assert_generated_file "app/models/account_session.rb" do |body|
191
+ assert_match "class AccountSession < Authlogic::Session::Base", body
192
+ end
193
+ end
194
+
195
+ should "should generate restful style actions in sessions controller" do
196
+ assert_generated_file "app/controllers/account_sessions_controller.rb" do |body|
197
+ assert_match "AccountSession.new", body
198
+ end
199
+ end
200
+
201
+ should "should generate form for account session" do
202
+ assert_generated_file "app/views/account_sessions/new.html.erb" do |body|
203
+ assert_match "form_for @account_session", body
204
+ end
205
+ end
206
+
207
+ should "should not include tests in account since authlogic is already tested" do
208
+ assert_generated_file "test/unit/account_test.rb" do |body|
209
+ assert_no_match(/def test/, body)
210
+ end
211
+ end
212
+
213
+ should "should handle session controller tests differently" do
214
+ assert_generated_file "test/functional/account_sessions_controller_test.rb" do |body|
215
+ assert_match "AccountSession.find", body
216
+ end
217
+ end
218
+
219
+ should "generate migration with authlogic columns" do
220
+ file = Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").first
221
+ assert file, "migration file doesn't exist"
222
+ assert_match(/[0-9]+_create_accounts.rb$/, file)
223
+ assert_generated_file "db/migrate/#{File.basename(file)}" do |body|
224
+ assert_match "class CreateAccounts", body
225
+ assert_match "t.string :username", body
226
+ assert_match "t.string :email", body
227
+ assert_match "t.string :crypted_password", body
228
+ assert_match "t.string :password_salt", body
229
+ assert_match "t.string :persistence_token", body
230
+ assert_match "t.timestamps", body
231
+ assert_no_match(/password_hash/, body)
232
+ end
233
+ end
234
+ end
235
+
236
+ context "generator with authlogic option and custom account and session name" do
237
+ rails_generator :niftier_authentication, "Account", "UserSession", :authlogic => true
238
+ should_generate_file 'app/controllers/user_sessions_controller.rb'
239
+ should_generate_file 'app/helpers/user_sessions_helper.rb'
240
+ should_generate_file 'app/views/user_sessions/new.html.erb'
241
+ should_generate_file 'test/functional/user_sessions_controller_test.rb'
242
+
243
+ should "should generate authentication module with current_user_session method" do
244
+ assert_generated_file "lib/authentication.rb" do |body|
245
+ assert_match "def current_user_session", body
246
+ end
247
+ end
248
+
249
+ should "should generate UserSession model" do
250
+ assert_generated_file "app/models/user_session.rb" do |body|
251
+ assert_match "class UserSession < Authlogic::Session::Base", body
252
+ end
253
+ end
254
+
255
+ should "should generate restful style actions in sessions controller" do
256
+ assert_generated_file "app/controllers/user_sessions_controller.rb" do |body|
257
+ assert_match "UserSession.new", body
258
+ end
259
+ end
260
+
261
+ should "should generate form for user session" do
262
+ assert_generated_file "app/views/user_sessions/new.html.erb" do |body|
263
+ assert_match "form_for @user_session", body
264
+ end
265
+ end
266
+
267
+ should "should handle session controller tests differently" do
268
+ assert_generated_file "test/functional/user_sessions_controller_test.rb" do |body|
269
+ assert_match "UserSession.find", body
270
+ end
271
+ end
272
+ end
273
+ end
274
+ end
@@ -0,0 +1,37 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper.rb")
2
+
3
+ class TestNiftierConfigGenerator < Test::Unit::TestCase
4
+ include NiftierGenerators::TestHelper
5
+
6
+ # Some generator-related assertions:
7
+ # assert_generated_file(name, &block) # block passed the file contents
8
+ # assert_directory_exists(name)
9
+ # assert_generated_class(name, &block)
10
+ # assert_generated_module(name, &block)
11
+ # assert_generated_test_for(name, &block)
12
+ # The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
13
+ # assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
14
+ #
15
+ # Other helper methods are:
16
+ # app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
17
+ # bare_setup - place this in setup method to create the APP_ROOT folder for each test
18
+ # bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
19
+
20
+ context "generator without name" do
21
+ rails_generator :niftier_config
22
+ should_generate_file 'config/app_config.yml'
23
+ should_generate_file 'config/initializers/load_app_config.rb'
24
+ end
25
+
26
+ context "generator with name" do
27
+ rails_generator :niftier_config, "FooBar"
28
+ should_generate_file 'config/foo_bar_config.yml'
29
+
30
+ should "use the name as a constant in the initializer" do
31
+ assert_generated_file 'config/initializers/load_foo_bar_config.rb' do |body|
32
+ assert_match "config/foo_bar_config.yml", body
33
+ assert_match "FOO_BAR_CONFIG = ", body
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,42 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper.rb")
2
+
3
+ class TestNiftierLayoutGenerator < Test::Unit::TestCase
4
+ include NiftierGenerators::TestHelper
5
+
6
+ # Some generator-related assertions:
7
+ # assert_generated_file(name, &block) # block passed the file contents
8
+ # assert_directory_exists(name)
9
+ # assert_generated_class(name, &block)
10
+ # assert_generated_module(name, &block)
11
+ # assert_generated_test_for(name, &block)
12
+ # The assert_generated_(class|module|test_for) &block is passed the body of the class/module within the file
13
+ # assert_has_method(body, *methods) # check that the body has a list of methods (methods with parentheses not supported yet)
14
+ #
15
+ # Other helper methods are:
16
+ # app_root_files - put this in teardown to show files generated by the test method (e.g. p app_root_files)
17
+ # bare_setup - place this in setup method to create the APP_ROOT folder for each test
18
+ # bare_teardown - place this in teardown method to destroy the TMP_ROOT or APP_ROOT folder after each test
19
+
20
+ context "generator without name" do
21
+ rails_generator :niftier_layout
22
+ should_generate_file 'app/views/layouts/application.html.erb'
23
+ end
24
+
25
+ context "generator with name" do
26
+ rails_generator :niftier_layout, "foobar"
27
+ should_generate_file 'app/views/layouts/foobar.html.erb'
28
+ should_generate_file 'public/stylesheets/foobar.css'
29
+ should_generate_file 'app/helpers/layout_helper.rb'
30
+ end
31
+
32
+ context "generator with CamelCase name" do
33
+ rails_generator :niftier_layout, "FooBar"
34
+ should_generate_file 'app/views/layouts/foo_bar.html.erb'
35
+ end
36
+
37
+ context "generator with haml option" do
38
+ rails_generator :niftier_layout, "foobar", :haml => true
39
+ should_generate_file 'app/views/layouts/foobar.html.haml'
40
+ should_generate_file 'public/stylesheets/sass/foobar.sass'
41
+ end
42
+ end