minerva-nifty-generators 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +105 -0
- data/LICENSE +20 -0
- data/Manifest +100 -0
- data/README.rdoc +106 -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_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/nifty_layout_generator.rb +44 -0
- data/rails_generators/nifty_layout/templates/helper.rb +22 -0
- data/rails_generators/nifty_layout/templates/layout.html.erb +22 -0
- data/rails_generators/nifty_layout/templates/layout.html.haml +19 -0
- data/rails_generators/nifty_layout/templates/stylesheet.css +81 -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 +232 -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_authentication_generator.rb +236 -0
- data/test/test_nifty_config_generator.rb +37 -0
- data/test/test_nifty_layout_generator.rb +42 -0
- data/test/test_nifty_scaffold_generator.rb +534 -0
- metadata +169 -0
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
class NiftyScaffoldGenerator < Rails::Generator::Base
|
|
2
|
+
attr_accessor :name, :attributes, :controller_actions
|
|
3
|
+
|
|
4
|
+
def initialize(runtime_args, runtime_options = {})
|
|
5
|
+
super
|
|
6
|
+
usage if @args.empty?
|
|
7
|
+
|
|
8
|
+
@name = @args.first
|
|
9
|
+
@controller_actions = []
|
|
10
|
+
@attributes = []
|
|
11
|
+
|
|
12
|
+
@args[1..-1].each do |arg|
|
|
13
|
+
if arg == '!'
|
|
14
|
+
options[:invert] = true
|
|
15
|
+
elsif arg.include? ':'
|
|
16
|
+
@attributes << Rails::Generator::GeneratedAttribute.new(*arg.split(":"))
|
|
17
|
+
else
|
|
18
|
+
@controller_actions << arg
|
|
19
|
+
@controller_actions << 'create' if arg == 'new'
|
|
20
|
+
@controller_actions << 'update' if arg == 'edit'
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
@controller_actions.uniq!
|
|
25
|
+
@attributes.uniq!
|
|
26
|
+
|
|
27
|
+
if options[:invert] || @controller_actions.empty?
|
|
28
|
+
@controller_actions = all_actions - @controller_actions
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
if @attributes.empty?
|
|
32
|
+
options[:skip_model] = true # default to skipping model if no attributes passed
|
|
33
|
+
if model_exists?
|
|
34
|
+
model_columns_for_attributes.each do |column|
|
|
35
|
+
@attributes << Rails::Generator::GeneratedAttribute.new(column.name.to_s, column.type.to_s)
|
|
36
|
+
end
|
|
37
|
+
else
|
|
38
|
+
@attributes << Rails::Generator::GeneratedAttribute.new('name', 'string')
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def manifest
|
|
44
|
+
record do |m|
|
|
45
|
+
unless options[:skip_model]
|
|
46
|
+
m.directory "app/models"
|
|
47
|
+
m.template "model.rb", "app/models/#{singular_name}.rb"
|
|
48
|
+
unless options[:skip_migration]
|
|
49
|
+
m.migration_template "migration.rb", "db/migrate", :migration_file_name => "create_#{plural_name}"
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
if rspec?
|
|
53
|
+
m.directory "spec/models"
|
|
54
|
+
m.template "tests/#{test_framework}/model.rb", "spec/models/#{singular_name}_spec.rb"
|
|
55
|
+
m.directory "spec/fixtures"
|
|
56
|
+
m.template "fixtures.yml", "spec/fixtures/#{plural_name}.yml"
|
|
57
|
+
else
|
|
58
|
+
m.directory "test/unit"
|
|
59
|
+
m.template "tests/#{test_framework}/model.rb", "test/unit/#{singular_name}_test.rb"
|
|
60
|
+
m.directory "test/fixtures"
|
|
61
|
+
m.template "fixtures.yml", "test/fixtures/#{plural_name}.yml"
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
unless options[:skip_controller]
|
|
66
|
+
m.directory "app/controllers"
|
|
67
|
+
m.template "controller.rb", "app/controllers/#{plural_name}_controller.rb"
|
|
68
|
+
|
|
69
|
+
m.directory "app/helpers"
|
|
70
|
+
m.template "helper.rb", "app/helpers/#{plural_name}_helper.rb"
|
|
71
|
+
|
|
72
|
+
m.directory "app/views/#{plural_name}"
|
|
73
|
+
controller_actions.each do |action|
|
|
74
|
+
if File.exist? source_path("views/#{view_language}/#{action}.html.#{view_language}")
|
|
75
|
+
m.template "views/#{view_language}/#{action}.html.#{view_language}", "app/views/#{plural_name}/#{action}.html.#{view_language}"
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
if form_partial?
|
|
80
|
+
m.template "views/#{view_language}/_form.html.#{view_language}", "app/views/#{plural_name}/_form.html.#{view_language}"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
m.route_resources plural_name
|
|
84
|
+
|
|
85
|
+
if rspec?
|
|
86
|
+
m.directory "spec/controllers"
|
|
87
|
+
m.template "tests/#{test_framework}/controller.rb", "spec/controllers/#{plural_name}_controller_spec.rb"
|
|
88
|
+
else
|
|
89
|
+
m.directory "test/functional"
|
|
90
|
+
m.template "tests/#{test_framework}/controller.rb", "test/functional/#{plural_name}_controller_test.rb"
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def form_partial?
|
|
97
|
+
actions? :new, :edit
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def all_actions
|
|
101
|
+
%w[index show new create edit update destroy]
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def action?(name)
|
|
105
|
+
controller_actions.include? name.to_s
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def actions?(*names)
|
|
109
|
+
names.all? { |n| action? n.to_s }
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def singular_name
|
|
113
|
+
name.underscore
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def plural_name
|
|
117
|
+
name.underscore.pluralize
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def class_name
|
|
121
|
+
name.camelize
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def plural_class_name
|
|
125
|
+
plural_name.camelize
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def controller_methods(dir_name)
|
|
129
|
+
controller_actions.map do |action|
|
|
130
|
+
read_template("#{dir_name}/#{action}.rb")
|
|
131
|
+
end.join(" \n").strip
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def render_form
|
|
135
|
+
if form_partial?
|
|
136
|
+
if options[:haml]
|
|
137
|
+
"= render :partial => 'form'"
|
|
138
|
+
else
|
|
139
|
+
"<%= render :partial => 'form' %>"
|
|
140
|
+
end
|
|
141
|
+
else
|
|
142
|
+
read_template("views/#{view_language}/_form.html.#{view_language}")
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def items_path(suffix = 'path')
|
|
147
|
+
if action? :index
|
|
148
|
+
"#{plural_name}_#{suffix}"
|
|
149
|
+
else
|
|
150
|
+
"root_#{suffix}"
|
|
151
|
+
end
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def item_path(suffix = 'path')
|
|
155
|
+
if action? :show
|
|
156
|
+
"@#{singular_name}"
|
|
157
|
+
else
|
|
158
|
+
items_path(suffix)
|
|
159
|
+
end
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
def item_path_for_spec(suffix = 'path')
|
|
163
|
+
if action? :show
|
|
164
|
+
"#{singular_name}_#{suffix}(assigns[:#{singular_name}])"
|
|
165
|
+
else
|
|
166
|
+
items_path(suffix)
|
|
167
|
+
end
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def item_path_for_test(suffix = 'path')
|
|
171
|
+
if action? :show
|
|
172
|
+
"#{singular_name}_#{suffix}(assigns(:#{singular_name}))"
|
|
173
|
+
else
|
|
174
|
+
items_path(suffix)
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def model_columns_for_attributes
|
|
179
|
+
class_name.constantize.columns.reject do |column|
|
|
180
|
+
column.name.to_s =~ /^(id|created_at|updated_at)$/
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def rspec?
|
|
185
|
+
test_framework == :rspec
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
protected
|
|
189
|
+
|
|
190
|
+
def view_language
|
|
191
|
+
options[:haml] ? 'haml' : 'erb'
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
def test_framework
|
|
195
|
+
options[:test_framework] ||= default_test_framework
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def default_test_framework
|
|
199
|
+
File.exist?(destination_path("spec")) ? :rspec : :testunit
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
def add_options!(opt)
|
|
203
|
+
opt.separator ''
|
|
204
|
+
opt.separator 'Options:'
|
|
205
|
+
opt.on("--skip-model", "Don't generate a model or migration file.") { |v| options[:skip_model] = v }
|
|
206
|
+
opt.on("--skip-migration", "Don't generate migration file for model.") { |v| options[:skip_migration] = v }
|
|
207
|
+
opt.on("--skip-timestamps", "Don't add timestamps to migration file.") { |v| options[:skip_timestamps] = v }
|
|
208
|
+
opt.on("--skip-controller", "Don't generate controller, helper, or views.") { |v| options[:skip_controller] = v }
|
|
209
|
+
opt.on("--invert", "Generate all controller actions except these mentioned.") { |v| options[:invert] = v }
|
|
210
|
+
opt.on("--haml", "Generate HAML views instead of ERB.") { |v| options[:haml] = v }
|
|
211
|
+
opt.on("--testunit", "Use test/unit for test files.") { options[:test_framework] = :testunit }
|
|
212
|
+
opt.on("--rspec", "Use RSpec for test files.") { options[:test_framework] = :rspec }
|
|
213
|
+
opt.on("--shoulda", "Use Shoulda for test files.") { options[:test_framework] = :shoulda }
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
# is there a better way to do this? Perhaps with const_defined?
|
|
217
|
+
def model_exists?
|
|
218
|
+
File.exist? destination_path("app/models/#{singular_name}.rb")
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
def read_template(relative_path)
|
|
222
|
+
ERB.new(File.read(source_path(relative_path)), nil, '-').result(binding)
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def banner
|
|
226
|
+
<<-EOS
|
|
227
|
+
Creates a controller and optional model given the name, actions, and attributes.
|
|
228
|
+
|
|
229
|
+
USAGE: #{$0} #{spec.name} ModelName [controller_actions and model:attributes] [options]
|
|
230
|
+
EOS
|
|
231
|
+
end
|
|
232
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
def create
|
|
2
|
+
@<%= singular_name %> = <%= class_name %>.new(params[:<%= singular_name %>])
|
|
3
|
+
if @<%= singular_name %>.save
|
|
4
|
+
flash[:notice] = "Successfully created <%= name.underscore.humanize.downcase %>."
|
|
5
|
+
redirect_to <%= item_path('url') %>
|
|
6
|
+
else
|
|
7
|
+
render :action => 'new'
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
def update
|
|
2
|
+
@<%= singular_name %> = <%= class_name %>.find(params[:id])
|
|
3
|
+
if @<%= singular_name %>.update_attributes(params[:<%= singular_name %>])
|
|
4
|
+
flash[:notice] = "Successfully updated <%= name.underscore.humanize.downcase %>."
|
|
5
|
+
redirect_to <%= item_path('url') %>
|
|
6
|
+
else
|
|
7
|
+
render :action => 'edit'
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
class Create<%= plural_class_name %> < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :<%= plural_name %> do |t|
|
|
4
|
+
<%- for attribute in attributes -%>
|
|
5
|
+
t.<%= attribute.type %> :<%= attribute.name %>
|
|
6
|
+
<%- end -%>
|
|
7
|
+
<%- unless options[:skip_timestamps] -%>
|
|
8
|
+
t.timestamps
|
|
9
|
+
<%- end -%>
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def self.down
|
|
14
|
+
drop_table :<%= plural_name %>
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
it "create action should render new template when model is invalid" do
|
|
2
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
3
|
+
post :create
|
|
4
|
+
response.should render_template(:new)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
it "create action should redirect when model is valid" do
|
|
8
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
9
|
+
post :create
|
|
10
|
+
response.should redirect_to(<%= item_path_for_spec('url') %>)
|
|
11
|
+
end
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
it "destroy action should destroy model and redirect to index action" do
|
|
2
|
+
<%= singular_name %> = <%= class_name %>.first
|
|
3
|
+
delete :destroy, :id => <%= singular_name %>
|
|
4
|
+
response.should redirect_to(<%= items_path('url') %>)
|
|
5
|
+
<%= class_name %>.exists?(<%= singular_name %>.id).should be_false
|
|
6
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
it "update action should render edit template when model is invalid" do
|
|
2
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
3
|
+
put :update, :id => <%= class_name %>.first
|
|
4
|
+
response.should render_template(:edit)
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
it "update action should redirect when model is valid" do
|
|
8
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
9
|
+
put :update, :id => <%= class_name %>.first
|
|
10
|
+
response.should redirect_to(<%= item_path_for_spec('url') %>)
|
|
11
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
context "create action" do
|
|
2
|
+
should "render new template when model is invalid" do
|
|
3
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(false)
|
|
4
|
+
post :create
|
|
5
|
+
assert_template 'new'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
should "redirect when model is valid" do
|
|
9
|
+
<%= class_name %>.any_instance.stubs(:valid?).returns(true)
|
|
10
|
+
post :create
|
|
11
|
+
assert_redirected_to <%= item_path_for_test('url') %>
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
context "destroy action" do
|
|
2
|
+
should "destroy model and redirect to index action" do
|
|
3
|
+
<%= singular_name %> = <%= class_name %>.first
|
|
4
|
+
delete :destroy, :id => <%= singular_name %>
|
|
5
|
+
assert_redirected_to <%= items_path('url') %>
|
|
6
|
+
assert !<%= class_name %>.exists?(<%= singular_name %>.id)
|
|
7
|
+
end
|
|
8
|
+
end
|