authorized_rails_scaffolds 0.0.5 → 0.0.6

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 (19) hide show
  1. checksums.yaml +7 -0
  2. data/lib/authorized_rails_scaffolds/version.rb +1 -1
  3. data/lib/generators/authorized_rails_scaffolds/install_scaffold/install_scaffold_generator.rb +4 -0
  4. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/_form.html.erb +4 -5
  5. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/controller.rb +28 -6
  6. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/edit.html.erb +2 -0
  7. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/index.html.erb +2 -0
  8. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/initializer.rb +137 -0
  9. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/new.html.erb +2 -0
  10. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/show.html.erb +6 -6
  11. data/lib/generators/authorized_rails_scaffolds/install_spec/install_spec_generator.rb +1 -0
  12. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/controller_spec.rb +45 -35
  13. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/devise_can_can/controller_macros.rb +4 -4
  14. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/edit_spec.rb +10 -21
  15. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/index_spec.rb +17 -45
  16. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/new_spec.rb +10 -21
  17. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/routing_spec.rb +59 -0
  18. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/show_spec.rb +12 -42
  19. metadata +25 -16
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 33e014ce5460fd00415ab744aa6c62218700e5aa
4
+ data.tar.gz: f7ef08d1c1d18a961e54f31fa092d459cae329dc
5
+ SHA512:
6
+ metadata.gz: 4991100484bf19211002bebdbb8340595485869ae127969985736212aa762df00fde165a505a7efaba9622cd8828dc1abf2caf617530da7c7d0f4ce164d2ac6f
7
+ data.tar.gz: 825dd5ab02b58a2cb5f8cf1e4f02151158a5b2324cbccb20d578c92922b0850ffc6b7cd413af28ab15dd9628e7304bef27361613ddb54175282408e43e8b002f
@@ -1,3 +1,3 @@
1
1
  module AuthorizedRailsScaffolds
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -9,6 +9,10 @@ class AuthorizedRailsScaffolds::InstallScaffoldGenerator < Rails::Generators::Ba
9
9
  copy_erb_template 'show.html.erb'
10
10
  end
11
11
 
12
+ def copy_initializer
13
+ copy_file 'initializer.rb', 'config/initializers/authorized_rails_scaffolds.rb'
14
+ end
15
+
12
16
  def copy_rails_templates
13
17
  copy_rails_template 'controller.rb'
14
18
  end
@@ -1,14 +1,13 @@
1
1
  <%-
2
2
 
3
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
4
+
3
5
  local_class_name = file_name.classify # Non-Namespaced class name
4
6
  var_name = file_name # Non-namespaced variable name
5
7
  plural_var_name = var_name.pluralize # Pluralized non-namespaced variable name
6
8
 
7
- form_objects = singular_table_name.split(file_name, -1)[0..-2].join(file_name)
8
- form_object_array = form_objects.blank? ? "@#{var_name}" : "[:#{form_objects.split('_').join(', :')}, @#{var_name}]"
9
-
10
9
  -%>
11
- <%%= simple_form_for(<%= form_object_array %>, :html => { class: 'form-horizontal' }) do |f| %>
10
+ <%%= simple_form_for(<%= t_helper.form_object_array %>, :html => { class: 'form-horizontal' }) do |f| %>
12
11
  <%%= f.error_notification %>
13
12
 
14
13
  <div class="form-inputs">
@@ -20,7 +19,7 @@ form_object_array = form_objects.blank? ? "@#{var_name}" : "[:#{form_objects.spl
20
19
  <div class="form-actions">
21
20
  <%%= f.button :submit, :class => 'btn-primary' %>
22
21
  <%%= link_to t('.cancel', :default => t("helpers.links.cancel")),
23
- <%= index_helper %>_path,
22
+ <%= t_helper.controller_index_path %>,
24
23
  :class => 'btn'
25
24
  %>
26
25
  </div>
@@ -4,16 +4,38 @@ require_dependency "<%= namespaced_file_path %>/application_controller"
4
4
  <% end -%>
5
5
  <%-
6
6
 
7
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
8
+
7
9
  local_class_name = local_class_name = class_name.split("::")[-1] # Non-Namespaced class name
8
10
  var_name = file_name # Non-namespaced variable name
9
11
  plural_var_name = var_name.pluralize # Pluralized non-namespaced variable name
10
12
 
11
13
  orm_instance = Rails::Generators::ActiveModel.new var_name
12
14
 
15
+ # Determine namespace prefix i.e awesome_
16
+ namespace_prefix = singular_table_name[0..-(file_name.length + 1)]
17
+
18
+ # Determine Parent Prefix i.e. user_company
19
+ parent_prefix = AuthorizedRailsScaffolds::PARENT_MODELS.collect{ |x| x.underscore }.join('_')
20
+ parent_prefix = "#{parent_prefix}_" unless parent_prefix.blank?
21
+
22
+ # Route Prefix i.e. awesome_user_company
23
+ route_prefix = namespace_prefix + parent_prefix
24
+
25
+ parent_variables = AuthorizedRailsScaffolds::PARENT_MODELS.collect { |x| "@#{x.underscore}" }.join(', ')
26
+
27
+ # Route Helpers
28
+ route_params_prefix = parent_variables.blank? ? "" : "#{parent_variables}, "
29
+ index_path_prefix = "#{route_prefix}#{plural_var_name}"
30
+ single_path_prefix = "#{route_prefix}#{var_name}"
31
+
13
32
  -%>
14
33
  <% module_namespacing do -%>
15
34
  class <%= controller_class_name %>Controller < ApplicationController
16
- load_and_authorize_resource
35
+ <%- AuthorizedRailsScaffolds::PARENT_MODELS.each_with_index do |model, model_index| -%>
36
+ load_resource :<%= model.underscore %><% if model_index > 0 %>, :through => :<%= AuthorizedRailsScaffolds::PARENT_MODELS[model_index - 1].underscore %><% end %>
37
+ <%- end -%>
38
+ load_and_authorize_resource :<%= var_name%><% if AuthorizedRailsScaffolds::PARENT_MODELS.any? %>, :through => :<%= AuthorizedRailsScaffolds::PARENT_MODELS.last.underscore %><% end %>
17
39
 
18
40
  # GET <%= route_url %>
19
41
  # GET <%= route_url %>.json
@@ -60,8 +82,8 @@ class <%= controller_class_name %>Controller < ApplicationController
60
82
 
61
83
  respond_to do |format|
62
84
  if @<%= orm_instance.save %>
63
- format.html { redirect_to <%= singular_table_name %>_path(@<%= var_name %>), <%= key_value :notice, "'#{human_name} was successfully created.'" %> }
64
- format.json { render <%= key_value :json, "@#{var_name}" %>, <%= key_value :status, ':created' %>, <%= key_value :location, "#{singular_table_name}_path(@#{var_name})" %> }
85
+ format.html { redirect_to <%= "#{single_path_prefix}_path(#{route_params_prefix}@#{var_name})" %>, <%= key_value :notice, "'#{human_name} was successfully created.'" %> }
86
+ format.json { render <%= key_value :json, "@#{var_name}" %>, <%= key_value :status, ':created' %>, <%= key_value :location, "#{single_path_prefix}_path(#{route_params_prefix}@#{var_name})" %> }
65
87
  else
66
88
  format.html { render <%= key_value :action, '"new"' %> }
67
89
  format.json { render <%= key_value :json, "@#{orm_instance.errors}" %>, <%= key_value :status, ':unprocessable_entity' %> }
@@ -76,7 +98,7 @@ class <%= controller_class_name %>Controller < ApplicationController
76
98
 
77
99
  respond_to do |format|
78
100
  if @<%= orm_instance.update_attributes("params[:#{var_name}]") %>
79
- format.html { redirect_to <%= singular_table_name %>_path(@<%= var_name %>), <%= key_value :notice, "'#{human_name} was successfully updated.'" %> }
101
+ format.html { redirect_to <%= "#{single_path_prefix}_path(#{route_params_prefix}@#{var_name})" %>, <%= key_value :notice, "'#{human_name} was successfully updated.'" %> }
80
102
  format.json { head :no_content }
