leonardo 1.5.0 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. data/CHANGELOG +9 -3
  2. data/lib/generators/base.rb +262 -24
  3. data/lib/generators/erb/leosca/leosca_generator.rb +38 -22
  4. data/lib/generators/erb/leosca/templates/_form.html.erb +14 -3
  5. data/lib/generators/erb/leosca/templates/_list.erb +13 -20
  6. data/lib/generators/erb/leosca/templates/_show.erb +9 -0
  7. data/lib/generators/erb/leosca/templates/edit.html.erb +3 -5
  8. data/lib/generators/erb/leosca/templates/formtastic/_form.html.erb +10 -4
  9. data/lib/generators/erb/leosca/templates/index.html.erb +15 -4
  10. data/lib/generators/erb/leosca/templates/new.html.erb +1 -1
  11. data/lib/generators/erb/leosca/templates/show.html.erb +5 -22
  12. data/lib/generators/erb/leosca/templates/show.js.erb +7 -0
  13. data/lib/generators/leolay/USAGE +1 -1
  14. data/lib/generators/leolay/install_generator.rb +0 -1
  15. data/lib/generators/leolay/leolay_generator.rb +24 -17
  16. data/lib/generators/leolay/templates/config/locales/devise.en.yml +1 -0
  17. data/lib/generators/leolay/templates/config/locales/devise.it.yml +1 -0
  18. data/lib/generators/leolay/templates/config/locales/en.yml +5 -5
  19. data/lib/generators/leolay/templates/config/locales/it.yml +5 -5
  20. data/lib/generators/leolay/templates/lib/generators/rspec/scaffold/scaffold_generator.rb +173 -0
  21. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/controller_spec.rb +39 -39
  22. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/edit_spec.rb +4 -1
  23. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/index_spec.rb +15 -4
  24. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/new_spec.rb +5 -2
  25. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/routing_spec.rb +37 -0
  26. data/lib/generators/leolay/templates/lib/templates/rspec/scaffold/show_spec.rb +3 -0
  27. data/lib/generators/leolay/templates/styles/cloudy/{stylesheet.sass → stylesheets/app/stylesheet.sass} +0 -0
  28. data/lib/generators/leolay/templates/{vendor/assets/stylesheets → styles/cloudy/stylesheets/vendor}/jquery-ui/jquery-ui-1.8.16.redcarpet.css +17 -17
  29. data/lib/generators/leolay/templates/vendor/assets/javascripts/jquery-ui/jquery.ui.datepicker-de.js +1 -1
  30. data/lib/generators/leolay/templates/vendor/assets/javascripts/jquery-ui/jquery.ui.datepicker-en.js +1 -1
  31. data/lib/generators/leolay/templates/vendor/assets/javascripts/jquery-ui/jquery.ui.datepicker-it.js +1 -1
  32. data/lib/generators/leosca/install_generator.rb +1 -1
  33. data/lib/generators/rails/leosca/leosca_generator.rb +21 -0
  34. data/lib/generators/rails/leosca_controller/leosca_controller_generator.rb +41 -114
  35. data/lib/generators/rails/leosca_controller/templates/controller.rb +51 -23
  36. data/template.rb +4 -1
  37. metadata +10 -6
@@ -9,7 +9,6 @@ module Leolay
9
9
  copy_file "leolay/leolay_generator.rb", "lib/generators/leolay/leolay_generator.rb"
10
10
  copy_file "leolay/USAGE", "lib/generators/leolay/USAGE"
11
11
  directory "leolay/templates", "lib/generators/leolay/templates"
12
- #copy_file "leonardo_shared.rb", "lib/generators/leonardo_shared.rb" unless File.exists? "lib/generators/leonardo_shared.rb"
13
12
  end
14
13
  end
15
14
  end
@@ -1,20 +1,20 @@
1
1
  class LeolayGenerator < Rails::Generators::Base
2
2
  source_root File.expand_path('../templates', __FILE__)
3
3
  argument :style, :type => :string, :default => "cloudy"
