leonardo 1.5.0 → 1.6.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.
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 -%>