81
103
  else
82
104
  format.html { render <%= key_value :action, '"edit"' %> }
@@ -92,7 +114,7 @@ class <%= controller_class_name %>Controller < ApplicationController
92
114
  @<%= orm_instance.destroy %>
93
115
 
94
116
  respond_to do |format|
95
- format.html { redirect_to <%= index_helper %>_url }
117
+ format.html { redirect_to <%= t_helper.controller_index_route %> }
96
118
  format.json { head :no_content }
97
119
  end
98
120
  end
@@ -104,7 +126,7 @@ class <%= controller_class_name %>Controller < ApplicationController
104
126
  if params[:action] == 'index'
105
127
  redirect_to root_url, :alert => exception.message
106
128
  else
107
- redirect_to <%= index_helper %>_url, :alert => exception.message
129
+ redirect_to <%= t_helper.controller_index_route %>, :alert => exception.message
108
130
  end
109
131
  end
110
132
 
@@ -1,5 +1,7 @@
1
1
  <%-
2
2
 
3
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
4
+
3
5
  local_class_name = file_name.classify # Non-Namespaced class name
4
6
 
5
7
  -%>
@@ -1,5 +1,7 @@
1
1
  <%-
2
2
 
3
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
4
+
3
5
  local_class_name = file_name.classify # Non-Namespaced class name
4
6
  var_name = file_name # Non-namespaced variable name
5
7
  plural_var_name = var_name.pluralize # Pluralized non-namespaced variable name
@@ -0,0 +1,137 @@
1
+ module AuthorizedRailsScaffolds
2
+
3
+ PARENT_MODELS = [] # i.e. ['Category', 'User'] for Awesome/FooBar => awesome_category_user_foo_bars_path
4
+
5
+ class Helper
6
+
7
+ def initialize(class_name, singular_table_name, file_name, plural_file_name = nil)
8
+ @local_class_name = class_name.split('::')[-1] # Non-Namespaced class name
9
+ @var_name = file_name # Non-namespaced variable name
10
+ @plural_var_name = plural_file_name || file_name.pluralize # Pluralized non-namespaced variable name
11
+
12
+ # Determine namespace prefix i.e awesome
13
+ @namespace_prefix = singular_table_name[0..-(file_name.length + 2)]
14
+
15
+ # Determine Parent Prefix i.e. user_company
16
+ parent_prefix = AuthorizedRailsScaffolds::PARENT_MODELS.collect{ |x| x.underscore }.join('_')
17
+ parent_prefix = "#{parent_prefix}_" unless parent_prefix.blank?
18
+
19
+ # Route Prefix i.e. awesome_user_company
20
+ @route_prefix = @namespace_prefix.blank? ? parent_prefix : "#{@namespace_prefix}_#{parent_prefix}"
21
+
22
+ @parent_variables = AuthorizedRailsScaffolds::PARENT_MODELS.collect{ |x| "@#{x.underscore}" }.join(', ')
23
+
24
+ # Route Helpers
25
+ @route_params_prefix = @parent_variables.blank? ? "" : "#{@parent_variables}, "
26
+ @index_path_prefix = "#{@route_prefix}#{@plural_var_name}"
27
+ @single_path_prefix = "#{@route_prefix}#{var_name}"
28
+ end
29
+
30
+ def local_class_name
31
+ @local_class_name
32
+ end
33
+
34
+ def var_name
35
+ @var_name
36
+ end
37
+
38
+ def plural_var_name
39
+ @plural_var_name
40
+ end
41
+
42
+ def form_object_array(variable = nil)
43
+ variable ||= "@#{var_name}"
44
+ namespace_prefix = ":#{@namespace_prefix}" unless @namespace_prefix.blank?
45
+ array = [namespace_prefix, @parent_variables, variable].reject{ |x| x.blank? || x == '_' }.join(', ')
46
+ "[#{array}]"
47
+ end
48
+
49
+ def controller_show_route(variable = nil)
50
+ variable ||= "@#{@var_name}"
51
+ "#{@single_path_prefix}_path(#{@route_params_prefix}#{variable})"
52
+ end
53
+
54
+ def controller_index_path
55
+ if @parent_variables.blank?
56
+ "#{@index_path_prefix}_path"
57
+ else
58
+ "#{@index_path_prefix}_path(#{@parent_variables})"
59
+ end
60
+ end
61
+
62
+ def controller_index_route
63
+ if @parent_variables.blank?
64
+ "#{@index_path_prefix}_url"
65
+ else
66
+ "#{@index_path_prefix}_url(#{@parent_variables})"
67
+ end
68
+ end
69
+
70
+ # call arguments
71
+ def index_action_params_prefix
72
+ if AuthorizedRailsScaffolds::PARENT_MODELS.any?
73
+ AuthorizedRailsScaffolds::PARENT_MODELS.collect{|x| ":#{x.underscore}_id => @#{x.underscore}.to_param"}.join(', ')
74
+ else
75
+ ''
76
+ end
77
+ end
78
+
79
+ def references_show_route(attribute_name, variable = nil)
80
+ variable ||= "@#{@var_name}.#{attribute_name}"
81
+ if AuthorizedRailsScaffolds::PARENT_MODELS.any? && AuthorizedRailsScaffolds::PARENT_MODELS.last.underscore == attribute_name
82
+ references_path = "#{@route_prefix}path(#{variable})"
83
+ else
84
+ references_path = "#{attribute_name}_path(#{variable})"
85
+ unless @namespace_prefix.blank?
86
+ references_path = "#{@namespace_prefix}_#{references_path}"
87
+ end
88
+ end
89
+ references_path
90
+ end
91
+
92
+ def action_params_prefix
93
+ index_action_params = index_action_params_prefix
94
+ if index_action_params.blank?
95
+ ''
96
+ else
97
+ "#{index_action_params}, "
98
+ end
99
+ end
100
+
101
+ # Returns code that will generate attribute_value as an attribute_type
102
+ def factory_attribute_value(attribute_type, attribute_value)
103
+ case attribute_type
104
+ when :datetime
105
+ "DateTime.parse(#{attribute_value})"
106
+ when :time
107
+ value_as_time = attribute_value.to_time.strftime('%T')
108
+ "Time.parse(#{value_as_time.dump})"
109
+ when :date
110
+ value_as_date = attribute_value.to_time.strftime('%Y-%m-%d')
111
+ "Date.parse(#{value_as_date.dump})"
112
+ else
113
+ attribute_value
114
+ end
115
+ end
116
+
117
+ # Returns the expected output string of attribute_value if it is an attribute_type
118
+ def factory_attribute_string(attribute_type, attribute_value)
119
+ case attribute_type
120
+ when :datetime
121
+ attribute_value_as_date = DateTime.parse(attribute_value)
122
+ I18n.l(attribute_value_as_date, :format => :long).dump
123
+ when :time
124
+ attribute_value_as_time = Time.parse(attribute_value)
125
+ I18n.l(attribute_value_as_time, :format => :short).dump
126
+ when :date
127
+ attribute_value_as_date = Date.parse(attribute_value)
128
+ I18n.l(attribute_value_as_date).dump
129
+ else
130
+ attribute_value
131
+ end
132
+ end
133
+
134
+ end
135
+
136
+ end
137
+
@@ -1,5 +1,7 @@
1
1
  <%-
2
2
 
3
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
4
+
3
5
  local_class_name = file_name.classify # Non-Namespaced class name
4
6
 
5
7
  -%>
@@ -1,11 +1,11 @@
1
1
  <%-
2
2
 
3
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
4
+
3
5
  local_class_name = file_name.classify # Non-Namespaced class name
4
6
  var_name = file_name # Non-namespaced variable name
5
7
  plural_var_name = var_name.pluralize # Pluralized non-namespaced variable name
6
8
 