4
- class_option :pagination, :type => :boolean, :default => true, :description => "Include pagination files"
5
- class_option :main_color, :type => :string, :default => nil, :description => "Force a main color for the stylesheet"
6
- class_option :second_color, :type => :string, :default => nil, :description => "Force a secondary color for the stylesheet"
7
- class_option :authentication, :type => :boolean, :default => true, :description => "Add code to manage authentication with devise"
8
- class_option :authorization, :type => :boolean, :default => true, :description => "Add code to manage authorization with cancan"
9
- class_option :user_class, :type => :boolean, :default => 'user', :description => "Set the user class name"
10
- class_option :formtastic, :type => :boolean, :default => true, :description => "Copy formtastic files into leosca custom folder (inside project)"
11
- class_option :jquery_ui, :type => :boolean, :default => true, :description => "To use jQuery ui improvement"
12
-
4
+ class_option :pagination, :type => :boolean, :default => true, :desc => "Include pagination files"
5
+ class_option :main_color, :type => :string, :default => nil, :desc => "Force a main color for the stylesheet"
6
+ class_option :second_color, :type => :string, :default => nil, :desc => "Force a secondary color for the stylesheet"
7
+ class_option :authentication, :type => :boolean, :default => true, :desc => "Add code to manage authentication with devise"
8
+ class_option :authorization, :type => :boolean, :default => true, :desc => "Add code to manage authorization with cancan"
9
+ class_option :user_class, :type => :boolean, :default => 'user', :desc => "Set the user class name"
10
+ class_option :formtastic, :type => :boolean, :default => true, :desc => "Copy formtastic files into leosca custom folder (inside project)"
11
+ class_option :jquery_ui, :type => :boolean, :default => true, :desc => "To use jQuery ui improvement"
12
+ class_option :rspec, :type => :boolean, :default => true, :desc => "Include custom rspec generator and custom templates"
13
13
 
14
14
  def generate_layout
15
15
  template "config.rb", "config/initializers/config.rb"
16
16
 
17
- template "styles/#{style_name}/stylesheet.sass", "app/assets/stylesheets/#{style_name}.sass"
17
+ template "styles/#{style_name}/stylesheets/app/stylesheet.sass", "app/assets/stylesheets/#{style_name}.sass"
18
18
 
19
19
  copy_file "layout_helper.rb", "app/helpers/layout_helper.rb"
20
20
 
@@ -76,7 +76,7 @@ class LeolayGenerator < Rails::Generators::Base
76
76
  config.generators do |g|
77
77
  g.stylesheets false
78
78
  g.javascripts false
79
- g.leosca_controller :leosca_controller
79
+ g.leosca_controller :leosca_controller
80
80
  end
81
81
 
