splendeo-generators 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. data/CHANGELOG +119 -0
  2. data/LICENSE +20 -0
  3. data/README.rdoc +98 -0
  4. data/Rakefile +12 -0
  5. data/lib/nifty_generators.rb +3 -0
  6. data/rails_generators/splendeo_authentication/USAGE +50 -0
  7. data/rails_generators/splendeo_authentication/lib/insert_commands.rb +74 -0
  8. data/rails_generators/splendeo_authentication/splendeo_authentication_generator.rb +128 -0
  9. data/rails_generators/splendeo_authentication/templates/authentication.rb +61 -0
  10. data/rails_generators/splendeo_authentication/templates/authlogic_session.rb +2 -0
  11. data/rails_generators/splendeo_authentication/templates/fixtures.yml +24 -0
  12. data/rails_generators/splendeo_authentication/templates/migration.rb +20 -0
  13. data/rails_generators/splendeo_authentication/templates/sessions_controller.rb +45 -0
  14. data/rails_generators/splendeo_authentication/templates/sessions_helper.rb +2 -0
  15. data/rails_generators/splendeo_authentication/templates/tests/rspec/sessions_controller.rb +39 -0
  16. data/rails_generators/splendeo_authentication/templates/tests/rspec/user.rb +83 -0
  17. data/rails_generators/splendeo_authentication/templates/tests/rspec/users_controller.rb +26 -0
  18. data/rails_generators/splendeo_authentication/templates/tests/shoulda/sessions_controller.rb +40 -0
  19. data/rails_generators/splendeo_authentication/templates/tests/shoulda/user.rb +85 -0
  20. data/rails_generators/splendeo_authentication/templates/tests/shoulda/users_controller.rb +27 -0
  21. data/rails_generators/splendeo_authentication/templates/tests/testunit/sessions_controller.rb +36 -0
  22. data/rails_generators/splendeo_authentication/templates/tests/testunit/user.rb +88 -0
  23. data/rails_generators/splendeo_authentication/templates/tests/testunit/users_controller.rb +23 -0
  24. data/rails_generators/splendeo_authentication/templates/user.rb +42 -0
  25. data/rails_generators/splendeo_authentication/templates/users_controller.rb +18 -0
  26. data/rails_generators/splendeo_authentication/templates/users_helper.rb +2 -0
  27. data/rails_generators/splendeo_authentication/templates/views/erb/login.html.erb +30 -0
  28. data/rails_generators/splendeo_authentication/templates/views/erb/signup.html.erb +24 -0
  29. data/rails_generators/splendeo_authentication/templates/views/haml/login.html.haml +30 -0
  30. data/rails_generators/splendeo_authentication/templates/views/haml/signup.html.haml +24 -0
  31. data/rails_generators/splendeo_config/USAGE +23 -0
  32. data/rails_generators/splendeo_config/splendeo_config_generator.rb +32 -0
  33. data/rails_generators/splendeo_config/templates/config.yml +8 -0
  34. data/rails_generators/splendeo_config/templates/load_config.rb +2 -0
  35. data/rails_generators/splendeo_layout/USAGE +25 -0
  36. data/rails_generators/splendeo_layout/splendeo_layout_generator.rb +76 -0
  37. data/rails_generators/splendeo_layout/templates/blueprint-sass/ie.sass +103 -0
  38. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/buttons/icons/cross.png +0 -0
  39. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/buttons/icons/key.png +0 -0
  40. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/buttons/icons/tick.png +0 -0
  41. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/buttons/readme.txt +32 -0
  42. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/buttons/screen.sass +104 -0
  43. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/fancy-type/readme.txt +14 -0
  44. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/fancy-type/screen.sass +34 -0
  45. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/link-icons/icons/doc.png +0 -0
  46. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/link-icons/icons/email.png +0 -0
  47. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/link-icons/icons/external.png +0 -0
  48. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/link-icons/icons/feed.png +0 -0
  49. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/link-icons/icons/im.png +0 -0
  50. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/link-icons/icons/pdf.png +0 -0
  51. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/link-icons/icons/visited.png +0 -0
  52. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/link-icons/icons/xls.png +0 -0
  53. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/link-icons/readme.txt +18 -0
  54. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/link-icons/screen.sass +50 -0
  55. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/rtl/readme.txt +10 -0
  56. data/rails_generators/splendeo_layout/templates/blueprint-sass/plugins/rtl/screen.sass +272 -0
  57. data/rails_generators/splendeo_layout/templates/blueprint-sass/print.sass +75 -0
  58. data/rails_generators/splendeo_layout/templates/blueprint-sass/screen.sass +1062 -0
  59. data/rails_generators/splendeo_layout/templates/blueprint/ie.css +35 -0
  60. data/rails_generators/splendeo_layout/templates/blueprint/plugins/buttons/icons/cross.png +0 -0
  61. data/rails_generators/splendeo_layout/templates/blueprint/plugins/buttons/icons/key.png +0 -0
  62. data/rails_generators/splendeo_layout/templates/blueprint/plugins/buttons/icons/tick.png +0 -0
  63. data/rails_generators/splendeo_layout/templates/blueprint/plugins/buttons/readme.txt +32 -0
  64. data/rails_generators/splendeo_layout/templates/blueprint/plugins/buttons/screen.css +97 -0
  65. data/rails_generators/splendeo_layout/templates/blueprint/plugins/fancy-type/readme.txt +14 -0
  66. data/rails_generators/splendeo_layout/templates/blueprint/plugins/fancy-type/screen.css +71 -0
  67. data/rails_generators/splendeo_layout/templates/blueprint/plugins/link-icons/icons/doc.png +0 -0
  68. data/rails_generators/splendeo_layout/templates/blueprint/plugins/link-icons/icons/email.png +0 -0
  69. data/rails_generators/splendeo_layout/templates/blueprint/plugins/link-icons/icons/external.png +0 -0
  70. data/rails_generators/splendeo_layout/templates/blueprint/plugins/link-icons/icons/feed.png +0 -0
  71. data/rails_generators/splendeo_layout/templates/blueprint/plugins/link-icons/icons/im.png +0 -0
  72. data/rails_generators/splendeo_layout/templates/blueprint/plugins/link-icons/icons/pdf.png +0 -0
  73. data/rails_generators/splendeo_layout/templates/blueprint/plugins/link-icons/icons/visited.png +0 -0
  74. data/rails_generators/splendeo_layout/templates/blueprint/plugins/link-icons/icons/xls.png +0 -0
  75. data/rails_generators/splendeo_layout/templates/blueprint/plugins/link-icons/readme.txt +18 -0
  76. data/rails_generators/splendeo_layout/templates/blueprint/plugins/link-icons/screen.css +40 -0
  77. data/rails_generators/splendeo_layout/templates/blueprint/plugins/rtl/readme.txt +10 -0
  78. data/rails_generators/splendeo_layout/templates/blueprint/plugins/rtl/screen.css +110 -0
  79. data/rails_generators/splendeo_layout/templates/blueprint/print.css +29 -0
  80. data/rails_generators/splendeo_layout/templates/blueprint/screen.css +258 -0
  81. data/rails_generators/splendeo_layout/templates/haml/init.rb +16 -0
  82. data/rails_generators/splendeo_layout/templates/helper.rb +22 -0
  83. data/rails_generators/splendeo_layout/templates/layout.html.erb +34 -0
  84. data/rails_generators/splendeo_layout/templates/layout.html.haml +31 -0
  85. data/rails_generators/splendeo_layout/templates/stylesheet.css +77 -0
  86. data/rails_generators/splendeo_layout/templates/stylesheet.sass +63 -0
  87. data/rails_generators/splendeo_scaffold/USAGE +51 -0
  88. data/rails_generators/splendeo_scaffold/splendeo_scaffold_generator.rb +232 -0
  89. data/rails_generators/splendeo_scaffold/templates/actions/create.rb +9 -0
  90. data/rails_generators/splendeo_scaffold/templates/actions/destroy.rb +6 -0
  91. data/rails_generators/splendeo_scaffold/templates/actions/edit.rb +3 -0
  92. data/rails_generators/splendeo_scaffold/templates/actions/index.rb +3 -0
  93. data/rails_generators/splendeo_scaffold/templates/actions/new.rb +3 -0
  94. data/rails_generators/splendeo_scaffold/templates/actions/show.rb +3 -0
  95. data/rails_generators/splendeo_scaffold/templates/actions/update.rb +9 -0
  96. data/rails_generators/splendeo_scaffold/templates/controller.rb +3 -0
  97. data/rails_generators/splendeo_scaffold/templates/fixtures.yml +9 -0
  98. data/rails_generators/splendeo_scaffold/templates/helper.rb +2 -0
  99. data/rails_generators/splendeo_scaffold/templates/migration.rb +16 -0
  100. data/rails_generators/splendeo_scaffold/templates/model.rb +3 -0
  101. data/rails_generators/splendeo_scaffold/templates/tests/rspec/actions/create.rb +11 -0
  102. data/rails_generators/splendeo_scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
  103. data/rails_generators/splendeo_scaffold/templates/tests/rspec/actions/edit.rb +4 -0
  104. data/rails_generators/splendeo_scaffold/templates/tests/rspec/actions/index.rb +4 -0
  105. data/rails_generators/splendeo_scaffold/templates/tests/rspec/actions/new.rb +4 -0
  106. data/rails_generators/splendeo_scaffold/templates/tests/rspec/actions/show.rb +4 -0
  107. data/rails_generators/splendeo_scaffold/templates/tests/rspec/actions/update.rb +11 -0
  108. data/rails_generators/splendeo_scaffold/templates/tests/rspec/controller.rb +8 -0
  109. data/rails_generators/splendeo_scaffold/templates/tests/rspec/model.rb +7 -0
  110. data/rails_generators/splendeo_scaffold/templates/tests/shoulda/actions/create.rb +13 -0
  111. data/rails_generators/splendeo_scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
  112. data/rails_generators/splendeo_scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
  113. data/rails_generators/splendeo_scaffold/templates/tests/shoulda/actions/index.rb +6 -0
  114. data/rails_generators/splendeo_scaffold/templates/tests/shoulda/actions/new.rb +6 -0
  115. data/rails_generators/splendeo_scaffold/templates/tests/shoulda/actions/show.rb +6 -0
  116. data/rails_generators/splendeo_scaffold/templates/tests/shoulda/actions/update.rb +13 -0
  117. data/rails_generators/splendeo_scaffold/templates/tests/shoulda/controller.rb +5 -0
  118. data/rails_generators/splendeo_scaffold/templates/tests/shoulda/model.rb +7 -0
  119. data/rails_generators/splendeo_scaffold/templates/tests/testunit/actions/create.rb +11 -0
  120. data/rails_generators/splendeo_scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
  121. data/rails_generators/splendeo_scaffold/templates/tests/testunit/actions/edit.rb +4 -0
  122. data/rails_generators/splendeo_scaffold/templates/tests/testunit/actions/index.rb +4 -0
  123. data/rails_generators/splendeo_scaffold/templates/tests/testunit/actions/new.rb +4 -0
  124. data/rails_generators/splendeo_scaffold/templates/tests/testunit/actions/show.rb +4 -0
  125. data/rails_generators/splendeo_scaffold/templates/tests/testunit/actions/update.rb +11 -0
  126. data/rails_generators/splendeo_scaffold/templates/tests/testunit/controller.rb +5 -0
  127. data/rails_generators/splendeo_scaffold/templates/tests/testunit/model.rb +7 -0
  128. data/rails_generators/splendeo_scaffold/templates/views/erb/_form.html.erb +10 -0
  129. data/rails_generators/splendeo_scaffold/templates/views/erb/edit.html.erb +14 -0
  130. data/rails_generators/splendeo_scaffold/templates/views/erb/index.html.erb +29 -0
  131. data/rails_generators/splendeo_scaffold/templates/views/erb/new.html.erb +7 -0
  132. data/rails_generators/splendeo_scaffold/templates/views/erb/show.html.erb +20 -0
  133. data/rails_generators/splendeo_scaffold/templates/views/haml/_form.html.haml +10 -0
  134. data/rails_generators/splendeo_scaffold/templates/views/haml/edit.html.haml +14 -0
  135. data/rails_generators/splendeo_scaffold/templates/views/haml/index.html.haml +25 -0
  136. data/rails_generators/splendeo_scaffold/templates/views/haml/new.html.haml +7 -0
  137. data/rails_generators/splendeo_scaffold/templates/views/haml/show.html.haml +20 -0
  138. data/test/test_helper.rb +119 -0
  139. data/test/test_splendeo_authentication_generator.rb +274 -0
  140. data/test/test_splendeo_config_generator.rb +37 -0
  141. data/test/test_splendeo_layout_generator.rb +42 -0
  142. data/test/test_splendeo_scaffold_generator.rb +534 -0
  143. metadata +212 -0