7
- path_prefix = singular_table_name[0..-(file_name.length+1)]
8
-
9
9
  -%>
10
10
  <%%- model_class = <%= local_class_name %> -%>
11
11
  <div class="page-header">
@@ -18,7 +18,7 @@ path_prefix = singular_table_name[0..-(file_name.length+1)]
18
18
  <%- if attribute.type == :references -%>
19
19
  <%% if @<%= var_name %>.<%= attribute.name %>.present? && can?(:read, @<%= var_name %>.<%= attribute.name %>) %>
20
20
  <dt><strong><%%= <%= attribute_label %> %>:</strong></dt>
21
- <dd><%%= link_to @<%= var_name %>.<%= attribute.name %>, <%= path_prefix %><%= attribute.name %>_path(@<%= var_name %>.<%= attribute.name %>) %></dd>
21
+ <dd><%%= link_to @<%= var_name %>.<%= attribute.name %>, <%= t_helper.references_show_route attribute.name %> %></dd>
22
22
  <%% end %>
23
23
  <%- elsif [:datetime, :timestamp, :time, :date].include? attribute.type -%>
24
24
  <%% unless @<%= var_name %>.<%= attribute.name %>.nil? %>
@@ -41,16 +41,16 @@ path_prefix = singular_table_name[0..-(file_name.length+1)]
41
41
 
42
42
  <div class="form-actions">
43
43
  <%%= link_to t('.back', :default => t("helpers.links.back")),
44
- <%= index_helper %>_path, :class => 'btn' %>
44
+ <%= t_helper.controller_index_path %>, :class => 'btn' %>
45
45
  <%% if can? :update, @<%= var_name %> %>
46
46
  <%%= link_to t('.edit', :default => t("helpers.links.edit")),
47
- edit_<%= singular_table_name %>_path(@<%= var_name %>),
47
+ edit_<%= t_helper.controller_show_route "@#{var_name}" %>,
48
48
  :class => 'btn'
49
49
  %>
50
50
  <%% end %>
51
51
  <%% if can? :destroy, @<%= var_name %> %>
52
52
  <%%= link_to t('.destroy', :default => t("helpers.links.destroy")),
53
- <%= singular_table_name %>_path(@<%= var_name %>),
53
+ <%= t_helper.controller_show_route "@#{var_name}" %>,
54
54
  :method => 'delete',
55
55
  :data => { :confirm => t('.confirm', :default => t("helpers.links.confirm", :default => 'Are you sure?')) },
56
56
  :class => 'act act-danger pull-right'
@@ -14,6 +14,7 @@ class AuthorizedRailsScaffolds::InstallSpecGenerator < Rails::Generators::Base
14
14
  copy_scaffold_template 'index_spec.rb'
15
15
  copy_scaffold_template 'new_spec.rb'
16
16
  copy_scaffold_template 'show_spec.rb'
17
+ copy_scaffold_template 'routing_spec.rb'
17
18
  end
18
19
 
19
20
  def create_controller_macros
@@ -21,6 +21,8 @@ require 'spec_helper'
21
21
  <% module_namespacing do -%>
22
22
  <%-
23
23
 
24
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
25
+
24
26
  local_class_name = class_name.split('::')[-1] # Non-Namespaced class name
25
27
  var_name = file_name # Non-namespaced variable name
26
28
  plural_var_name = var_name.pluralize # Pluralized non-namespaced variable name
@@ -40,13 +42,21 @@ describe <%= controller_class_name %>Controller do
40
42
  FactoryGirl.attributes_for(:<%= var_name %>)
41
43
  end
42
44
 
45
+ <%- if AuthorizedRailsScaffolds::PARENT_MODELS.any? -%>
46
+ before(:each) do
47
+ <%- AuthorizedRailsScaffolds::PARENT_MODELS.each do |model| -%>
48
+ @<%= model.underscore %> = FactoryGirl.create(:<%= model.underscore %>)
49
+ <%- end -%>
50
+ end
51
+
52
+ <%- end -%>
43
53
  <% unless options[:singleton] -%>
44
54
  describe "GET index" do
45
55
  context 'without a user' do
46
56
  describe 'with valid request' do
47
57
  before(:each) do
48
58
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
49
- get :index, {}
59
+ get :index, {<%= t_helper.index_action_params_prefix %>}
50
60
  end
51
61
  it { should redirect_to(new_user_session_path) }
52
62
  it { should set_the_flash[:alert].to("You need to sign in or sign up before continuing.") }
@@ -57,7 +67,7 @@ describe <%= controller_class_name %>Controller do
57
67
  describe 'with valid request' do
58
68
  before(:each) do
59
69
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
60
- get :index, {}
70
+ get :index, {<%= t_helper.index_action_params_prefix %>}
61
71
  end
62
72
  it { should redirect_to(root_url) }
63
73
  it { should set_the_flash[:alert].to("You are not authorized to access this page.") }
@@ -68,7 +78,7 @@ describe <%= controller_class_name %>Controller do
68
78
  describe 'with valid request' do
69
79
  before(:each) do
70
80
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
71
- get :index, {}
81
+ get :index, {<%= t_helper.index_action_params_prefix %>}
72
82
  end
73
83
  it { should respond_with(:success) }
74
84
  it { should render_template(:index) }
@@ -86,7 +96,7 @@ describe <%= controller_class_name %>Controller do
86
96
  describe 'with valid request' do
87
97
  before(:each) do
88
98
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
89
- get :show, {:id => @<%= var_name %>.to_param}
99
+ get :show, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param}
90
100
  end
91
101
  it { should redirect_to(new_user_session_path) }
92
102
  it { should set_the_flash[:alert].to("You need to sign in or sign up before continuing.") }
@@ -97,9 +107,9 @@ describe <%= controller_class_name %>Controller do
97
107
  describe 'with valid request' do
98
108
  before(:each) do
99
109
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
100
- get :show, {:id => @<%= var_name %>.to_param}
110
+ get :show, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param}
101
111
  end
102
- it { should redirect_to(<%= index_helper %>_path) }
112
+ it { should redirect_to(<%= t_helper.controller_index_route %>) }
103
113
  it { should set_the_flash[:alert].to("You are not authorized to access this page.") }
104
114
  end
105
115
  end
@@ -108,7 +118,7 @@ describe <%= controller_class_name %>Controller do
108
118
  describe 'with valid request' do
109
119
  before(:each) do
110
120
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
111
- get :show, {:id => @<%= var_name %>.to_param}
121
+ get :show, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param}
112
122
  end
113
123
  it { should respond_with(:success) }
114
124
  it { should render_template(:show) }
@@ -124,7 +134,7 @@ describe <%= controller_class_name %>Controller do
124
134
  context 'without a user' do
125
135
  describe 'with valid request' do
126
136
  before(:each) do
127
- get :new, {}
137
+ get :new, {<%= t_helper.index_action_params_prefix %>}
128
138
  end
129
139
  it { should redirect_to(new_user_session_path) }
130
140
  it { should set_the_flash[:alert].to("You need to sign in or sign up before continuing.") }
@@ -134,9 +144,9 @@ describe <%= controller_class_name %>Controller do
134
144
  login_unauthorized_user
135
145
  describe 'with valid request' do
136
146
  before(:each) do
137
- get :new, {}
147
+ get :new, {<%= t_helper.index_action_params_prefix %>}
138
148
  end
139
- it { should redirect_to(<%= index_helper %>_url) }
149
+ it { should redirect_to(<%= t_helper.controller_index_route %>) }
140
150
  it { should set_the_flash[:alert].to("You are not authorized to access this page.") }
141
151
  end
142
152
  end
@@ -144,7 +154,7 @@ describe <%= controller_class_name %>Controller do
144
154
  login_user_with_ability :create, <%= local_class_name %>
145
155
  describe 'with valid request' do
146
156
  before(:each) do
147
- get :new, {}
157
+ get :new, {<%= t_helper.index_action_params_prefix %>}
148
158
  end
149
159
  it { should respond_with(:success) }