82
82
  config.autoload_paths += %W(\#{config.root}/lib/extras)
@@ -185,15 +185,16 @@ class LeolayGenerator < Rails::Generators::Base
185
185
  def setup_formtastic
186
186
  return unless options.formtastic?
187
187
 
188
- path = "vendor/assets/stylesheets/formtastic"
188
+ path = "styles/#{style_name}/stylesheets/vendor/formtastic"
189
+ dest_path = "vendor/assets/stylesheets/formtastic"
190
+
191
+ path = dest_path unless File.exists?(path)
192
+
189
193
  file = "#{path}/formtastic.css"
190
194
  copy_file file, file unless File.exists?(file)
191
195
  file = "#{path}/formtastic_changes.css"
192
196
  copy_file file, file
193
197
 
194
- path = "vendor/assets/stylesheets/jquery-ui"
195
- directory path, path
196
-
197
198
  file = "config/initializers/formtastic.rb"
198
199
  inject_into_file file, :after => "# Formtastic::SemanticFormBuilder.i18n_lookups_by_default = false" do
199
200
  <<-FILE.gsub(/^ /, '')
@@ -265,6 +266,8 @@ class LeolayGenerator < Rails::Generators::Base
265
266
  copy_file file, file
266
267
 
267
268
  if options.jquery_ui?
269
+ directory "styles/#{style_name}/stylesheets/vendor/jquery-ui", "vendor/assets/stylesheets/jquery-ui"
270
+
268
271
  file = "#{app_path}/application.css"
269
272
  inject_into_file file, :before => "*/" do
270
273
  <<-FILE.gsub(/^ /, '')
@@ -290,14 +293,14 @@ class LeolayGenerator < Rails::Generators::Base
290
293
 
291
294
  def setup_rspec
292
295
  file = "spec/spec_helper.rb"
293
- return unless File.exists? file
296
+ return unless File.exists?(file) && options.rspec?
294
297
  inject_into_file file, :after => "require 'rspec/rails'" do
295
298
  <<-FILE.gsub(/^ /, '')
296
299
 
297
300
  require 'capybara/rspec'
298
301
  require 'helpers/application_helpers_spec'
299
302
 
300
- Capybara.default_wait_time = 5 #default=2
303
+ Capybara.default_wait_time = 10 #default=2
301
304
  FILE
302
305
  end
303
306
 
@@ -332,6 +335,10 @@ class LeolayGenerator < Rails::Generators::Base
332
335
  copy_file file, file
333
336
  file = "lib/templates/rspec/scaffold"
334
337
  directory file, file
338
+ file = "lib/templates/rspec/scaffold"
339
+ directory file, file
340
+ file = "lib/generators/rspec/scaffold"
341
+ directory file, file
335
342
 
336
343
  end
337
344
 
@@ -27,6 +27,7 @@ en:
27
27
  passwords:
28
28
  send_instructions: 'You will receive an email with instructions about how to reset your password in a few minutes.'
29
29
  updated: 'Your password was changed successfully. You are now signed in.'
30
+ updated_not_active: 'Your password was changed successfully.'
30
31
  send_paranoid_instructions: "If your e-mail exists on our database, you will receive a password recovery link on your e-mail"
31
32
  confirmations:
32
33
  send_instructions: 'You will receive an email with instructions about how to confirm your account in a few minutes.'
@@ -25,6 +25,7 @@ it:
25
25
  passwords:
26
26
  send_instructions: "Riceverai un messaggio email con le istruzioni per reimpostare la tua password entro qualche minuto."
27
27
  updated: "La tua password è stata cambiata. Ora sei collegato."
28
+ updated_not_active: "La tua password è stata cambiata."
28
29
  send_paranoid_instructions: "Se il tuo indirizzo e-mail esiste nel nostro database, riceverai un link per il recupero della password."
29
30
  confirmations:
30
31
  send_instructions: "Riceverai un messaggio email con le istruzioni per confermare il tuo account entro qualche minuto."
@@ -51,7 +51,7 @@ en:
51
51
  currency:
52
52
  format:
53
53
  # Where is the currency sign? %u is the currency unit, %n the number (default: $5.00)
54
- format: "%u%n"
54
+ format: "%u %n"
55
55
  unit: "$"
56
56
  # These five are to override number.format and are optional
57
57
  separator: "."
@@ -179,9 +179,9 @@ en:
179
179
  prompt: "Please select"
180
180
  # Default translation keys for submit FormHelper
181
181
  submit:
182
- create: 'Create %{model}'
183
- update: 'Update %{model}'
184
- submit: 'Save %{model}'
182
+ create: "Create %{model}"
183
+ update: "Update %{model}"
184
+ submit: "Save %{model}"
185
185
 
186
186
  activerecord: &activerecord
187
187
  models: &models
@@ -220,7 +220,7 @@ en:
220
220
  current_password: "Current password"
221
221
  new_password: "New password"
222
222
 
223
- unknown_request: "Sorry, this request is unkown and cannot be processed"
223
+ unknown_request: "Sorry, this request is unknown and cannot be processed"
224
224
  generic_error: "An error was occured and doesn't permit to execute this operation"
225
225
  permission_denied: "You don't have authorization to perform this request."
226
226
  created: "%{model} was successfully created."
@@ -57,8 +57,8 @@ it:
57
57
  format: "%n %u"
58
58
  unit: "€"
59
59
  # These five are to override number.format and are optional
60
- separator: "."
61
- delimiter: ","
60
+ separator: ","
61
+ delimiter: "."
62
62
  precision: 2
63
63
  significant: false
64
64
  strip_insignificant_zeros: false
@@ -177,9 +177,9 @@ it:
177
177
  prompt: "Seleziona ..."
178
178
  # Default translation keys for submit FormHelper
179
179
  submit:
180
- create: 'Crea %{model}'
181
- update: 'Aggiorna %{model}'
182
- submit: 'Salva %{model}'
180
+ create: "Crea %{model}"
181
+ update: "Aggiorna %{model}"
182
+ submit: "Salva %{model}"
183
183
 
184
184
  activerecord: &activerecord
185
185
  models: &models
@@ -0,0 +1,173 @@
1
+ require 'generators/rspec'
2
+ require 'rails/generators/resource_helpers'
3
+ require 'generators/base' #leonardo base
4
+
5
+ puts "*" * 22
6
+ puts "Custom rspec generator"
7
+ puts "*" * 22
8
+
9
+ module Rspec
10
+ module Generators
11
+ class ScaffoldGenerator < Base
12
+ include Rails::Generators::ResourceHelpers
13
+ include ::Leonardo::Leosca
14
+ include ::Leonardo::Nested
15
+ include ::Leonardo::Nested::Test
16
+ source_paths << File.expand_path("../../helper/templates", __FILE__)
17
+ argument :attributes, :type => :array, :default => [], :banner => "field:type field:type"
18
+
19
+ class_option :orm, :desc => "ORM used to generate the controller"
20
+ class_option :template_engine, :desc => "Template engine to generate view files"
21
+ class_option :singleton, :type => :boolean, :desc => "Supply to create a singleton controller"
22
+
23
+ class_option :controller_specs, :type => :boolean, :default => true, :desc => "Generate controller specs"
24
+ class_option :view_specs, :type => :boolean, :default => true, :desc => "Generate view specs"
25
+ #Leonardo includes custom views to support capybara
26
+ #class_option :webrat, :type => :boolean, :default => false, :desc => "Use webrat methods/matchers"
27
+ #class_option :webrat_matchers, :type => :boolean, :default => false, :desc => "Use webrat methods/matchers (deprecated - use --webrat)"
28
+ class_option :helper_specs, :type => :boolean, :default => true, :desc => "Generate helper specs"
29
+ class_option :routing_specs, :type => :boolean, :default => true, :desc => "Generate routing specs"
30
+
31
+ #Leonardo options
32
+ class_option :remote, :type => :boolean, :default => true, :desc => "It checks ajax sections"
33
+ class_option :under, :type => :string, :default => "", :banner => "brand/category", :desc => "Nested resources"
34
+
35
+ def generate_controller_spec
36
+ return unless options[:controller_specs]
37
+
38
+ template 'controller_spec.rb',
39
+ File.join('spec/controllers', controller_class_path, "#{controller_file_name}_controller_spec.rb")
40
+ end
41
+
42
+ def generate_view_specs
43
+ return unless options[:view_specs]
44
+
45
+ copy_view :edit
46
+ copy_view :index unless options[:singleton]
47
+ copy_view :new
48
+ copy_view :show
49
+ end
50
+
51
+ # Invoke the helper using the controller name (pluralized)
52
+ hook_for :helper, :as => :scaffold do |invoked|
53
+ invoke invoked, [ controller_name ]
54
+ end
55
+
56
+ def generate_routing_spec
57
+ return unless options[:routing_specs]
58
+
59
+ template 'routing_spec.rb',
60
+ File.join('spec/routing', controller_class_path, "#{controller_file_name}_routing_spec.rb")
61
+ end
62
+
63
+ hook_for :integration_tool, :as => :integration
64
+
65
+ protected
66
+
67
+ def webrat?
68
+ RSpec.deprecate("--webrat-matchers", "--webrat") if options[:webrat_matchers]
69
+ options[:webrat] || options[:webrat_matchers]
70
+ end
71
+
72
+ def copy_view(view)
73
+ template "#{view}_spec.rb",
74
+ File.join("spec/views", controller_file_path, "#{view}.html.#{options[:template_engine]}_spec.rb")
75
+ end
76
+
77
+ def params
78
+ "{'these' => 'params'}"
79
+ end
80
+
81
+ # support for namespaced-resources
82
+ def ns_file_name
83
+ if ARGV[0].match(/(\w+)\/(\w+)/)
84
+ "#{$1.underscore}_#{$2.singularize.underscore}"
85
+ else
86
+ file_name
87
+ end
88
+ end
89
+
90
+ # support for namespaced-resources
91
+ def ns_table_name
92
+ if ARGV[0].match(/(\w+)\/(\w+)/)
93
+ "#{$1.underscore}/#{$2.tableize}"
94
+ else
95
+ table_name
96
+ end
97
+ end
98
+
99
+ # Returns the name of the mock. For example, if the file name is user,
100
+ # it returns mock_user.
101
+ #
102
+ # If a hash is given, it uses the hash key as the ORM method and the
103
+ # value as response. So, for ActiveRecord and file name "User":
104
+ #
105
+ # mock_file_name(:save => true)
106
+ # #=> mock_user(:save => true)
107
+ #
108
+ # If another ORM is being used and another method instead of save is
109
+ # called, it will be the one used.
110
+ #
111
+ def mock_file_name(hash=nil)
112
+ if hash
113
+ method, and_return = hash.to_a.first
114
+ method = orm_instance.send(method).split('.').last.gsub(/\(.*?\)/, '')
115
+ "mock_#{ns_file_name}(:#{method} => #{and_return})"
116
+ else
117
+ "mock_#{ns_file_name}"
118
+ end
119
+ end
120
+
121
+ # Receives the ORM chain and convert to expects. For ActiveRecord:
122
+ #
123
+ # should! orm_class.find(User, "37")
124
+ # #=> User.should_receive(:find).with(37)
125
+ #
126
+ # For Datamapper:
127
+ #
128
+ # should! orm_class.find(User, "37")
129
+ # #=> User.should_receive(:get).with(37)
130
+ #
131
+ def should_receive(chain)
132
+ stub_or_should_chain(:should_receive, chain)
133
+ end
134
+
135
+ # Receives the ORM chain and convert to stub. For ActiveRecord:
136
+ #
137
+ # stub orm_class.find(User, "37")
138
+ # #=> User.stub(:find).with(37)
139
+ #
140
+ # For Datamapper:
141
+ #
142
+ # stub orm_class.find(User, "37")
143
+ # #=> User.stub(:get).with(37)
144
+ #
145
+ def stub(chain)
146
+ stub_or_should_chain(:stub, chain)
147
+ end
148
+
149
+ def stub_or_should_chain(mode, chain)
150
+ receiver, method = chain.split(".")
151
+ method.gsub!(/\((.*?)\)/, '')
152
+
153
+ response = "#{receiver}.#{mode}(:#{method})"
154
+ response << ".with(#{$1})" unless $1.blank?
155
+ response
156
+ end
157
+
158
+ def value_for(attribute)
159
+ case attribute.type
160
+ when :string
161
+ "#{attribute.name.titleize}".inspect
162
+ else
163
+ attribute.default.inspect
164
+ end
165
+ end
166
+
167
+ def banner
168
+ self.class.banner
169
+ end
170
+
171
+ end
172
+ end
173
+ end
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'helpers/application_helpers_spec'
3
2
 
4
3
  # This spec was generated by rspec-rails when you ran the scaffold generator.
5
4
  # It demonstrates how one might use RSpec to specify the controller code that
@@ -20,14 +19,13 @@ require 'helpers/application_helpers_spec'
20
19
  # that an instance is receiving a specific message.
21
20
 
22
21
  describe <%= controller_class_name %>Controller do
23
- include ApplicationHelpers
24
22
 
25
23
  <% unless options[:singleton] -%>
26
24
  describe "GET index" do
27
25
  it "assigns all <%= table_name.pluralize %> as @<%= table_name.pluralize %>" do
28
- login_controller_as(:user)
26
+ <%= "login_controller_as(:user)" if authentication? %>
29
27
  <%= file_name %> = Factory(:<%= file_name %>)
30
- get :index
28
+ get :index<%= nested_params_http_request %>
31
29
  assigns(:<%= table_name %>).should eq([<%= file_name %>])
32
30
  end
33
31
  end
@@ -35,26 +33,26 @@ describe <%= controller_class_name %>Controller do
35
33
  <% end -%>
36
34
  describe "GET show" do
37
35
  it "assigns the requested <%= ns_file_name %> as @<%= ns_file_name %>" do
38
- login_controller_as(:user)
36
+ <%= "login_controller_as(:user)" if authentication? %>
39
37
  <%= file_name %> = Factory(:<%= file_name %>)
40
- get :show, :id => <%= file_name %>.id.to_s
38
+ get :show, :id => <%= file_name %>.id.to_s<%= nested_params_http_request %>
41
39
  assigns(:<%= ns_file_name %>).should eq(<%= file_name %>)
42
40
  end
43
41
  end
44
42
 
45
43
  describe "GET new" do
46
44
  it "assigns a new <%= ns_file_name %> as @<%= ns_file_name %>" do
47
- login_controller_as(:user)
48
- get :new
45
+ <%= "login_controller_as(:user)" if authentication? %>
46
+ get :new<%= nested_params_http_request_new_parent %>
49
47
  assigns(:<%= ns_file_name %>).should be_a_new(<%= class_name %>)
50
48
  end
51
49
  end
52
50
 
53
51
  describe "GET edit" do
54
52
  it "assigns the requested <%= ns_file_name %> as @<%= ns_file_name %>" do
55
- login_controller_as(:user)
53
+ <%= "login_controller_as(:user)" if authentication? %>
56
54
  <%= file_name %> = Factory(:<%= file_name %>)
57
- get :edit, :id => <%= file_name %>.id.to_s
55
+ get :edit, :id => <%= file_name %>.id.to_s<%= nested_params_http_request %>
58
56
  assigns(:<%= ns_file_name %>).should eq(<%= file_name %>)
59
57
  end
60
58
  end
@@ -62,40 +60,40 @@ describe <%= controller_class_name %>Controller do
62
60
  describe "POST create" do
63
61
  describe "with valid params" do
64
62
  it "creates a new <%= class_name %>" do
65
- login_controller_as(:user)
63
+ <%= "login_controller_as(:user)" if authentication? %>
66
64
  expect {
67
- post :create, :<%= ns_file_name %> => Factory.attributes_for(:<%= file_name %>)
65
+ post :create, :<%= ns_file_name %> => Factory.attributes_for(:<%= file_name %>)<%= nested_params_http_request_new_parent %>
68
66
  }.to change(<%= class_name %>, :count).by(1)
69
67
  end
70
68
 
71
69
  it "assigns a newly created <%= ns_file_name %> as @<%= ns_file_name %>" do
72
- login_controller_as(:user)
73
- post :create, :<%= ns_file_name %> => Factory.attributes_for(:<%= file_name %>)
70
+ <%= "login_controller_as(:user)" if authentication? %>
71
+ post :create, :<%= ns_file_name %> => Factory.attributes_for(:<%= file_name %>)<%= nested_params_http_request_new_parent %>
74
72
  assigns(:<%= ns_file_name %>).should be_a(<%= class_name %>)
75
73
  assigns(:<%= ns_file_name %>).should be_persisted
76
74
  end
77
75
 
78
76
  it "redirects to the created <%= ns_file_name %>" do
79
- login_controller_as(:user)
80
- post :create, :<%= ns_file_name %> => Factory.attributes_for(:<%= file_name %>)
81
- response.should redirect_to(<%= class_name %>.last)
77
+ <%= "login_controller_as(:user)" if authentication? %>
78
+ post :create, :<%= ns_file_name %> => Factory.attributes_for(:<%= file_name %>)<%= nested_params_http_request_new_parent %>
79
+ response.should redirect_to(<%= show_resource_path_test "#{class_name}.last" %>)
82
80
  end
83
81
  end
84
82
 
85
83
  describe "with invalid params" do
86
84
  it "assigns a newly created but unsaved <%= ns_file_name %> as @<%= ns_file_name %>" do
87
- login_controller_as(:user)
85
+ <%= "login_controller_as(:user)" if authentication? %>
88
86
  # Trigger the behavior that occurs when invalid params are submitted
89
87
  <%= class_name %>.any_instance.stub(:save).and_return(false)
90
- post :create, :<%= ns_file_name %> => {}
88
+ post :create, :<%= ns_file_name %> => {}<%= nested_params_http_request_new_parent %>
91
89
  assigns(:<%= ns_file_name %>).should be_a_new(<%= class_name %>)
92
90
  end
93
91
 
94
92
  it "re-renders the 'new' template" do
95
- login_controller_as(:user)
93
+ <%= "login_controller_as(:user)" if authentication? %>
96
94
  # Trigger the behavior that occurs when invalid params are submitted
97
95
  <%= class_name %>.any_instance.stub(:save).and_return(false)
98
- post :create, :<%= ns_file_name %> => {}
96
+ post :create, :<%= ns_file_name %> => {}<%= nested_params_http_request_new_parent %>
99
97
  response.should render_template("new")
100
98
  end
101
99
  end
@@ -104,47 +102,47 @@ describe <%= controller_class_name %>Controller do
104
102
  describe "PUT update" do
105
103
  describe "with valid params" do
106
104
  it "updates the requested <%= ns_file_name %>" do
107
- login_controller_as(:user)
105
+ <%= "login_controller_as(:user)" if authentication? %>
108
106
  <%= file_name %> = Factory(:<%= file_name %>)
109
107
  # Assuming there are no other <%= table_name %> in the database, this
110
108
  # specifies that the <%= class_name %> created on the previous line
111
109
  # receives the :update_attributes message with whatever params are
112
110
  # submitted in the request.
113
111
  <%= class_name %>.any_instance.should_receive(:update_attributes).with(<%= params %>)
114
- put :update, :id => <%= file_name %>.id, :<%= ns_file_name %> => <%= params %>
112
+ put :update, :id => <%= file_name %>.id, :<%= ns_file_name %> => <%= params %><%= nested_params_http_request %>
115
113
  end
116
114
 
117
115
  it "assigns the requested <%= ns_file_name %> as @<%= ns_file_name %>" do
118
- login_controller_as(:user)
116
+ <%= "login_controller_as(:user)" if authentication? %>
119
117
  <%= file_name %> = Factory(:<%= file_name %>)
120
- put :update, :id => <%= file_name %>.id, :<%= ns_file_name %> => Factory.attributes_for(:<%= file_name %>)
118
+ put :update, :id => <%= file_name %>.id, :<%= ns_file_name %> => Factory.attributes_for(:<%= file_name %>)<%= nested_params_http_request %>
121
119
  assigns(:<%= ns_file_name %>).should eq(<%= file_name %>)
122
120
  end
123
121
 
124
122
  it "redirects to the <%= ns_file_name %>" do
125
- login_controller_as(:user)
123
+ <%= "login_controller_as(:user)" if authentication? %>
126
124
  <%= file_name %> = Factory(:<%= file_name %>)
127
- put :update, :id => <%= file_name %>.id, :<%= ns_file_name %> => Factory.attributes_for(:<%= file_name %>)
128
- response.should redirect_to(<%= file_name %>)
125
+ put :update, :id => <%= file_name %>.id, :<%= ns_file_name %> => Factory.attributes_for(:<%= file_name %>)<%= nested_params_http_request %>
126
+ response.should redirect_to(<%= show_resource_path_test %>)
129
127
  end
130
128
  end
131
129
 
132
130
  describe "with invalid params" do
133
131
  it "assigns the <%= ns_file_name %> as @<%= ns_file_name %>" do
134
- login_controller_as(:user)
132
+ <%= "login_controller_as(:user)" if authentication? %>
135
133
  <%= file_name %> = Factory(:<%= file_name %>)
136
134
  # Trigger the behavior that occurs when invalid params are submitted
137
135
  <%= class_name %>.any_instance.stub(:save).and_return(false)
138
- put :update, :id => <%= file_name %>.id.to_s, :<%= ns_file_name %> => {}
136
+ put :update, :id => <%= file_name %>.id.to_s, :<%= ns_file_name %> => {}<%= nested_params_http_request %>
139
137
  assigns(:<%= ns_file_name %>).should eq(<%= file_name %>)
140
138
  end
141
139
 
142
140
  it "re-renders the 'edit' template" do
143
- login_controller_as(:user)
141
+ <%= "login_controller_as(:user)" if authentication? %>
144
142
  <%= file_name %> = Factory(:<%= file_name %>)
145
143
  # Trigger the behavior that occurs when invalid params are submitted
146
144
  <%= class_name %>.any_instance.stub(:save).and_return(false)
147
- put :update, :id => <%= file_name %>.id.to_s, :<%= ns_file_name %> => {}
145
+ put :update, :id => <%= file_name %>.id.to_s, :<%= ns_file_name %> => {}<%= nested_params_http_request %>
148
146
  response.should render_template("edit")
149
147
  end
150
148
  end
@@ -153,29 +151,31 @@ describe <%= controller_class_name %>Controller do
153
151
  describe "DELETE destroy" do
154
152
  describe "with authorization" do
155
153
  it "destroys the requested <%= ns_file_name %>" do
156
- login_controller_as(:user_manager)
154
+ <%= "login_controller_as(:user_manager)" if authentication? %>
157
155
  <%= file_name %> = Factory(:<%= file_name %>)
158
156
  expect {
159
- delete :destroy, :id => <%= file_name %>.id.to_s
157
+ delete :destroy, :id => <%= file_name %>.id.to_s<%= nested_params_http_request %>
160
158
  }.to change(<%= class_name %>, :count).by(-1)
161
159
  end
162
160
 
163
161
  it "redirects to the <%= table_name %> list" do
164
- login_controller_as(:user_manager)
162
+ <%= "login_controller_as(:user_manager)" if authentication? %>
165
163
  <%= file_name %> = Factory(:<%= file_name %>)
166
- delete :destroy, :id => <%= file_name %>.id.to_s
167
- response.should redirect_to(<%= index_helper %>_url)
164
+ delete :destroy, :id => <%= file_name %>.id.to_s<%= nested_params_http_request %>
165
+ response.should redirect_to(<%= list_resources_path_test %>)
168
166
  end
169
167
  end
168
+ <%- if authorization? -%>
170
169
  describe "without authorization" do
171
170
  it "destroys the requested <%= ns_file_name %>" do
172
- login_controller_as(:user)
171
+ <%= "login_controller_as(:user)" if authentication? %>
173
172
  <%= file_name %> = Factory(:<%= file_name %>)
174
173
  expect {
175
- delete :destroy, :id => <%= file_name %>.id.to_s
174
+ delete :destroy, :id => <%= file_name %>.id.to_s<%= nested_params_http_request %>
176
175
  }.to change(<%= class_name %>, :count).by(0)
177
176
  end
178
177
  end
178
+ <%- end -%>
179
179
  end
180
180
 
181
181
  end
@@ -4,12 +4,15 @@ require 'spec_helper'
4
4
  describe "<%= ns_table_name %>/edit.html.<%= options[:template_engine] %>" do
5
5
  before(:each) do
6
6
  @<%= ns_file_name %> = assign(:<%= ns_file_name %>, Factory(:<%= ns_file_name %>) )
7
+ <%- base_parent_resources.each do |parent| -%>
8
+ @<%= parent %> = assign(:<%= parent %>, @<%= ns_file_name %>.<%= parent %> )
9
+ <%- end -%>
7
10
  end
8
11
 
9
12
  it "renders the edit <%= ns_file_name %> form" do
10
13
  render
11
14
 
12
- rendered.should have_selector("form", :action => <%= index_helper %>_path(@<%= ns_file_name %>), :method => "post") do |form|
15
+ rendered.should have_selector("form", :action => <%= underscore_resource_path :parent_singular_resource_plural %>_path(<%= formatted_resource_path "@", "@" %>), :method => "post") do |form|
13
16
  <% for attribute in output_attributes -%>
14
17
  form.should have_selector("<%= attribute.input_type -%>#<%= ns_file_name %>_<%= attribute.name %>", :name => "<%= ns_file_name %>[<%= attribute.name %>]")
15
18
  <% end -%>
@@ -17,8 +17,7 @@ def value_for_check(attribute)
17
17
  nil
18
18
  else
19
19
  "#{name} => r.#{attribute.name}"
20
- end <<
21
- ":count => 1"
20
+ end
22
21
  ).compact.join(', ')
