ghart-nifty-generators 0.3.0.1
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.
- data/CHANGELOG +105 -0
- data/LICENSE +20 -0
- data/README.rdoc +107 -0
- data/Rakefile +15 -0
- data/TODO +7 -0
- data/lib/nifty_generators.rb +3 -0
- data/nifty-generators.gemspec +31 -0
- data/rails_generators/nifty_admin_scaffold/USAGE +51 -0
- data/rails_generators/nifty_admin_scaffold/lib/insert_commands.rb +31 -0
- data/rails_generators/nifty_admin_scaffold/nifty_admin_scaffold_generator.rb +238 -0
- data/rails_generators/nifty_admin_scaffold/templates/actions/create.rb +8 -0
- data/rails_generators/nifty_admin_scaffold/templates/actions/destroy.rb +5 -0
- data/rails_generators/nifty_admin_scaffold/templates/actions/edit.rb +3 -0
- data/rails_generators/nifty_admin_scaffold/templates/actions/index.rb +3 -0
- data/rails_generators/nifty_admin_scaffold/templates/actions/new.rb +3 -0
- data/rails_generators/nifty_admin_scaffold/templates/actions/show.rb +3 -0
- data/rails_generators/nifty_admin_scaffold/templates/actions/update.rb +8 -0
- data/rails_generators/nifty_admin_scaffold/templates/controller.rb +5 -0
- data/rails_generators/nifty_admin_scaffold/templates/fixtures.yml +9 -0
- data/rails_generators/nifty_admin_scaffold/templates/helper.rb +2 -0
- data/rails_generators/nifty_admin_scaffold/templates/migration.rb +16 -0
- data/rails_generators/nifty_admin_scaffold/templates/model.rb +3 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/rspec/actions/create.rb +11 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/rspec/actions/edit.rb +4 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/rspec/actions/index.rb +4 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/rspec/actions/new.rb +4 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/rspec/actions/show.rb +4 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/rspec/actions/update.rb +11 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/rspec/controller.rb +8 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/rspec/model.rb +7 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/shoulda/actions/create.rb +13 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/shoulda/actions/index.rb +6 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/shoulda/actions/new.rb +6 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/shoulda/actions/show.rb +6 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/shoulda/actions/update.rb +13 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/shoulda/controller.rb +5 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/shoulda/model.rb +7 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/testunit/actions/create.rb +11 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/testunit/actions/edit.rb +4 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/testunit/actions/index.rb +4 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/testunit/actions/new.rb +4 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/testunit/actions/show.rb +4 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/testunit/actions/update.rb +11 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/testunit/controller.rb +5 -0
- data/rails_generators/nifty_admin_scaffold/templates/tests/testunit/model.rb +7 -0
- data/rails_generators/nifty_admin_scaffold/templates/views/erb/_form.html.erb +10 -0
- data/rails_generators/nifty_admin_scaffold/templates/views/erb/edit.html.erb +3 -0
- data/rails_generators/nifty_admin_scaffold/templates/views/erb/index.html.erb +29 -0
- data/rails_generators/nifty_admin_scaffold/templates/views/erb/new.html.erb +3 -0
- data/rails_generators/nifty_admin_scaffold/templates/views/erb/show.html.erb +14 -0
- data/rails_generators/nifty_admin_scaffold/templates/views/haml/_form.html.haml +10 -0
- data/rails_generators/nifty_admin_scaffold/templates/views/haml/edit.html.haml +14 -0
- data/rails_generators/nifty_admin_scaffold/templates/views/haml/index.html.haml +26 -0
- data/rails_generators/nifty_admin_scaffold/templates/views/haml/new.html.haml +7 -0
- data/rails_generators/nifty_admin_scaffold/templates/views/haml/show.html.haml +12 -0
- data/rails_generators/nifty_authentication/USAGE +50 -0
- data/rails_generators/nifty_authentication/lib/insert_commands.rb +74 -0
- data/rails_generators/nifty_authentication/nifty_authentication_generator.rb +128 -0
- data/rails_generators/nifty_authentication/templates/authentication.rb +61 -0
- data/rails_generators/nifty_authentication/templates/authlogic_session.rb +2 -0
- data/rails_generators/nifty_authentication/templates/fixtures.yml +24 -0
- data/rails_generators/nifty_authentication/templates/migration.rb +20 -0
- data/rails_generators/nifty_authentication/templates/sessions_controller.rb +45 -0
- data/rails_generators/nifty_authentication/templates/sessions_helper.rb +2 -0
- data/rails_generators/nifty_authentication/templates/tests/rspec/sessions_controller.rb +39 -0
- data/rails_generators/nifty_authentication/templates/tests/rspec/user.rb +83 -0
- data/rails_generators/nifty_authentication/templates/tests/rspec/users_controller.rb +26 -0
- data/rails_generators/nifty_authentication/templates/tests/shoulda/sessions_controller.rb +40 -0
- data/rails_generators/nifty_authentication/templates/tests/shoulda/user.rb +85 -0
- data/rails_generators/nifty_authentication/templates/tests/shoulda/users_controller.rb +27 -0
- data/rails_generators/nifty_authentication/templates/tests/testunit/sessions_controller.rb +36 -0
- data/rails_generators/nifty_authentication/templates/tests/testunit/user.rb +88 -0
- data/rails_generators/nifty_authentication/templates/tests/testunit/users_controller.rb +23 -0
- data/rails_generators/nifty_authentication/templates/user.rb +42 -0
- data/rails_generators/nifty_authentication/templates/users_controller.rb +18 -0
- data/rails_generators/nifty_authentication/templates/users_helper.rb +2 -0
- data/rails_generators/nifty_authentication/templates/views/erb/login.html.erb +30 -0
- data/rails_generators/nifty_authentication/templates/views/erb/signup.html.erb +24 -0
- data/rails_generators/nifty_authentication/templates/views/haml/login.html.haml +30 -0
- data/rails_generators/nifty_authentication/templates/views/haml/signup.html.haml +24 -0
- data/rails_generators/nifty_config/USAGE +23 -0
- data/rails_generators/nifty_config/nifty_config_generator.rb +32 -0
- data/rails_generators/nifty_config/templates/config.yml +8 -0
- data/rails_generators/nifty_config/templates/load_config.rb +2 -0
- data/rails_generators/nifty_layout/USAGE +25 -0
- data/rails_generators/nifty_layout/lib/insert_commands.rb +43 -0
- data/rails_generators/nifty_layout/nifty_layout_generator.rb +55 -0
- data/rails_generators/nifty_layout/templates/helper.rb +22 -0
- data/rails_generators/nifty_layout/templates/layout.html.haml +26 -0
- data/rails_generators/nifty_layout/templates/stylesheet.sass +67 -0
- data/rails_generators/nifty_scaffold/USAGE +51 -0
- data/rails_generators/nifty_scaffold/nifty_scaffold_generator.rb +237 -0
- data/rails_generators/nifty_scaffold/templates/actions/create.rb +9 -0
- data/rails_generators/nifty_scaffold/templates/actions/destroy.rb +6 -0
- data/rails_generators/nifty_scaffold/templates/actions/edit.rb +3 -0
- data/rails_generators/nifty_scaffold/templates/actions/index.rb +3 -0
- data/rails_generators/nifty_scaffold/templates/actions/new.rb +3 -0
- data/rails_generators/nifty_scaffold/templates/actions/show.rb +3 -0
- data/rails_generators/nifty_scaffold/templates/actions/update.rb +9 -0
- data/rails_generators/nifty_scaffold/templates/controller.rb +3 -0
- data/rails_generators/nifty_scaffold/templates/fixtures.yml +9 -0
- data/rails_generators/nifty_scaffold/templates/helper.rb +2 -0
- data/rails_generators/nifty_scaffold/templates/migration.rb +16 -0
- data/rails_generators/nifty_scaffold/templates/model.rb +3 -0
- data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/create.rb +11 -0
- data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/destroy.rb +6 -0
- data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/edit.rb +4 -0
- data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/index.rb +4 -0
- data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/new.rb +4 -0
- data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/show.rb +4 -0
- data/rails_generators/nifty_scaffold/templates/tests/rspec/actions/update.rb +11 -0
- data/rails_generators/nifty_scaffold/templates/tests/rspec/controller.rb +8 -0
- data/rails_generators/nifty_scaffold/templates/tests/rspec/model.rb +7 -0
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/create.rb +13 -0
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/destroy.rb +8 -0
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/edit.rb +6 -0
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/index.rb +6 -0
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/new.rb +6 -0
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/show.rb +6 -0
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/actions/update.rb +13 -0
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/controller.rb +5 -0
- data/rails_generators/nifty_scaffold/templates/tests/shoulda/model.rb +7 -0
- data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/create.rb +11 -0
- data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/destroy.rb +6 -0
- data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/edit.rb +4 -0
- data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/index.rb +4 -0
- data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/new.rb +4 -0
- data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/show.rb +4 -0
- data/rails_generators/nifty_scaffold/templates/tests/testunit/actions/update.rb +11 -0
- data/rails_generators/nifty_scaffold/templates/tests/testunit/controller.rb +5 -0
- data/rails_generators/nifty_scaffold/templates/tests/testunit/model.rb +7 -0
- data/rails_generators/nifty_scaffold/templates/views/erb/_form.html.erb +10 -0
- data/rails_generators/nifty_scaffold/templates/views/erb/edit.html.erb +14 -0
- data/rails_generators/nifty_scaffold/templates/views/erb/index.html.erb +29 -0
- data/rails_generators/nifty_scaffold/templates/views/erb/new.html.erb +7 -0
- data/rails_generators/nifty_scaffold/templates/views/erb/show.html.erb +20 -0
- data/rails_generators/nifty_scaffold/templates/views/haml/_form.html.haml +10 -0
- data/rails_generators/nifty_scaffold/templates/views/haml/edit.html.haml +14 -0
- data/rails_generators/nifty_scaffold/templates/views/haml/index.html.haml +25 -0
- data/rails_generators/nifty_scaffold/templates/views/haml/new.html.haml +7 -0
- data/rails_generators/nifty_scaffold/templates/views/haml/show.html.haml +20 -0
- data/tasks/deployment.rake +2 -0
- data/test/test_helper.rb +117 -0
- data/test/test_nifty_admin_scaffold_generator.rb +538 -0
- data/test/test_nifty_authentication_generator.rb +236 -0
- data/test/test_nifty_config_generator.rb +37 -0
- data/test/test_nifty_layout_generator.rb +47 -0
- data/test/test_nifty_scaffold_generator.rb +538 -0
- metadata +222 -0
@@ -0,0 +1,236 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_helper.rb")
|
2
|
+
|
3
|
+
class TestNiftyAuthenticationGenerator < 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
|
+
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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 names" do
|
161
|
+
rails_generator :nifty_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
|
+
end
|
236
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_helper.rb")
|
2
|
+
|
3
|
+
class TestNiftyConfigGenerator < 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 "generator without name" do
|
21
|
+
rails_generator :nifty_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 :nifty_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,47 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "test_helper.rb")
|
2
|
+
|
3
|
+
class TestNiftyLayoutGenerator < 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 "generator without name" do
|
21
|
+
rails_generator :nifty_layout
|
22
|
+
should_generate_file 'app/views/layouts/application.html.erb'
|
23
|
+
end
|
24
|
+
|
25
|
+
context "generator with name" do
|
26
|
+
rails_generator :nifty_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 :nifty_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 :nifty_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
|
+
|
43
|
+
context "generator with compass option" do
|
44
|
+
rails_generator :nifty_layout, "foobar", :compass => true
|
45
|
+
should_generate_file 'app/stylesheets/partials/_foobar.sass'
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,538 @@
|
|
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 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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 :nifty_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 "generator with --make-fixture" do
|
306
|
+
rails_generator :nifty_scaffold, "line_item", "name:string", :make_fixture => true
|
307
|
+
|
308
|
+
should "have fixture with attributes" do
|
309
|
+
assert_generated_file "test/fixtures/line_items.yml" do |body|
|
310
|
+
assert_match "name: MyString", body
|
311
|
+
end
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
context "existing model" do
|
316
|
+
setup do
|
317
|
+
Dir.mkdir("#{RAILS_ROOT}/app") unless File.exists?("#{RAILS_ROOT}/app")
|
318
|
+
Dir.mkdir("#{RAILS_ROOT}/app/models") unless File.exists?("#{RAILS_ROOT}/app/models")
|
319
|
+
File.open("#{RAILS_ROOT}/app/models/recipe.rb", 'w') do |f|
|
320
|
+
f.puts "raise 'should not be loaded'"
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
324
|
+
teardown do
|
325
|
+
FileUtils.rm_rf "#{RAILS_ROOT}/app"
|
326
|
+
end
|
327
|
+
|
328
|
+
context "generator with skip model option" do
|
329
|
+
rails_generator :nifty_scaffold, "recipe", :skip_model => true
|
330
|
+
|
331
|
+
should "use model columns for attributes" do
|
332
|
+
assert_generated_file "app/views/recipes/_form.html.erb" do |body|
|
333
|
+
assert_match "<%= f.text_field :foo %>", body
|
334
|
+
assert_match "<%= f.text_field :bar %>", body
|
335
|
+
assert_match "<%= f.text_field :book_id %>", body
|
336
|
+
assert_no_match(/:id/, body)
|
337
|
+
assert_no_match(/:created_at/, body)
|
338
|
+
assert_no_match(/:updated_at/, body)
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
342
|
+
should "not generate migration file" do
|
343
|
+
assert Dir.glob("#{RAILS_ROOT}/db/migrate/*.rb").empty?
|
344
|
+
end
|
345
|
+
end
|
346
|
+
|
347
|
+
context "generator with attribute specified" do
|
348
|
+
rails_generator :nifty_scaffold, "recipe", "zippo:string"
|
349
|
+
|
350
|
+
should "use specified attribute" do
|
351
|
+
assert_generated_file "app/views/recipes/_form.html.erb" do |body|
|
352
|
+
assert_match "<%= f.text_field :zippo %>", body
|
353
|
+
end
|
354
|
+
end
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
context "with spec dir" do
|
359
|
+
setup do
|
360
|
+
Dir.mkdir("#{RAILS_ROOT}/spec") unless File.exists?("#{RAILS_ROOT}/spec")
|
361
|
+
end
|
362
|
+
|
363
|
+
teardown do
|
364
|
+
FileUtils.rm_rf "#{RAILS_ROOT}/spec"
|
365
|
+
end
|
366
|
+
|
367
|
+
context "generator with some attributes" do
|
368
|
+
rails_generator :nifty_scaffold, "line_item", "name:string", "description:text"
|
369
|
+
|
370
|
+
should_generate_file "spec/models/line_item_spec.rb"
|
371
|
+
|
372
|
+
should "have controller specs for each action" do
|
373
|
+
assert_generated_file "spec/controllers/line_items_controller_spec.rb" do |body|
|
374
|
+
assert_match "get :index", body
|
375
|
+
assert_match "get :show", body
|
376
|
+
assert_match "get :new", body
|
377
|
+
assert_match "get :edit", body
|
378
|
+
assert_match "post :create", body
|
379
|
+
assert_match "put :update", body
|
380
|
+
assert_match "delete :destroy", body
|
381
|
+
end
|
382
|
+
end
|
383
|
+
|
384
|
+
should "generate fixture file" do
|
385
|
+
assert Dir.glob("#{RAILS_ROOT}/test/fixtures/*.yml").empty?
|
386
|
+
end
|
387
|
+
end
|
388
|
+
|
389
|
+
context "generator with new and index actions" do
|
390
|
+
rails_generator :nifty_scaffold, "line_item", "new", "index"
|
391
|
+
|
392
|
+
should "have controller spec with only mentioned actions" do
|
393
|
+
assert_generated_file "spec/controllers/line_items_controller_spec.rb" do |body|
|
394
|
+
assert_match "get :index", body
|
395
|
+
assert_match "get :new", body
|
396
|
+
assert_match "post :create", body
|
397
|
+
assert_no_match(/get :show/, body)
|
398
|
+
assert_no_match(/get :edit/, body)
|
399
|
+
assert_no_match(/put :update/, body)
|
400
|
+
assert_no_match(/delete :destroy/, body)
|
401
|
+
end
|
402
|
+
end
|
403
|
+
|
404
|
+
should "redirect to index action on successful create" do
|
405
|
+
assert_generated_file "spec/controllers/line_items_controller_spec.rb" do |body|
|
406
|
+
assert_match "redirect_to(line_items_url)", body
|
407
|
+
end
|
408
|
+
end
|
409
|
+
end
|
410
|
+
|
411
|
+
context "generator with edit and index actions" do
|
412
|
+
rails_generator :nifty_scaffold, "line_item", "edit", "index"
|
413
|
+
|
414
|
+
should "redirect to index action on successful update" do
|
415
|
+
assert_generated_file "spec/controllers/line_items_controller_spec.rb" do |body|
|
416
|
+
assert_match "redirect_to(line_items_url)", body
|
417
|
+
end
|
418
|
+
end
|
419
|
+
end
|
420
|
+
|
421
|
+
context "generator with testunit specified" do
|
422
|
+
rails_generator :nifty_scaffold, "line_item", "name:string", :test_framework => :testunit
|
423
|
+
|
424
|
+
should_generate_file "test/unit/line_item_test.rb"
|
425
|
+
end
|
426
|
+
end
|
427
|
+
|
428
|
+
context "with test dir" do
|
429
|
+
setup do
|
430
|
+
Dir.mkdir("#{RAILS_ROOT}/test") unless File.exists?("#{RAILS_ROOT}/test")
|
431
|
+
end
|
432
|
+
|
433
|
+
teardown do
|
434
|
+
FileUtils.rm_rf "#{RAILS_ROOT}/test"
|
435
|
+
end
|
436
|
+
|
437
|
+
context "generator with some attributes" do
|
438
|
+
rails_generator :nifty_scaffold, "line_item", "name:string", "description:text"
|
439
|
+
|
440
|
+
should_generate_file "test/unit/line_item_test.rb"
|
441
|
+
|
442
|
+
should "have controller tests for each action" do
|
443
|
+
assert_generated_file "test/functional/line_items_controller_test.rb" do |body|
|
444
|
+
assert_match "get :index", body
|
445
|
+
assert_match "get :show", body
|
446
|
+
assert_match "get :new", body
|
447
|
+
assert_match "get :edit", body
|
448
|
+
assert_match "post :create", body
|
449
|
+
assert_match "put :update", body
|
450
|
+
assert_match "delete :destroy", body
|
451
|
+
end
|
452
|
+
end
|
453
|
+
|
454
|
+
should "generate fixture file" do
|
455
|
+
assert Dir.glob("#{RAILS_ROOT}/test/fixtures/*.yml").empty?
|
456
|
+
end
|
457
|
+
end
|
458
|
+
|
459
|
+
context "generator with new and index actions" do
|
460
|
+
rails_generator :nifty_scaffold, "line_item", "new", "index"
|
461
|
+
|
462
|
+
should "have controller test with only mentioned actions" do
|
463
|
+
assert_generated_file "test/functional/line_items_controller_test.rb" do |body|
|
464
|
+
assert_match "get :index", body
|
465
|
+
assert_match "get :new", body
|
466
|
+
assert_match "post :create", body
|
467
|
+
assert_no_match(/get :show/, body)
|
468
|
+
assert_no_match(/get :edit/, body)
|
469
|
+
assert_no_match(/put :update/, body)
|
470
|
+
assert_no_match(/delete :destroy/, body)
|
471
|
+
end
|
472
|
+
end
|
473
|
+
|
474
|
+
should "redirect to index action on successful create" do
|
475
|
+
assert_generated_file "test/functional/line_items_controller_test.rb" do |body|
|
476
|
+
assert_match "assert_redirected_to line_items_url", body
|
477
|
+
end
|
478
|
+
end
|
479
|
+
end
|
480
|
+
|
481
|
+
context "generator with edit and index actions" do
|
482
|
+
rails_generator :nifty_scaffold, "line_item", "edit", "index"
|
483
|
+
|
484
|
+
should "redirect to index action on successful update" do
|
485
|
+
assert_generated_file "test/functional/line_items_controller_test.rb" do |body|
|
486
|
+
assert_match "assert_redirected_to line_items_url", body
|
487
|
+
end
|
488
|
+
end
|
489
|
+
end
|
490
|
+
|
491
|
+
context "generator with rspec specified" do
|
492
|
+
rails_generator :nifty_scaffold, "line_item", "name:string", :test_framework => :rspec
|
493
|
+
|
494
|
+
should_generate_file "spec/models/line_item_spec.rb"
|
495
|
+
end
|
496
|
+
|
497
|
+
context "generator with shoulda specified" do
|
498
|
+
rails_generator :nifty_scaffold, "line_item", "name:string", :test_framework => :shoulda
|
499
|
+
|
500
|
+
should "have controller and model tests using shoulda syntax" do
|
501
|
+
assert_generated_file "test/functional/line_items_controller_test.rb" do |body|
|
502
|
+
assert_match " should ", body
|
503
|
+
end
|
504
|
+
|
505
|
+
assert_generated_file "test/unit/line_item_test.rb" do |body|
|
506
|
+
assert_match " should ", body
|
507
|
+
end
|
508
|
+
end
|
509
|
+
end
|
510
|
+
end
|
511
|
+
|
512
|
+
context "generator with haml option" do
|
513
|
+
rails_generator :nifty_scaffold, "LineItem", :haml => true
|
514
|
+
|
515
|
+
%w[index show new edit _form].each do |action|
|
516
|
+
should_generate_file "app/views/line_items/#{action}.html.haml"
|
517
|
+
end
|
518
|
+
|
519
|
+
should "render the form partial in views" do
|
520
|
+
%w[new edit].each do |action|
|
521
|
+
assert_generated_file "app/views/line_items/#{action}.html.haml" do |body|
|
522
|
+
assert_match /^= render :partial => 'form'$/, body
|
523
|
+
end
|
524
|
+
end
|
525
|
+
end
|
526
|
+
end
|
527
|
+
end
|
528
|
+
end
|
529
|
+
|
530
|
+
# just an example model we can use
|
531
|
+
class Recipe < ActiveRecord::Base
|
532
|
+
add_column :id, :integer
|
533
|
+
add_column :foo, :string
|
534
|
+
add_column :bar, :string
|
535
|
+
add_column :book_id, :integer
|
536
|
+
add_column :created_at, :datetime
|
537
|
+
add_column :updated_at, :datetime
|
538
|
+
end
|