150
160
  it { should render_template(:new) }
@@ -161,7 +171,7 @@ describe <%= controller_class_name %>Controller do
161
171
  describe 'with valid request' do
162
172
  before(:each) do
163
173
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
164
- get :edit, {:id => @<%= var_name %>.to_param}
174
+ get :edit, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param}
165
175
  end
166
176
  it { should redirect_to(new_user_session_path) }
167
177
  it { should set_the_flash[:alert].to("You need to sign in or sign up before continuing.") }
@@ -172,9 +182,9 @@ describe <%= controller_class_name %>Controller do
172
182
  describe 'with valid request' do
173
183
  before(:each) do
174
184
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
175
- get :edit, {:id => @<%= var_name %>.to_param}
185
+ get :edit, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param}
176
186
  end
177
- it { should redirect_to(<%= index_helper %>_url) }
187
+ it { should redirect_to(<%= t_helper.controller_index_route %>) }
178
188
  it { should set_the_flash[:alert].to("You are not authorized to access this page.") }
179
189
  end
180
190
  end
@@ -183,7 +193,7 @@ describe <%= controller_class_name %>Controller do
183
193
  describe 'with valid request' do
184
194
  before(:each) do
185
195
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
186
- get :edit, {:id => @<%= var_name %>.to_param}
196
+ get :edit, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param}
187
197
  end
188
198
  it { should respond_with(:success) }
189
199
  it { should render_template(:edit) }
@@ -199,7 +209,7 @@ describe <%= controller_class_name %>Controller do
199
209
  context 'without a user' do
200
210
  describe 'with valid params' do
201
211
  before(:each) do
202
- post :create, {:<%= var_name %> => valid_create_attributes}
212
+ post :create, {<%= t_helper.action_params_prefix %>:<%= var_name %> => valid_create_attributes}
203
213
  end
204
214
  it { should redirect_to(new_user_session_path) }
205
215
  it { should set_the_flash[:alert].to("You need to sign in or sign up before continuing.") }
@@ -209,9 +219,9 @@ describe <%= controller_class_name %>Controller do
209
219
  login_unauthorized_user
210
220
  describe "with valid params" do
211
221
  before(:each) do
212
- post :create, {:<%= var_name %> => valid_create_attributes}
222
+ post :create, {<%= t_helper.action_params_prefix %>:<%= var_name %> => valid_create_attributes}
213
223
  end
214
- it { should redirect_to(<%= index_helper %>_url) }
224
+ it { should redirect_to(<%= t_helper.controller_index_route %>) }
215
225
  it { should set_the_flash[:alert].to("You are not authorized to access this page.") }
216
226
  end
217
227
  end
@@ -220,27 +230,27 @@ describe <%= controller_class_name %>Controller do
220
230
  describe "with valid params" do
221
231
  it "creates a new <%= local_class_name %>" do
222
232
  expect {
223
- post :create, {:<%= var_name %> => valid_create_attributes}
233
+ post :create, {<%= t_helper.action_params_prefix %>:<%= var_name %> => valid_create_attributes}
224
234
  }.to change(<%= local_class_name %>, :count).by(1)
225
235
  end
226
236
  end
227
237
  describe 'with valid params' do
228
238
  before(:each) do
229
- post :create, {:<%= var_name %> => valid_create_attributes}
239
+ post :create, {<%= t_helper.action_params_prefix %>:<%= var_name %> => valid_create_attributes}
230
240
  end
231
241
  it "assigns a newly created <%= var_name %> as @<%= var_name %>" do
232
242
  assigns(:<%= var_name %>).should be_a(<%= local_class_name %>)
233
243
  assigns(:<%= var_name %>).should be_persisted
234
244
  end
235
245
  it "redirects to the created <%= var_name %>" do
236
- response.should redirect_to(<%= ns_file_name %>_path(<%= local_class_name %>.last))
246
+ response.should redirect_to(<%= t_helper.controller_show_route "#{local_class_name}.last" %>)
237
247
  end
238
248
  end
239
249
  describe "with invalid params" do
240
250
  before(:each) do
241
251
  # Trigger the behavior that occurs when invalid params are submitted
242
252
  <%= local_class_name %>.any_instance.stub(:save).and_return(false)
243
- post :create, {:<%= var_name %> => <%= formatted_hash(example_invalid_attributes) %>}
253
+ post :create, {<%= t_helper.action_params_prefix %>:<%= var_name %> => <%= formatted_hash(example_invalid_attributes) %>}
244
254
  end
245
255
  it { should render_template(:new) }
246
256
  it { should render_with_layout(:application) }
@@ -256,7 +266,7 @@ describe <%= controller_class_name %>Controller do
256
266
  describe 'with valid params' do
257
267
  before(:each) do
258
268
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
259
- put :update, {:id => @<%= var_name %>.to_param, :<%= var_name %> => valid_update_attributes}
269
+ put :update, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param, :<%= var_name %> => valid_update_attributes}
260
270
  end
261
271
  it { should redirect_to(new_user_session_path) }
262
272
  it { should set_the_flash[:alert].to("You need to sign in or sign up before continuing.") }
@@ -267,9 +277,9 @@ describe <%= controller_class_name %>Controller do
267
277
  describe "with valid params" do
268
278
  before(:each) do
269
279
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
270
- put :update, {:id => @<%= var_name %>.to_param, :<%= var_name %> => valid_update_attributes}
280
+ put :update, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param, :<%= var_name %> => valid_update_attributes}
271
281
  end
272
- it { should redirect_to(<%= index_helper %>_url) }
282
+ it { should redirect_to(<%= t_helper.controller_index_route %>) }
273
283
  it { should set_the_flash[:alert].to("You are not authorized to access this page.") }
274
284
  end
275
285
  end
@@ -287,19 +297,19 @@ describe <%= controller_class_name %>Controller do
287
297
  <%- else -%>
288
298
  <%= local_class_name %>.any_instance.should_receive(:update_attributes).with(<%= formatted_hash(example_params_for_update) %>)
289
299
  <%- end -%>
290
- put :update, {:id => @<%= var_name %>.to_param, :<%= var_name %> => <%= formatted_hash(example_params_for_update) %>}
300
+ put :update, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param, :<%= var_name %> => <%= formatted_hash(example_params_for_update) %>}
291
301
  end
292
302
  end
293
303
  describe "with valid params" do
294
304
  before(:each) do
295
305
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
296
- put :update, {:id => @<%= var_name %>.to_param, :<%= var_name %> => valid_update_attributes}
306
+ put :update, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param, :<%= var_name %> => valid_update_attributes}
297
307
  end
298
308
  it "assigns the requested <%= var_name %> as @<%= var_name %>" do
299
309
  assigns(:<%= var_name %>).should eq(@<%= var_name %>)
300
310
  end
301
311
  it "redirects to the <%= var_name %>" do
302
- response.should redirect_to(<%= ns_file_name %>_path(@<%= var_name %>))
312
+ response.should redirect_to(<%= t_helper.controller_show_route "@#{var_name}" %>)
303
313
  end
304
314
  end
305
315
  describe "with invalid params" do
@@ -307,7 +317,7 @@ describe <%= controller_class_name %>Controller do
307
317
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
308
318
  # Trigger the behavior that occurs when invalid params are submitted
309
319
  <%= local_class_name %>.any_instance.stub(:save).and_return(false)
310
- put :update, {:id => @<%= var_name %>.to_param, :<%= var_name %> => <%= formatted_hash(example_invalid_attributes) %>}
320
+ put :update, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param, :<%= var_name %> => <%= formatted_hash(example_invalid_attributes) %>}
311
321
  end
312
322
  it { should render_template(:edit) }
313
323
  it { should render_with_layout(:application) }
@@ -323,7 +333,7 @@ describe <%= controller_class_name %>Controller do
323
333
  describe 'with valid request' do
324
334
  before(:each) do
325
335
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
326
- delete :destroy, {:id => @<%= var_name %>.to_param}
336
+ delete :destroy, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param}
327
337
  end
