unittk-nifty-generators 0.1.7

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