@@ -0,0 +1,274 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper.rb")
2
+
3
+ class TestSplendeoAuthenticationGenerator < Test::Unit::TestCase
4
+ include SplendeoGenerators::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 :splendeo_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 :splendeo_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 :splendeo_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 :splendeo_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 :splendeo_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 :splendeo_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 :splendeo_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 :splendeo_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 :splendeo_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 :splendeo_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 TestSplendeoConfigGenerator < Test::Unit::TestCase
4
+ include SplendeoGenerators::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 :splendeo_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 :splendeo_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 TestSplendeoLayoutGenerator < Test::Unit::TestCase
4
+ include SplendeoGenerators::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 :splendeo_layout
22
+ should_generate_file 'app/views/layouts/application.html.erb'
23
+ end
24
+
25
+ context "generator with name" do
26
+ rails_generator :splendeo_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 :splendeo_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 :splendeo_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
@@ -0,0 +1,534 @@
1
+ require File.join(File.dirname(__FILE__), "test_helper.rb")
2
+
3
+ class TestSplendeoScaffoldGenerator < Test::Unit::TestCase
4
+ include SplendeoGenerators::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 "routed" do
21
+ setup do
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
+ end
27
+
28
+ teardown do
29
+ FileUtils.rm_rf "#{RAILS_ROOT}/config"
30
+ end
31
+
32
+ context "generator without name" do
33
+ should "raise usage error" do
34
+ assert_raise Rails::Generator::UsageError do
35
+ run_rails_generator :splendeo_scaffold
36
+ end
37
+ end
38
+ end
39
+
40
+ context "generator with no options and no existing model" do
41
+ rails_generator :splendeo_scaffold, "LineItem"
42
+
43
+ should_generate_file "app/helpers/line_items_helper.rb"
44
+
45
+ should "generate controller with class as camelcase name pluralized and all actions" do
46
+ assert_generated_file "app/controllers/line_items_controller.rb" do |body|
47
+ assert_match "class LineItemsController < ApplicationController", body
48
+ %w[index show new create edit update destroy].each do |action|
49
+ assert_match "def #{action}", body
50
+ end
51
+ end
52
+ end
53
+
54
+ %w[index show new edit].each do |action|
55
+ should_generate_file "app/views/line_items/#{action}.html.erb"
56
+ end
57
+
58
+ should "have name attribute" do
59
+ assert_generated_file "app/views/line_items/_form.html.erb" do |body|
60
+ assert_match "<%= f.text_field :name %>", body
61
+ end
62
+ end
63
+
64
+ should "add map.resources line to routes" do
65
+ assert_generated_file "config/routes.rb" do |body|
66
+ assert_match "map.resources :line_items", body
67
+ end
68
+ end
69
+
70
+ should_not_generate_file "app/models/line_item.rb"
71
+ end
72
+
73
+ context "generator with some attributes" do
74
+ rails_generator :splendeo_scaffold, "line_item", "name:string", "description:text"
75
+
76
+ should "generate migration with attribute columns" do
77
+ file = Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").first
78
+ assert file, "migration file doesn't exist"
79
+ assert_match(/[0-9]+_create_line_items.rb$/, file)
80
+ assert_generated_file "db/migrate/#{File.basename(file)}" do |body|
81
+ assert_match "class CreateLineItems", body
82
+ assert_match "t.string :name", body
83
+ assert_match "t.text :description", body
84
+ assert_match "t.timestamps", body
85
+ end
86
+ end
87
+
88
+ should "generate model with class as camelcase name and add attr_accessible for attributes" do
89
+ assert_generated_file "app/models/line_item.rb" do |body|
90
+ assert_match "class LineItem < ActiveRecord::Base", body
91
+ assert_match "attr_accessible :name, :description", body
92
+ end
93
+ end
94
+ end
95
+
96
+ context "generator with index action" do
97
+ rails_generator :splendeo_scaffold, "line_item", "index"
98
+
99
+ should_generate_file "app/views/line_items/index.html.erb"
100
+
101
+ should "generate controller with index action" do
102
+ assert_generated_file "app/controllers/line_items_controller.rb" do |body|
103
+ assert_match "def index", body
104
+ assert_match "@line_items = LineItem.all", body
105
+ assert_no_match(/ def index/, body)
106
+ end
107
+ end
108
+ end
109
+
110
+ context "generator with show action" do
111
+ rails_generator :splendeo_scaffold, "line_item", "show"
112
+
113
+ should_generate_file "app/views/line_items/show.html.erb"
114
+
115
+ should "generate controller with show action" do
116
+ assert_generated_file "app/controllers/line_items_controller.rb" do |body|
117
+ assert_match "def show", body
118
+ assert_match "@line_item = LineItem.find(params[:id])", body
119
+ end
120
+ end
121
+ end
122
+
123
+ context "generator with new and create actions" do
124
+ rails_generator :splendeo_scaffold, "LineItem", "new", "create"
125
+
126
+ should_not_generate_file "app/views/line_items/create.html.erb"
127
+ should_not_generate_file "app/views/line_items/_form.html.erb"
128
+
129
+ should "render form in 'new' template" do
130
+ assert_generated_file "app/views/line_items/new.html.erb" do |body|
131
+ assert_match "<% form_for @line_item do |f| %>", body
132
+ end
133
+ end
134
+
135
+ should "generate controller with actions" do
136
+ assert_generated_file "app/controllers/line_items_controller.rb" do |body|
137
+ assert_match "def new", body
138
+ assert_match "@line_item = LineItem.new\n", body
139
+ assert_match "def create", body
140
+ assert_match "@line_item = LineItem.new(params[:line_item])", body
141
+ assert_match "if @line_item.save", body
142
+ assert_match "flash[:notice] = \"Successfully created line item.\"", body
143
+ assert_match "redirect_to root_url", body
144
+ assert_match "render :action => 'new'", body
145
+ end
146
+ end
147
+ end
148
+
149
+ context "generator with edit and update actions" do
150
+ rails_generator :splendeo_scaffold, "line_item", "edit", "update"
151
+
152
+ should_not_generate_file "app/views/line_items/update.html.erb"
153
+ should_not_generate_file "app/views/line_items/_form.html.erb"
154
+
155
+ should "render form in 'edit' template" do
156
+ assert_generated_file "app/views/line_items/edit.html.erb" do |body|
157
+ assert_match "<% form_for @line_item do |f| %>", body
158
+ end
159
+ end
160
+
161
+ should "generate controller with actions" do
162
+ assert_generated_file "app/controllers/line_items_controller.rb" do |body|
163
+ assert_match "def edit", body
164
+ assert_match "@line_item = LineItem.find(params[:id])", body
165
+ assert_match "def update", body
166
+ assert_match "if @line_item.update_attributes(params[:line_item])", body
167
+ assert_match "flash[:notice] = \"Successfully updated line item.\"", body
168
+ assert_match "redirect_to root_url", body
169
+ assert_match "render :action => 'edit'", body
170
+ end
171
+ end
172
+ end
173
+
174
+ context "generator with edit and update actions" do
175
+ rails_generator :splendeo_scaffold, "line_item", "destroy"
176
+
177
+ should_not_generate_file "app/views/line_items/destroy.html.erb"
178
+
179
+ should "generate controller with action" do
180
+ assert_generated_file "app/controllers/line_items_controller.rb" do |body|
181
+ assert_match "def destroy", body
182
+ assert_match "@line_item = LineItem.find(params[:id])", body
183
+ assert_match "@line_item.destroy", body
184
+ assert_match "flash[:notice] = \"Successfully destroyed line item.\"", body
185
+ assert_match "redirect_to root_url", body
186
+ end
187
+ end
188
+ end
189
+
190
+ context "generator with new and edit actions" do
191
+ rails_generator :splendeo_scaffold, "line_item", "new", "edit"
192
+
193
+ should_generate_file "app/views/line_items/_form.html.erb"
194
+
195
+ should "render the form partial in views" do
196
+ %w[new edit].each do |action|
197
+ assert_generated_file "app/views/line_items/#{action}.html.erb" do |body|
198
+ assert_match "<%= render :partial => 'form' %>", body
199
+ end
200
+ end
201
+ end
202
+ end
203
+
204
+ context "generator with attributes and actions" do
205
+ rails_generator :splendeo_scaffold, "line_item", "name:string", "new", "price:float", "index", "available:boolean"
206
+
207
+ should "render a form field for each attribute in 'new' template" do
208
+ assert_generated_file "app/views/line_items/new.html.erb" do |body|
209
+ assert_match "<%= f.text_field :name %>", body
210
+ assert_match "<%= f.text_field :price %>", body
211
+ assert_match "<%= f.check_box :available %>", body
212
+ end
213
+ end
214
+ end
215
+
216
+ context "generator with show, create, and update actions" do
217
+ rails_generator :splendeo_scaffold, "line_item", "show", "create", "update"
218
+
219
+ should "redirect to line item show page, not index" do
220
+ assert_generated_file "app/controllers/line_items_controller.rb" do |body|
221
+ assert_match "redirect_to @line_item", body
222
+ assert_no_match(/redirect_to line_items_url/, body)
223
+ end
224
+ end
225
+ end
226
+
227
+ context "generator with attributes and skip model option" do
228
+ rails_generator :splendeo_scaffold, "line_item", "foo:string", :skip_model => true
229
+
230
+ should "use passed attribute" do
231
+ assert_generated_file "app/views/line_items/_form.html.erb" do |body|
232
+ assert_match "<%= f.text_field :foo %>", body
233
+ end
234
+ end
235
+
236
+ should "not generate migration file" do
237
+ assert Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").empty?
238
+ end
239
+
240
+ should_not_generate_file "app/models/line_item.rb"
241
+ end
242
+
243
+ context "generator with no attributes" do
244
+ rails_generator :splendeo_scaffold, "line_item"
245
+
246
+ should "not generate migration file" do
247
+ assert Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").empty?
248
+ end
249
+
250
+ should_not_generate_file "app/models/line_item.rb"
251
+ end
252
+
253
+ context "generator with only new and edit actions" do
254
+ rails_generator :splendeo_scaffold, "line_item", "new", "edit"
255
+
256
+ should "included create and update actions in controller" do
257
+ assert_generated_file "app/controllers/line_items_controller.rb" do |body|
258
+ assert_match "def create", body
259
+ assert_match "def update", body
260
+ assert_match "root_url", body
261
+ end
262
+ end
263
+ end
264
+
265
+ context "generator with exclemation mark and show, new, and edit actions" do
266
+ rails_generator :splendeo_scaffold, "line_item", "!", "show", "new", "edit"
267
+
268
+ should "only include index and destroy actions" do
269
+ assert_generated_file "app/controllers/line_items_controller.rb" do |body|
270
+ %w[index destroy].each { |a| assert_match "def #{a}", body }
271
+ %w[show new create edit update].each do |a|
272
+ assert_no_match(/def #{a}/, body)
273
+ end
274
+ end
275
+ end
276
+ end
277
+
278
+ context "generator with --skip-controller" do
279
+ rails_generator :splendeo_scaffold, "line_item", :skip_controller => true
280
+ should_not_generate_file "app/controllers/line_items_controller.rb"
281
+ should_not_generate_file "app/helpers/line_items_helper.rb"
282
+ should_not_generate_file "app/views/line_items/index.html.erb"
283
+ end
284
+
285
+ context "generator with --skip-migration" do
286
+ rails_generator :splendeo_scaffold, "line_item", "name:string", :skip_migration => true
287
+
288
+ should "not generate migration file" do
289
+ assert Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").empty?
290
+ end
291
+ end
292
+
293
+ context "generator with --skip-timestamps" do
294
+ rails_generator :splendeo_scaffold, "line_item", "name:string", :skip_timestamps => true
295
+
296
+ should "generate migration with no timestamps" do
297
+ file = Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").first
298
+ assert file, "migration file doesn't exist"
299
+ assert_generated_file "db/migrate/#{File.basename(file)}" do |body|
300
+ assert_no_match(/t.timestamps/, body)
301
+ end
302
+ end
303
+ end
304
+
305
+ context "existing model" do
306
+ setup do
307
+ Dir.mkdir("#{RAILS_ROOT}/app") unless File.exists?("#{RAILS_ROOT}/app")
308
+ Dir.mkdir("#{RAILS_ROOT}/app/models") unless File.exists?("#{RAILS_ROOT}/app/models")
309
+ File.open("#{RAILS_ROOT}/app/models/recipe.rb", 'w') do |f|
310
+ f.puts "raise 'should not be loaded'"
311
+ end
312
+ end
313
+
314
+ teardown do
315
+ FileUtils.rm_rf "#{RAILS_ROOT}/app"
316
+ end
317
+
318
+ context "generator with skip model option" do
319
+ rails_generator :splendeo_scaffold, "recipe", :skip_model => true
320
+
321
+ should "use model columns for attributes" do
322
+ assert_generated_file "app/views/recipes/_form.html.erb" do |body|
323
+ assert_match "<%= f.text_field :foo %>", body
324
+ assert_match "<%= f.text_field :bar %>", body
325
+ assert_match "<%= f.text_field :book_id %>", body
326
+ assert_no_match(/:id/, body)
327
+ assert_no_match(/:created_at/, body)
328
+ assert_no_match(/:updated_at/, body)
329
+ end
330
+ end
331
+
332
+ should "not generate migration file" do
333
+ assert Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").empty?
334
+ end
335
+ end
336
+
337
+ context "generator with attribute specified" do
338
+ rails_generator :splendeo_scaffold, "recipe", "zippo:string"
339
+
340
+ should "use specified attribute" do
341
+ assert_generated_file "app/views/recipes/_form.html.erb" do |body|
342
+ assert_match "<%= f.text_field :zippo %>", body
343
+ end
344
+ end
345
+ end
346
+ end
347
+
348
+ context "with spec dir" do
349
+ setup do
350
+ Dir.mkdir("#{RAILS_ROOT}/spec") unless File.exists?("#{RAILS_ROOT}/spec")
351
+ end
352
+
353
+ teardown do
354
+ FileUtils.rm_rf "#{RAILS_ROOT}/spec"
355
+ end
356
+
357
+ context "generator with some attributes" do
358
+ rails_generator :splendeo_scaffold, "line_item", "name:string", "description:text"
359
+
360
+ should_generate_file "spec/models/line_item_spec.rb"
361
+
362
+ should "have controller specs for each action" do
363
+ assert_generated_file "spec/controllers/line_items_controller_spec.rb" do |body|
364
+ assert_match "get :index", body
365
+ assert_match "get :show", body
366
+ assert_match "get :new", body
367
+ assert_match "get :edit", body
368
+ assert_match "post :create", body
369
+ assert_match "put :update", body
370
+ assert_match "delete :destroy", body
371
+ end
372
+ end
373
+
374
+ should "have fixture with attributes" do
375
+ assert_generated_file "spec/fixtures/line_items.yml" do |body|
376
+ assert_match "name: MyString", body
377
+ assert_match "description: MyText", body
378
+ end
379
+ end
380
+ end
381
+
382
+ context "generator with new and index actions" do
383
+ rails_generator :splendeo_scaffold, "line_item", "new", "index"
384
+
385
+ should "have controller spec with only mentioned actions" do
386
+ assert_generated_file "spec/controllers/line_items_controller_spec.rb" do |body|
387
+ assert_match "get :index", body
388
+ assert_match "get :new", body
389
+ assert_match "post :create", body
390
+ assert_no_match(/get :show/, body)
391
+ assert_no_match(/get :edit/, body)
392
+ assert_no_match(/put :update/, body)
393
+ assert_no_match(/delete :destroy/, body)
394
+ end
395
+ end
396
+
397
+ should "redirect to index action on successful create" do
398
+ assert_generated_file "spec/controllers/line_items_controller_spec.rb" do |body|
399
+ assert_match "redirect_to(line_items_url)", body
400
+ end
401
+ end
402
+ end
403
+
404
+ context "generator with edit and index actions" do
405
+ rails_generator :splendeo_scaffold, "line_item", "edit", "index"
406
+
407
+ should "redirect to index action on successful update" do
408
+ assert_generated_file "spec/controllers/line_items_controller_spec.rb" do |body|
409
+ assert_match "redirect_to(line_items_url)", body
410
+ end
411
+ end
412
+ end
413
+
414
+ context "generator with testunit specified" do
415
+ rails_generator :splendeo_scaffold, "line_item", "name:string", :test_framework => :testunit
416
+
417
+ should_generate_file "test/unit/line_item_test.rb"
418
+ end
419
+ end
420
+
421
+ context "with test dir" do
422
+ setup do
423
+ Dir.mkdir("#{RAILS_ROOT}/test") unless File.exists?("#{RAILS_ROOT}/test")
424
+ end
425
+
426
+ teardown do
427
+ FileUtils.rm_rf "#{RAILS_ROOT}/test"
428
+ end
429
+
430
+ context "generator with some attributes" do
431
+ rails_generator :splendeo_scaffold, "line_item", "name:string", "description:text"
432
+
433
+ should_generate_file "test/unit/line_item_test.rb"
434
+
435
+ should "have controller tests for each action" do
436
+ assert_generated_file "test/functional/line_items_controller_test.rb" do |body|
437
+ assert_match "get :index", body
438
+ assert_match "get :show", body
439
+ assert_match "get :new", body
440
+ assert_match "get :edit", body
441
+ assert_match "post :create", body
442
+ assert_match "put :update", body
443
+ assert_match "delete :destroy", body
444
+ end
445
+ end
446
+
447
+ should "have fixture with attributes" do
448
+ assert_generated_file "test/fixtures/line_items.yml" do |body|
449
+ assert_match "name: MyString", body
450
+ assert_match "description: MyText", body
451
+ end
452
+ end
453
+ end
454
+
455
+ context "generator with new and index actions" do
456
+ rails_generator :splendeo_scaffold, "line_item", "new", "index"
457
+
458
+ should "have controller test with only mentioned actions" do
459
+ assert_generated_file "test/functional/line_items_controller_test.rb" do |body|
460
+ assert_match "get :index", body
461
+ assert_match "get :new", body
462
+ assert_match "post :create", body
463
+ assert_no_match(/get :show/, body)
464
+ assert_no_match(/get :edit/, body)
465
+ assert_no_match(/put :update/, body)
466
+ assert_no_match(/delete :destroy/, body)
467
+ end
468
+ end
469
+
470
+ should "redirect to index action on successful create" do
471
+ assert_generated_file "test/functional/line_items_controller_test.rb" do |body|
472
+ assert_match "assert_redirected_to line_items_url", body
473
+ end
474
+ end
475
+ end
476
+
477
+ context "generator with edit and index actions" do
478
+ rails_generator :splendeo_scaffold, "line_item", "edit", "index"
479
+
480
+ should "redirect to index action on successful update" do
481
+ assert_generated_file "test/functional/line_items_controller_test.rb" do |body|
482
+ assert_match "assert_redirected_to line_items_url", body
483
+ end
484
+ end
485
+ end
486
+
487
+ context "generator with rspec specified" do
488
+ rails_generator :splendeo_scaffold, "line_item", "name:string", :test_framework => :rspec
489
+
490
+ should_generate_file "spec/models/line_item_spec.rb"
491
+ end
492
+
493
+ context "generator with shoulda specified" do
494
+ rails_generator :splendeo_scaffold, "line_item", "name:string", :test_framework => :shoulda
495
+
496
+ should "have controller and model tests using shoulda syntax" do
497
+ assert_generated_file "test/functional/line_items_controller_test.rb" do |body|
498
+ assert_match " should ", body
499
+ end
500
+
501
+ assert_generated_file "test/unit/line_item_test.rb" do |body|
502
+ assert_match " should ", body
503
+ end
504
+ end
505
+ end
506
+ end
507
+
508
+ context "generator with haml option" do
509
+ rails_generator :splendeo_scaffold, "LineItem", :haml => true
510
+
511
+ %w[index show new edit _form].each do |action|
512
+ should_generate_file "app/views/line_items/#{action}.html.haml"
513
+ end
514
+
515
+ should "render the form partial in views" do
516
+ %w[new edit].each do |action|
517
+ assert_generated_file "app/views/line_items/#{action}.html.haml" do |body|
518
+ assert_match /^= render :partial => 'form'$/, body
519
+ end
520
+ end
521
+ end
522
+ end
523
+ end
524
+ end
525
+
526
+ # just an example model we can use
527
+ class Recipe < ActiveRecord::Base
528
+ add_column :id, :integer
529
+ add_column :foo, :string
530
+ add_column :bar, :string
531
+ add_column :book_id, :integer
532
+ add_column :created_at, :datetime
533
+ add_column :updated_at, :datetime
534
+ end