23
22
  end
24
23
  %>
@@ -26,8 +25,20 @@ end
26
25
  <% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
27
26
  describe "<%= ns_table_name %>/index.html.<%= options[:template_engine] %>" do
28
27
  before(:each) do
29
- @records = assign(:<%= table_name %>, FactoryGirl.create_list(:<%= ns_file_name %>, 2) )
30
- assign(:<%= ns_file_name %>, Factory(:<%= ns_file_name %>) )
28
+ <%- parents = []; str_parents_create = str_parents_where = "" -%>
29
+ <%- base_parent_resources.each do |parent| -%>
30
+ @<%= parent %> = assign(:<%= parent %>, Factory(:<%= parent %>) )
31
+ <%- parents << ":#{parent}_id => @#{parent}.id" -%>
32
+ <%- end -%>
33
+ <%- str_parents_create = ", #{parents.join(', ')}" if parents.any? -%>
34
+ <%- str_parents_where = ".where(#{parents.join(', ')})" if parents.any? -%>
35
+ <%- if pagination? -%>
36
+ FactoryGirl.create_list(:<%= ns_file_name %>, 2<%= str_parents_create %>)
37
+ @records = assign(:<%= table_name %>, <%= class_name %><%= str_parents_where %>.order(:id).page(1) )
38
+ <%- else -%>
39
+ @records = assign(:<%= table_name %>, FactoryGirl.create_list(:<%= ns_file_name %>, 2<%= str_parents_create %>) )
40
+ <%- end -%>
41
+ assign(:<%= ns_file_name %>, Factory.build(:<%= ns_file_name %>) )
31
42
  end