328
338
  it { should redirect_to(new_user_session_path) }
329
339
  it { should set_the_flash[:alert].to("You need to sign in or sign up before continuing.") }
@@ -334,9 +344,9 @@ describe <%= controller_class_name %>Controller do
334
344
  describe "with valid request" do
335
345
  before(:each) do
336
346
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
337
- delete :destroy, {:id => @<%= var_name %>.to_param}
347
+ delete :destroy, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param}
338
348
  end
339
- it { should redirect_to(<%= index_helper %>_url) }
349
+ it { should redirect_to(<%= t_helper.controller_index_route %>) }
340
350
  it { should set_the_flash[:alert].to("You are not authorized to access this page.") }
341
351
  end
342
352
  end
@@ -345,16 +355,16 @@ describe <%= controller_class_name %>Controller do
345
355
  it "destroys the requested <%= var_name %>" do
346
356
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
347
357
  expect {
348
- delete :destroy, {:id => @<%= var_name %>.to_param}
358
+ delete :destroy, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param}
349
359
  }.to change(<%= local_class_name %>, :count).by(-1)
350
360
  end
351
361
  describe 'with valid request' do
352
362
  before(:each) do
353
363
  @<%= var_name %> = FactoryGirl.create(:<%= var_name %>)
354
- delete :destroy, {:id => @<%= var_name %>.to_param}
364
+ delete :destroy, {<%= t_helper.action_params_prefix %>:id => @<%= var_name %>.to_param}
355
365
  end
356
366
  it "redirects to the <%= var_name %> list" do
357
- response.should redirect_to(<%= index_helper %>_url)
367
+ response.should redirect_to(<%= t_helper.controller_index_route %>)
358
368
  end
359
369
  end
360
370
  end
@@ -1,4 +1,4 @@
1
- module DeviceCanCanControllerMacros
1
+ module DeviseCanCanControllerMacros
2
2
  def login_unauthorized_user
3
3
  before(:each) do
4
4
  @ability = Object.new
@@ -18,8 +18,8 @@ module DeviceCanCanControllerMacros
18
18
  @controller.stubs(:current_ability).returns(@ability)
19
19
 
20
20
  @request.env["devise.mapping"] = Devise.mappings[:user]
21
- @logged_in_admin = FactoryGirl.create(:user)
22
- sign_in @logged_in_admin
21
+ @logged_in_user = FactoryGirl.create(:user)
22
+ sign_in @logged_in_user
23
23
  end
24
24
  end
25
- end
25
+ end
@@ -2,6 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  <%-
4
4
 
5
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
6
+
5
7
  local_class_name = class_name.split('::')[-1] # Non-Namespaced class name
6
8
  var_name = file_name # Non-namespaced variable name
7
9
 
@@ -9,28 +11,15 @@ output_attributes = attributes.reject{|attribute| [:timestamp].include? attrib
9
11
  standard_attributes = attributes.reject{|attribute| [:time, :date, :datetime].include? attribute.type }
10
12
  datetime_attributes = attributes.reject{|attribute| ![:time, :date, :datetime].include? attribute.type }
11
13
 
12
- # Returns code that will generate attribute_value as an attribute_type
13
- def factory_attribute_value(attribute_type, attribute_value)
14
- case attribute_type
15
- when :datetime
16
- "DateTime.parse(#{attribute_value})"
17
- when :time
18
- value_as_time = attribute_value.to_time.strftime('%T')
19
- "Time.parse(#{value_as_time.dump})"
20
- when :date
21
- value_as_date = attribute_value.to_time.strftime('%Y-%m-%d')
22
- "Date.parse(#{value_as_date.dump})"
23
- else
24
- attribute_value
25
- end
26
- end
27
-
28
14
  -%>
29
15
  describe "<%= ns_table_name %>/edit" do
30
16
  before(:each) do
17
+ <%- AuthorizedRailsScaffolds::PARENT_MODELS.each do |model| -%>
18
+ @<%= model.underscore %> = assign(:<%= model.underscore %>, FactoryGirl.build_stubbed(:<%= model.underscore %>))
19
+ <%- end -%>
31
20
  @<%= var_name %> = assign(:<%= var_name %>, FactoryGirl.build_stubbed(:<%= var_name %><%= output_attributes.empty? ? '))' : ',' %>
32
21
  <% output_attributes.each_with_index do |attribute, attribute_index| -%>
33
- :<%= attribute.name %> => <%= factory_attribute_value attribute.type, value_for(attribute) %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
22
+ :<%= attribute.name %> => <%= t_helper.factory_attribute_value attribute.type, value_for(attribute) %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
34
23
  <% end -%>
35
24
  <%= output_attributes.empty? ? "" : " ))\n" -%>
36
25
  end
@@ -39,7 +28,7 @@ describe "<%= ns_table_name %>/edit" do
39
28
  render
40
29
 
41
30
  <% if webrat? -%>
42
- rendered.should have_selector("form", :action => <%= ns_file_name %>_path(@<%= var_name %>), :method => "post") do |form|
31
+ rendered.should have_selector("form", :action => <%= t_helper.controller_show_route "@#{var_name}" %>, :method => "post") do |form|
43
32
  <% for attribute in standard_attributes -%>
44
33
  <%- if attribute.type == :references -%>
45
34
  form.should have_selector("select#<%= var_name %>_<%= attribute.name %>_id", :name => "<%= var_name %>[<%= attribute.name %>_id]")
@@ -50,7 +39,7 @@ describe "<%= ns_table_name %>/edit" do
50
39
  end
51
40
  <% else -%>
52
41
  # Run the generator again with the --webrat flag if you want to use webrat matchers
53
- assert_select "form[action=?][method=?]", <%= ns_file_name %>_path(@<%= var_name %>), "post" do
42
+ assert_select "form[action=?][method=?]", <%= t_helper.controller_show_route "@#{var_name}" %>, "post" do
54
43
  <% for attribute in standard_attributes -%>
55
44
  <%- if attribute.type == :references -%>
56
45
  assert_select "select#<%= var_name %>_<%= attribute.name %>_id[name=?]", "<%= var_name %>[<%= attribute.name %>_id]"
@@ -67,7 +56,7 @@ describe "<%= ns_table_name %>/edit" do
67
56
  render
68
57
 
69
58
  <% if webrat? -%>
70
- rendered.should have_selector("form", :action => <%= ns_file_name %>_path(@<%= var_name %>), :method => "post") do |form|
59
+ rendered.should have_selector("form", :action => <%= t_helper.controller_show_route "@#{var_name}" %>, :method => "post") do |form|
71
60
  <% for attribute in datetime_attributes -%>
72
61
  <%- if [:date, :datetime].include? attribute.type -%>
73
62
  form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
@@ -82,7 +71,7 @@ describe "<%= ns_table_name %>/edit" do
82
71
  end
83
72
  <% else -%>
84
73
  # Run the generator again with the --webrat flag if you want to use webrat matchers
85
- assert_select "form[action=?][method=?]", <%= ns_file_name %>_path(@<%= var_name %>), "post" do
74
+ assert_select "form[action=?][method=?]", <%= t_helper.controller_show_route "@#{var_name}" %>, "post" do
86
75
  <% for attribute in datetime_attributes -%>
87
76
  # <%= attribute.name %> values
88
77
  <%- if [:date, :datetime].include? attribute.type -%>
@@ -2,52 +2,24 @@ require 'spec_helper'
2
2
 
3
3
  <%-
4
4
 
5
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
6
+
5
7
  local_class_name = class_name.split('::')[-1] # Non-Namespaced class name
6
8
  var_name = file_name # Non-namespaced variable name
7
9
  plural_var_name = var_name.pluralize # Pluralized non-namespaced variable name
8
10
 
9
11
  output_attributes = attributes.reject{|attribute| [:timestamp].include? attribute.type }
10
12
 
11
- # Returns code that will generate attribute_value as an attribute_type
12
- def factory_attribute_value(attribute_type, attribute_value)
13
- case attribute_type
14
- when :datetime
15
- "DateTime.parse(#{attribute_value})"
16
- when :time
17
- value_as_time = attribute_value.to_time.strftime('%T')
18
- "Time.parse(#{value_as_time.dump})"
19
- when :date
20
- value_as_date = attribute_value.to_time.strftime('%Y-%m-%d')
21
- "Date.parse(#{value_as_date.dump})"
22
- else
23
- attribute_value
24
- end
25
- end
26
-
27
- # Returns the expected output string of attribute_value if it is an attribute_type
28
- def factory_attribute_string(attribute_type, attribute_value)
29
- case attribute_type
30
- when :datetime
31
- attribute_value_as_date = DateTime.parse(attribute_value)
32
- I18n.l(attribute_value_as_date, :format => :long).dump
33
- when :time
34
- attribute_value_as_time = Time.parse(attribute_value)
35
- I18n.l(attribute_value_as_time, :format => :short).dump
36
- when :date
37
- attribute_value_as_date = Date.parse(attribute_value)
38
- I18n.l(attribute_value_as_date).dump
39
- else
40
- attribute_value
41
- end
42
- end
43
-
44
13
  -%>
45
14
  describe "<%= ns_table_name %>/index" do
46
15
  before(:each) do
16
+ <%- AuthorizedRailsScaffolds::PARENT_MODELS.each do |model| -%>
17
+ @<%= model.underscore %> = assign(:<%= model.underscore %>, FactoryGirl.build_stubbed(:<%= model.underscore %>))
18
+ <%- end -%>
47
19
  <% [1,2].each_with_index do |id, model_index| -%>
48
20
  @<%= var_name %>_<%= model_index + 1 %> = FactoryGirl.build_stubbed(:<%= var_name %><%= output_attributes.empty? ? ')' : ',' %>
49
21
  <% output_attributes.each_with_index do |attribute, attribute_index| -%>
50
- :<%= attribute.name %> => <%= factory_attribute_value attribute.type, value_for(attribute) %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
22
+ :<%= attribute.name %> => <%= t_helper.factory_attribute_value attribute.type, value_for(attribute) %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
51
23
  <% end -%>
52
24
  <% if !output_attributes.empty? -%>
53
25
  )
@@ -105,7 +77,7 @@ describe "<%= ns_table_name %>/index" do
105
77
  <% if webrat? -%>
106
78
  rendered.should have_selector("tr>td", :content => <%= factory_attribute_string attribute.type, value_for(attribute) %>.to_s, :count => 2)
107
79
  <% else -%>
108
- assert_select "tr>td", :text => <%= factory_attribute_string attribute.type, value_for(attribute) %>.to_s, :count => 2
80
+ assert_select "tr>td", :text => <%= t_helper.factory_attribute_string attribute.type, value_for(attribute) %>.to_s, :count => 2
109
81
  <% end -%>
110
82
  <% end -%>
111
83
  end
@@ -115,9 +87,9 @@ describe "<%= ns_table_name %>/index" do
115
87
  render
116
88
  <% [1,2].each do |model_index| -%>
117
89
  <% if webrat? -%>
118
- rendered.should have_selector("td>a[href]:not([data-method])", :href => <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1)
90
+ rendered.should have_selector("td>a[href]:not([data-method])", :href => <%= t_helper.controller_show_route "@#{var_name}_#{model_index}" %>, :count => 1)
119
91
  <% else -%>
120
- assert_select "td>a[href=?]:not([data-method])", <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1
92
+ assert_select "td>a[href=?]:not([data-method])", <%= t_helper.controller_show_route "@#{var_name}_#{model_index}" %>, :count => 1
121
93
  <% end -%>
122
94
  <% end -%>
123
95
  end
@@ -129,9 +101,9 @@ describe "<%= ns_table_name %>/index" do
129
101
  render
130
102
  <% [1,2].each do |model_index| -%>
131
103
  <% if webrat? -%>
132
- rendered.should_not have_selector("td>a[href][disabled=disabled]", :href => edit_<%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1)
104
+ rendered.should_not have_selector("td>a[href][disabled=disabled]", :href => edit_<%= t_helper.controller_show_route "@#{var_name}_#{model_index}" %>, :count => 1)
133
105
  <% else -%>
134
- assert_select "td>a[href=?][disabled=disabled]", edit_<%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1
106
+ assert_select "td>a[href=?][disabled=disabled]", edit_<%= t_helper.controller_show_route "@#{var_name}_#{model_index}" %>, :count => 1
135
107
  <% end -%>
136
108
  <% end -%>
137
109
  end
@@ -142,9 +114,9 @@ describe "<%= ns_table_name %>/index" do
142
114
  render
143
115
  <% [1,2].each do |model_index| -%>
144
116
  <% if webrat? -%>
145
- rendered.should have_selector("td>a[href]:not([disabled])", :href => edit_<%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1)
117
+ rendered.should have_selector("td>a[href]:not([disabled])", :href => edit_<%= t_helper.controller_show_route "@#{var_name}_#{model_index}" %>, :count => 1)
146
118
  <% else -%>
147
- assert_select "td>a[href=?]:not([disabled])", edit_<%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1
119
+ assert_select "td>a[href=?]:not([disabled])", edit_<%= t_helper.controller_show_route "@#{var_name}_#{model_index}" %>, :count => 1
148
120
  <% end -%>
149
121
  <% end -%>
150
122
  end
@@ -157,9 +129,9 @@ describe "<%= ns_table_name %>/index" do
157
129
  render
158
130
  <% [1,2].each do |model_index| -%>
159
131
  <% if webrat? -%>
160
- rendered.should_not have_selector("td>a[href][data-method=delete][disabled=disabled]", :href => <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1)
132
+ rendered.should_not have_selector("td>a[href][data-method=delete][disabled=disabled]", :href => <%= t_helper.controller_show_route "@#{var_name}_#{model_index}" %>, :count => 1)
161
133
  <% else -%>
162
- assert_select "td>a[href=?][data-method=delete][disabled=disabled]", <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1
134
+ assert_select "td>a[href=?][data-method=delete][disabled=disabled]", <%= t_helper.controller_show_route "@#{var_name}_#{model_index}" %>, :count => 1
163
135
  <% end -%>
164
136
  <% end -%>
165
137
  end
@@ -170,9 +142,9 @@ describe "<%= ns_table_name %>/index" do
170
142
  render
171
143
  <% [1,2].each do |model_index| -%>
172
144
  <% if webrat? -%>
173
- rendered.should have_selector("td>a[href][data-method=delete]:not([disabled])", :href => <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1)
145
+ rendered.should have_selector("td>a[href][data-method=delete]:not([disabled])", :href => <%= t_helper.controller_show_route "@#{var_name}_#{model_index}" %>, :count => 1)
174
146
  <% else -%>
175
- assert_select "td>a[href=?][data-method=delete]:not([disabled])", <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1
147
+ assert_select "td>a[href=?][data-method=delete]:not([disabled])", <%= t_helper.controller_show_route "@#{var_name}_#{model_index}" %>, :count => 1
176
148
  <% end -%>
177
149
  <% end -%>
178
150
  end
@@ -2,6 +2,8 @@ require 'spec_helper'
2
2
 
3
3
  <%-
4
4
 
5
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
6
+
5
7
  local_class_name = class_name.split('::')[-1] # Non-Namespaced class name
6
8
  var_name = file_name # Non-namespaced variable name
7
9
 
@@ -9,28 +11,15 @@ output_attributes = attributes.reject{|attribute| [:timestamp].include? attrib
9
11
  standard_attributes = attributes.reject{|attribute| [:time, :date, :datetime].include? attribute.type }
10
12
  datetime_attributes = attributes.reject{|attribute| ![:time, :date, :datetime].include? attribute.type }
11
13
 
12
- # Returns code that will generate attribute_value as an attribute_type
13
- def factory_attribute_value(attribute_type, attribute_value)
14
- case attribute_type
15
- when :datetime
16
- "DateTime.parse(#{attribute_value})"
17
- when :time
18
- value_as_time = attribute_value.to_time.strftime('%T')
19
- "Time.parse(#{value_as_time.dump})"
20
- when :date
21
- value_as_date = attribute_value.to_time.strftime('%Y-%m-%d')
22
- "Date.parse(#{value_as_date.dump})"
23
- else
24
- attribute_value
25
- end
26
- end
27
-
28
14
  -%>
29
15
  describe "<%= ns_table_name %>/new" do
30
16
  before(:each) do
17
+ <%- AuthorizedRailsScaffolds::PARENT_MODELS.each do |model| -%>
18
+ @<%= model.underscore %> = assign(:<%= model.underscore %>, FactoryGirl.build_stubbed(:<%= model.underscore %>))
19
+ <%- end -%>
31
20
  assign(:<%= var_name %>, FactoryGirl.build(:<%= var_name %><%= output_attributes.empty? ? '))' : ',' %>
32
21
  <% output_attributes.each_with_index do |attribute, attribute_index| -%>
33
- :<%= attribute.name %> => <%= factory_attribute_value attribute.type, value_for(attribute) %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
22
+ :<%= attribute.name %> => <%= t_helper.factory_attribute_value attribute.type, value_for(attribute) %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
34
23
  <% end -%>
35
24
  <%= !output_attributes.empty? ? " ))\n end" : " end" %>
36
25
 
@@ -38,7 +27,7 @@ describe "<%= ns_table_name %>/new" do
38
27
  render
39
28
 
40
29
  <% if webrat? -%>
41
- rendered.should have_selector("form", :action => <%= table_name %>_path, :method => "post") do |form|
30
+ rendered.should have_selector("form", :action => <%= t_helper.controller_index_path %>, :method => "post") do |form|
42
31
  <% for attribute in standard_attributes -%>
43
32
  <%- if attribute.type == :references -%>
44
33
  form.should have_selector("select#<%= var_name %>_<%= attribute.name %>_id", :name => "<%= var_name %>[<%= attribute.name %>_id]")
@@ -49,7 +38,7 @@ describe "<%= ns_table_name %>/new" do
49
38
  end
50
39
  <% else -%>
51
40
  # Run the generator again with the --webrat flag if you want to use webrat matchers
52
- assert_select "form[action=?][method=?]", <%= index_helper %>_path, "post" do
41
+ assert_select "form[action=?][method=?]", <%= t_helper.controller_index_path %>, "post" do
53
42
  <% for attribute in standard_attributes -%>
54
43
  <%- if attribute.type == :references -%>
55
44
  assert_select "select#<%= var_name %>_<%= attribute.name %>_id[name=?]", "<%= var_name %>[<%= attribute.name %>_id]"
@@ -66,7 +55,7 @@ describe "<%= ns_table_name %>/new" do
66
55
  render
67
56
 
68
57
  <% if webrat? -%>
69
- rendered.should have_selector("form", :action => <%= table_name %>_path, :method => "post") do |form|
58
+ rendered.should have_selector("form", :action => <%= t_helper.controller_index_path %>, :method => "post") do |form|
70
59
  <% for attribute in datetime_attributes -%>
71
60
  <%- if [:date, :datetime].include? attribute.type -%>
72
61
  form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
@@ -81,7 +70,7 @@ describe "<%= ns_table_name %>/new" do
81
70
  end
82
71
  <% else -%>
83
72
  # Run the generator again with the --webrat flag if you want to use webrat matchers
84
- assert_select "form[action=?][method=?]", <%= table_name %>_path, "post" do
73
+ assert_select "form[action=?][method=?]", <%= t_helper.controller_index_path %>, "post" do
85
74
  <% for attribute in datetime_attributes -%>
86
75
  # <%= attribute.name %> values
87
76
  <%- if [:date, :datetime].include? attribute.type -%>
@@ -0,0 +1,59 @@
1
+ require "spec_helper"
2
+
3
+ <% module_namespacing do -%>
4
+ <%-
5
+
6
+ parts = ns_table_name.split('/')[0..-2] || []
7
+
8
+ AuthorizedRailsScaffolds::PARENT_MODELS.each_with_index do |model, model_index|
9
+ parts << model.underscore.pluralize
10
+ parts << model_index + 2
11
+ end
12
+
13
+ parts << ns_table_name.split('/')[-1]
14
+ request_path = parts.join('/')
15
+
16
+ extra_arguments = ''
17
+ if AuthorizedRailsScaffolds::PARENT_MODELS.any?
18
+ AuthorizedRailsScaffolds::PARENT_MODELS.each_with_index do |model, model_index|
19
+ extra_arguments += ", :#{model.underscore}_id => \"#{model_index + 2}\""
20
+ end
21
+ end
22
+
23
+ -%>
24
+ describe <%= controller_class_name %>Controller do
25
+ describe "routing" do
26
+
27
+ <% unless options[:singleton] -%>
28
+ it "routes to #index" do
29
+ get("/<%= request_path %>").should route_to("<%= ns_table_name %>#index"<%= extra_arguments %>)
30
+ end
31
+
32
+ <% end -%>
33
+ it "routes to #new" do
34
+ get("/<%= request_path %>/new").should route_to("<%= ns_table_name %>#new"<%= extra_arguments %>)
35
+ end
36
+
37
+ it "routes to #show" do
38
+ get("/<%= request_path %>/1").should route_to("<%= ns_table_name %>#show"<%= extra_arguments %>, :id => "1")
39
+ end
40
+
41
+ it "routes to #edit" do
42
+ get("/<%= request_path %>/1/edit").should route_to("<%= ns_table_name %>#edit"<%= extra_arguments %>, :id => "1")
43
+ end
44
+
45
+ it "routes to #create" do
46
+ post("/<%= request_path %>").should route_to("<%= ns_table_name %>#create"<%= extra_arguments %>)
47
+ end
48
+
49
+ it "routes to #update" do
50
+ put("/<%= request_path %>/1").should route_to("<%= ns_table_name %>#update"<%= extra_arguments %>, :id => "1")
51
+ end
52
+
53
+ it "routes to #destroy" do
54
+ delete("/<%= request_path %>/1").should route_to("<%= ns_table_name %>#destroy"<%= extra_arguments %>, :id => "1")
55
+ end
56
+
57
+ end
58
+ end
59
+ <% end -%>
@@ -2,53 +2,23 @@ require 'spec_helper'
2
2
 
3
3
  <%-
4
4
 
5
+ t_helper = AuthorizedRailsScaffolds::Helper.new(class_name, singular_table_name, file_name)
6
+
5
7
  local_class_name = class_name.split('::')[-1] # Non-Namespaced class name
6
8
  var_name = file_name # Non-namespaced variable name
7
9
 
8
10
  output_attributes = attributes.reject{|attribute| [:timestamp, :references].include? attribute.type }
9
11
  references_attributes = attributes.reject{|attribute| ![:references].include? attribute.type }
10
12
 
11
- path_prefix = ns_file_name[0..-(file_name.length+1)]
12
-
13
- # Returns code that will generate attribute_value as an attribute_type
14
- def factory_attribute_value(attribute_type, attribute_value)
15
- case attribute_type
16
- when :datetime
17
- "DateTime.parse(#{attribute_value})"
18
- when :time
19
- value_as_time = attribute_value.to_time.strftime('%T')
20
- "Time.parse(#{value_as_time.dump})"
21
- when :date
22
- value_as_date = attribute_value.to_time.strftime('%Y-%m-%d')
23
- "Date.parse(#{value_as_date.dump})"
24
- else
25
- attribute_value
26
- end
27
- end
28
-
29
- # Returns the expected output string of attribute_value if it is an attribute_type
30
- def factory_attribute_string(attribute_type, attribute_value)
31
- case attribute_type
32
- when :datetime
33
- attribute_value_as_date = DateTime.parse(attribute_value)
34
- I18n.l(attribute_value_as_date, :format => :long).dump
35
- when :time
36
- attribute_value_as_time = Time.parse(attribute_value)
37
- I18n.l(attribute_value_as_time, :format => :short).dump
38
- when :date
39
- attribute_value_as_date = Date.parse(attribute_value)
40
- I18n.l(attribute_value_as_date).dump
41
- else
42
- attribute_value
43
- end
44
- end
45
-
46
13
  -%>
47
14
  describe "<%= ns_table_name %>/show" do
48
15
  before(:each) do
16
+ <%- AuthorizedRailsScaffolds::PARENT_MODELS.each do |model| -%>
17
+ @<%= model.underscore %> = assign(:<%= model.underscore %>, FactoryGirl.build_stubbed(:<%= model.underscore %>))
18
+ <%- end -%>
49
19
  @<%= var_name %> = FactoryGirl.build_stubbed(:<%= var_name %><%= output_attributes.empty? ? ')' : ',' %>
50
20
  <% output_attributes.each_with_index do |attribute, attribute_index| -%>
51
- :<%= attribute.name %> => <%= factory_attribute_value attribute.type, value_for(attribute) %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
21
+ :<%= attribute.name %> => <%= t_helper.factory_attribute_value attribute.type, value_for(attribute) %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
52
22
  <% end -%>
53
23
  <% if !output_attributes.empty? -%>
54
24
  )
@@ -66,10 +36,10 @@ describe "<%= ns_table_name %>/show" do
66
36
  <% for attribute in output_attributes -%>
67
37
  <% if webrat? -%>
68
38
  rendered.should have_selector("dl>dt", :content => <%= "#{attribute.human_name}:".dump %>)
69
- rendered.should have_selector("dl>dd", :content => <%= factory_attribute_string attribute.type, value_for(attribute) %>.to_s)
39
+ rendered.should have_selector("dl>dd", :content => <%= t_helper.factory_attribute_string attribute.type, value_for(attribute) %>.to_s)
70
40
  <% else -%>
71
41
  assert_select "dl>dt", :text => <%= "#{attribute.human_name}:".dump %>
72
- assert_select "dl>dd", :text => <%= factory_attribute_string attribute.type, value_for(attribute) %>.to_s
42
+ assert_select "dl>dd", :text => <%= t_helper.factory_attribute_string attribute.type, value_for(attribute) %>.to_s
73
43
  <% end -%>
74
44
  <% end -%>
75
45
  end
@@ -84,10 +54,10 @@ describe "<%= ns_table_name %>/show" do
84
54
  render
85
55
  <% if webrat? -%>
86
56
  rendered.should have_selector("dl>dt", :content => <%= "#{attribute.human_name}:".dump %>, :count => 0)
87
- rendered.should have_selector("dl>dd>a[href]", :href => <%= path_prefix %><%= attribute.name %>_path(@<%= var_name %>.<%= attribute.name %>), :count => 0)
57
+ rendered.should have_selector("dl>dd>a[href]", :href => <%= t_helper.references_show_route attribute.name %>, :count => 0)
88
58
  <% else -%>
89
59
  assert_select "dl>dt", :text => <%= "#{attribute.human_name}:".dump %>, :count => 0
90
- assert_select "dl>dd>a[href=?]", <%= path_prefix %><%= attribute.name %>_path(@<%= var_name %>.<%= attribute.name %>), :count => 0
60
+ assert_select "dl>dd>a[href=?]", <%= t_helper.references_show_route attribute.name %>, :count => 0
91
61
  <% end -%>
92
62
  end
93
63
  end
@@ -99,10 +69,10 @@ describe "<%= ns_table_name %>/show" do
99
69
  render
100
70
  <% if webrat? -%>
101
71
  rendered.should have_selector("dl>dt", :content => <%= "#{attribute.human_name}:".dump %>)
102
- rendered.should have_selector("dl>dd>a[href]", :href => <%= path_prefix %><%= attribute.name %>_path(@<%= var_name %>.<%= attribute.name %>), :count => 1)
72
+ rendered.should have_selector("dl>dd>a[href]", :href => <%= t_helper.references_show_route attribute.name %>, :count => 1)
103
73
  <% else -%>
104
74
  assert_select "dl>dt", :text => <%= "#{attribute.human_name}:".dump %>
105
- assert_select "dl>dd>a[href=?]", <%= path_prefix %><%= attribute.name %>_path(@<%= var_name %>.<%= attribute.name %>), :count => 1
75
+ assert_select "dl>dd>a[href=?]", <%= t_helper.references_show_route attribute.name %>, :count => 1
106
76
  <% end -%>
107
77
  end
108
78
  end
metadata CHANGED
@@ -1,49 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authorized_rails_scaffolds
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
5
- prerelease:
4
+ version: 0.0.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - bmorrall
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-03-24 00:00:00.000000000Z
11
+ date: 2013-03-26 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: railties
16
- requirement: &70329046438340 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '3.1'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70329046438340
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '3.1'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: bundler
27
- requirement: &70329046437840 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - ~>
31
32
  - !ruby/object:Gem::Version
32
33
  version: '1.3'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70329046437840
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
36
41
  - !ruby/object:Gem::Dependency
37
42
  name: rake
38
- requirement: &70329046437460 !ruby/object:Gem::Requirement
39
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
45
  - - ! '>='
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *70329046437460
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  description: Creates scaffolds for Twitter Bootstrap with generated RSpec coverage
48
56
  email:
49
57
  - bemo56@hotmail.com
@@ -65,6 +73,7 @@ files:
65
73
  - lib/generators/authorized_rails_scaffolds/install_scaffold/templates/controller.rb
66
74
  - lib/generators/authorized_rails_scaffolds/install_scaffold/templates/edit.html.erb
67
75
  - lib/generators/authorized_rails_scaffolds/install_scaffold/templates/index.html.erb
76
+ - lib/generators/authorized_rails_scaffolds/install_scaffold/templates/initializer.rb
68
77
  - lib/generators/authorized_rails_scaffolds/install_scaffold/templates/new.html.erb
69
78
  - lib/generators/authorized_rails_scaffolds/install_scaffold/templates/show.html.erb
70
79
  - lib/generators/authorized_rails_scaffolds/install_spec/USAGE
@@ -76,31 +85,31 @@ files:
76
85
  - lib/generators/authorized_rails_scaffolds/install_spec/templates/index_spec.rb
77
86
  - lib/generators/authorized_rails_scaffolds/install_spec/templates/model_spec.rb
78
87
  - lib/generators/authorized_rails_scaffolds/install_spec/templates/new_spec.rb
88
+ - lib/generators/authorized_rails_scaffolds/install_spec/templates/routing_spec.rb
79
89
  - lib/generators/authorized_rails_scaffolds/install_spec/templates/show_spec.rb
80
90
  homepage: https://github.com/bmorrall/authorized_rails_scaffolds
81
91
  licenses:
82
92
  - MIT
93
+ metadata: {}
83
94
  post_install_message:
84
95
  rdoc_options: []
85
96
  require_paths:
86
97
  - lib
87
98
  required_ruby_version: !ruby/object:Gem::Requirement
88
- none: false
89
99
  requirements:
90
100
  - - ! '>='
91
101
  - !ruby/object:Gem::Version
92
102
  version: '0'
93
103
  required_rubygems_version: !ruby/object:Gem::Requirement
94
- none: false
95
104
  requirements:
96
105
  - - ! '>='
97
106
  - !ruby/object:Gem::Version
98
107
  version: '0'
99
108
  requirements: []
100
109
  rubyforge_project:
101
- rubygems_version: 1.8.10
110
+ rubygems_version: 2.0.3
102
111
  signing_key:
103
- specification_version: 3
112
+ specification_version: 4
104
113
  summary: Replaces Rails and RSpec's default generators with templates taking full
105
114
  advantage of Authentication (Devise), Authorization (CanCan) and Test Coverage (RSpec)
106
115
  test_files: []