32
43
 
33
44
  it "renders a list of <%= ns_table_name %>" do
@@ -3,14 +3,17 @@ require 'spec_helper'
3
3
  <% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
4
4
  describe "<%= ns_table_name %>/new.html.<%= options[:template_engine] %>" do
5
5
  before(:each) do
6
- assign(:<%= ns_file_name %>, Factory.build(:<%= ns_file_name %>) )
6
+ <%= "#{ns_file_name} = " if nested? %>assign(:<%= ns_file_name %>, Factory.build(:<%= ns_file_name %>) )
7
+ <%- base_parent_resources.each do |parent| -%>
8
+ @<%= parent %> = assign(:<%= parent %>, <%= ns_file_name %>.<%= parent %>)
9
+ <%- end -%>
7
10
  end
8
11
 
9
12
 
10
13
  it "renders new <%= ns_file_name %> form" do
11
14
  render
12
15
 
13
- rendered.should have_selector("form", :action => <%= index_helper %>_path, :method => "post") do |form|
16
+ rendered.should have_selector("form", :action => <%= list_resources_path_test nil, "@" %>, :method => "post") do |form|
14
17
  <% for attribute in output_attributes -%>
15
18
  form.should have_selector("<%= attribute.input_type -%>#<%= ns_file_name %>_<%= attribute.name %>", :name => "<%= ns_file_name %>[<%= attribute.name %>]")
16
19
  <% end -%>