authorized_rails_scaffolds 0.0.9 → 0.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +6 -0
- data/authorized_rails_scaffolds.gemspec +2 -0
- data/lib/authorized_rails_scaffolds.rb +22 -7
- data/lib/authorized_rails_scaffolds/helper.rb +13 -5
- data/lib/authorized_rails_scaffolds/rspec_scaffold_generator_helper.rb +82 -0
- data/lib/authorized_rails_scaffolds/{view_spec_helper.rb → rspec_scaffold_generator_view_helper.rb} +1 -3
- data/lib/authorized_rails_scaffolds/version.rb +1 -1
- data/lib/generators/authorized_rails_scaffolds/install_templates/templates/scaffold/_form.html.erb +1 -1
- data/lib/generators/authorized_rails_scaffolds/install_templates/templates/scaffold/controller.rb +3 -3
- data/lib/generators/authorized_rails_scaffolds/install_templates/templates/scaffold/index.html.erb +19 -9
- data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/controller_spec.rb +39 -36
- data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/edit_spec.rb +20 -11
- data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/index_spec.rb +53 -15
- data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/new_spec.rb +40 -30
- data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/routing_spec.rb +16 -11
- data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/show_spec.rb +22 -13
- data/spec/lib/authorized_rails_scaffolds/rspec_scaffold_generator_helper_spec.rb +147 -0
- data/spec/spec_helper.rb +18 -0
- data/spec/support/rspec_scaffold_generator_helper_macros.rb +15 -0
- metadata +39 -12
- data/lib/authorized_rails_scaffolds/controller_spec_helper.rb +0 -31
- data/lib/authorized_rails_scaffolds/routing_spec_helper.rb +0 -29
data/Rakefile
CHANGED
@@ -19,6 +19,8 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency 'railties', '>= 3.1'
|
22
|
+
spec.add_development_dependency "rails", '>= 3.1'
|
22
23
|
spec.add_development_dependency "bundler", "~> 1.3"
|
23
24
|
spec.add_development_dependency "rake"
|
25
|
+
spec.add_development_dependency 'rspec'
|
24
26
|
end
|
@@ -1,13 +1,28 @@
|
|
1
1
|
require "authorized_rails_scaffolds/version"
|
2
2
|
|
3
3
|
module AuthorizedRailsScaffolds
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
class Configuration
|
5
|
+
attr_accessor :parent_models
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
self.parent_models = []
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.config
|
13
|
+
@config ||= Configuration.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.configure
|
17
|
+
yield(config) if block_given?
|
18
|
+
end
|
19
|
+
|
20
|
+
# mattr_accessor :parent_models
|
21
|
+
# @@parent_models = []
|
22
|
+
|
8
23
|
end
|
9
24
|
|
10
25
|
require "authorized_rails_scaffolds/helper"
|
11
|
-
require "authorized_rails_scaffolds/
|
12
|
-
require "authorized_rails_scaffolds/
|
13
|
-
|
26
|
+
require "authorized_rails_scaffolds/rspec_scaffold_generator_helper"
|
27
|
+
require "authorized_rails_scaffolds/rspec_scaffold_generator_view_helper"
|
28
|
+
|
@@ -11,13 +11,13 @@ module AuthorizedRailsScaffolds
|
|
11
11
|
@controller_prefix = options[:controller_prefix] || options[:class_name].split('::')[0..-2].join('::')
|
12
12
|
|
13
13
|
# Determine Parent Prefix i.e. user_company
|
14
|
-
parent_prefix = AuthorizedRailsScaffolds.parent_models.collect{ |x| x.underscore }.join('_')
|
14
|
+
parent_prefix = AuthorizedRailsScaffolds.config.parent_models.collect{ |x| x.underscore }.join('_')
|
15
15
|
|
16
16
|
# Route Prefix i.e. awesome_user_company
|
17
17
|
route_prefix = [@namespace_prefix, parent_prefix].reject{ |x|x.blank? }.join('_')
|
18
18
|
@route_prefix = route_prefix.blank? ? '' : "#{route_prefix}_"
|
19
19
|
|
20
|
-
@parent_variables = AuthorizedRailsScaffolds.parent_models.collect{ |x| "@#{x.underscore}" }.join(', ')
|
20
|
+
@parent_variables = AuthorizedRailsScaffolds.config.parent_models.collect{ |x| "@#{x.underscore}" }.join(', ')
|
21
21
|
|
22
22
|
# Route Helpers
|
23
23
|
@route_params_prefix = @parent_variables.blank? ? "" : "#{@parent_variables}, "
|
@@ -45,6 +45,14 @@ module AuthorizedRailsScaffolds
|
|
45
45
|
@plural_var_name
|
46
46
|
end
|
47
47
|
|
48
|
+
def extra_params
|
49
|
+
extra_params = ''
|
50
|
+
AuthorizedRailsScaffolds.config.parent_models.each_with_index do |model, model_index|
|
51
|
+
extra_params += ", :#{model.underscore}_id => \"#{model_index + 2}\""
|
52
|
+
end
|
53
|
+
extra_params
|
54
|
+
end
|
55
|
+
|
48
56
|
def form_object_array(variable = nil)
|
49
57
|
variable ||= "@#{var_name}"
|
50
58
|
namespace_prefix = ":#{@namespace_prefix}" unless @namespace_prefix.blank?
|
@@ -79,8 +87,8 @@ module AuthorizedRailsScaffolds
|
|
79
87
|
|
80
88
|
# call arguments
|
81
89
|
def index_action_params_prefix
|
82
|
-
if AuthorizedRailsScaffolds.parent_models.any?
|
83
|
-
AuthorizedRailsScaffolds.parent_models.collect{|x| ":#{x.underscore}_id => @#{x.underscore}.to_param"}.join(', ')
|
90
|
+
if AuthorizedRailsScaffolds.config.parent_models.any?
|
91
|
+
AuthorizedRailsScaffolds.config.parent_models.collect{|x| ":#{x.underscore}_id => @#{x.underscore}.to_param"}.join(', ')
|
84
92
|
else
|
85
93
|
''
|
86
94
|
end
|
@@ -88,7 +96,7 @@ module AuthorizedRailsScaffolds
|
|
88
96
|
|
89
97
|
def references_show_route(attribute_name, variable = nil)
|
90
98
|
variable ||= "@#{@var_name}.#{attribute_name}"
|
91
|
-
if AuthorizedRailsScaffolds.parent_models.any? && AuthorizedRailsScaffolds.parent_models.last.underscore == attribute_name
|
99
|
+
if AuthorizedRailsScaffolds.config.parent_models.any? && AuthorizedRailsScaffolds.config.parent_models.last.underscore == attribute_name
|
92
100
|
references_path = "#{@route_prefix}path(#{variable})"
|
93
101
|
else
|
94
102
|
references_path = "#{attribute_name}_path(#{variable})"
|
@@ -0,0 +1,82 @@
|
|
1
|
+
class AuthorizedRailsScaffolds::RSpecScaffoldGeneratorHelper < AuthorizedRailsScaffolds::Helper
|
2
|
+
|
3
|
+
def initialize(options = {})
|
4
|
+
super options
|
5
|
+
|
6
|
+
parent_models = AuthorizedRailsScaffolds.config.parent_models
|
7
|
+
|
8
|
+
class_name_parts = (options[:class_name] || options[:local_class_name]).split("::")
|
9
|
+
|
10
|
+
example_parent_values = {}
|
11
|
+
parent_models.each_with_index do |parent_model, index|
|
12
|
+
example_parent_values[parent_model] = index + 2
|
13
|
+
end
|
14
|
+
|
15
|
+
namespace_prefix_modules = class_name_parts[0..-2] # ['Example', 'V1']
|
16
|
+
local_class_name = class_name_parts[-1]
|
17
|
+
|
18
|
+
parent_model_and_value_parts = []
|
19
|
+
parent_model_param_parts = []
|
20
|
+
parent_models.each do |parent_model|
|
21
|
+
parent_value = example_parent_values[parent_model]
|
22
|
+
|
23
|
+
# User, 2
|
24
|
+
parent_model_and_value_parts << parent_model.pluralize
|
25
|
+
parent_model_and_value_parts << parent_value
|
26
|
+
|
27
|
+
parent_model_param_parts << "#{parent_model.underscore}_id => #{parent_value}"
|
28
|
+
end
|
29
|
+
|
30
|
+
# Directory for the generated controller: i.e. awesome/foo_bars
|
31
|
+
@controller_directory = [namespace_prefix_modules + [local_class_name.pluralize]].join("/").underscore
|
32
|
+
|
33
|
+
# Example index route: i.e. /awesome/users/2/foo_bars
|
34
|
+
@example_controller_path = [namespace_prefix_modules + parent_model_and_value_parts + [local_class_name.pluralize]].join("/").underscore
|
35
|
+
|
36
|
+
@example_controller_path_extra_params = parent_model_param_parts.any? ? ", :#{parent_model_param_parts.join(', :')}" : ''
|
37
|
+
|
38
|
+
@attributes = options[:attributes]
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_factory_model
|
42
|
+
extra_params = extra_model_params
|
43
|
+
"FactoryGirl.create(:#{var_name}#{extra_params})"
|
44
|
+
end
|
45
|
+
|
46
|
+
def create_parent_model(model_name)
|
47
|
+
extra_params = extra_model_params(model_name)
|
48
|
+
"FactoryGirl.create(:#{model_name}#{extra_params})"
|
49
|
+
end
|
50
|
+
|
51
|
+
# Directory for the generated controller: i.e. awesome/foo_bars
|
52
|
+
def controller_directory
|
53
|
+
@controller_directory
|
54
|
+
end
|
55
|
+
|
56
|
+
# Example index route: i.e. /awesome/users/2/foo_bars
|
57
|
+
def example_controller_path
|
58
|
+
"/#{@example_controller_path}"
|
59
|
+
end
|
60
|
+
|
61
|
+
# Extra params for an example controller path: i.e. ', :user_id => 2'
|
62
|
+
def example_controller_path_extra_params
|
63
|
+
@example_controller_path_extra_params
|
64
|
+
end
|
65
|
+
|
66
|
+
def parent_model_tables
|
67
|
+
@parent_model_tables ||= AuthorizedRailsScaffolds.config.parent_models.map { |model| model.underscore }
|
68
|
+
end
|
69
|
+
|
70
|
+
protected
|
71
|
+
|
72
|
+
def extra_model_params(model_name = nil)
|
73
|
+
argument_params = []
|
74
|
+
AuthorizedRailsScaffolds.config.parent_models.each do |parent_model|
|
75
|
+
attribute = parent_model.underscore
|
76
|
+
break if model_name == attribute
|
77
|
+
argument_params << ", :#{attribute} => @#{attribute}"
|
78
|
+
end
|
79
|
+
argument_params.join('')
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
data/lib/authorized_rails_scaffolds/{view_spec_helper.rb → rspec_scaffold_generator_view_helper.rb}
RENAMED
@@ -1,9 +1,7 @@
|
|
1
|
-
class AuthorizedRailsScaffolds::
|
1
|
+
class AuthorizedRailsScaffolds::RSpecScaffoldGeneratorViewHelper < AuthorizedRailsScaffolds::RSpecScaffoldGeneratorHelper
|
2
2
|
|
3
3
|
def initialize(options = {})
|
4
4
|
super options
|
5
|
-
|
6
|
-
@attributes = options[:attributes]
|
7
5
|
end
|
8
6
|
|
9
7
|
def output_attributes
|
data/lib/generators/authorized_rails_scaffolds/install_templates/templates/scaffold/_form.html.erb
CHANGED
@@ -23,7 +23,7 @@ plural_var_name = t_helper.plural_var_name # Pluralized non-namespaced variable
|
|
23
23
|
<div class="form-actions">
|
24
24
|
<%%= f.button :submit, :class => 'btn-primary' %>
|
25
25
|
<%%= link_to t('.cancel', :default => t("helpers.links.cancel")),
|
26
|
-
<%= t_helper.controller_index_path %>,
|
26
|
+
@<%= var_name %>.persisted? ? <%= t_helper.controller_show_route "@#{var_name}" %> : <%= t_helper.controller_index_path %>,
|
27
27
|
:class => 'btn'
|
28
28
|
%>
|
29
29
|
</div>
|
data/lib/generators/authorized_rails_scaffolds/install_templates/templates/scaffold/controller.rb
CHANGED
@@ -20,10 +20,10 @@ orm_instance = Rails::Generators::ActiveModel.new var_name
|
|
20
20
|
-%>
|
21
21
|
<% module_namespacing do -%>
|
22
22
|
class <%= controller_class_name %>Controller < <%= t_helper.ns_controller_prefix %>ApplicationController
|
23
|
-
<%- AuthorizedRailsScaffolds.parent_models.each_with_index do |model, model_index| -%>
|
24
|
-
load_and_authorize_resource :<%= model.underscore %><% if model_index > 0 %>, :through => :<%= AuthorizedRailsScaffolds.parent_models[model_index - 1].underscore %><% end %>
|
23
|
+
<%- AuthorizedRailsScaffolds.config.parent_models.each_with_index do |model, model_index| -%>
|
24
|
+
load_and_authorize_resource :<%= model.underscore %><% if model_index > 0 %>, :through => :<%= AuthorizedRailsScaffolds.config.parent_models[model_index - 1].underscore %><% end %>
|
25
25
|
<%- end -%>
|
26
|
-
load_and_authorize_resource :<%= var_name%><% if AuthorizedRailsScaffolds.parent_models.any? %>, :through => :<%= AuthorizedRailsScaffolds.parent_models.last.underscore %><% end %>
|
26
|
+
load_and_authorize_resource :<%= var_name%><% if AuthorizedRailsScaffolds.config.parent_models.any? %>, :through => :<%= AuthorizedRailsScaffolds.config.parent_models.last.underscore %><% end %>
|
27
27
|
|
28
28
|
# GET <%= route_url %>
|
29
29
|
# GET <%= route_url %>.json
|
data/lib/generators/authorized_rails_scaffolds/install_templates/templates/scaffold/index.html.erb
CHANGED
@@ -19,9 +19,15 @@ plural_var_name = t_helper.plural_var_name # Pluralized non-namespaced variable
|
|
19
19
|
<thead>
|
20
20
|
<tr>
|
21
21
|
<th> </th>
|
22
|
-
|
22
|
+
<%- attributes.each do |attribute| -%>
|
23
|
+
<%- if attribute.type == :references -%>
|
24
|
+
<%% unless @<%= attribute.name %> %>
|
25
|
+
<th><%%= model_class.human_attribute_name(:<%= attribute.name %>) %></th>
|
26
|
+
<%% end %>
|
27
|
+
<%- else -%>
|
23
28
|
<th><%%= model_class.human_attribute_name(:<%= attribute.name %>) %></th>
|
24
|
-
|
29
|
+
<%- end -%>
|
30
|
+
<%- end -%>
|
25
31
|
<th><%%= model_class.human_attribute_name(:created_at) %></th>
|
26
32
|
<th><%%=t '.actions', :default => t("helpers.actions") %></th>
|
27
33
|
</tr>
|
@@ -30,16 +36,20 @@ plural_var_name = t_helper.plural_var_name # Pluralized non-namespaced variable
|
|
30
36
|
<%% @<%= plural_var_name %>.each do |<%= var_name %>| %>
|
31
37
|
<tr class="<%= var_name %>_<%%= <%= var_name %>.id %>">
|
32
38
|
<td class="id-column"><%%= <%= var_name %>.id %></td>
|
33
|
-
|
39
|
+
<%- if attributes.any? -%>
|
34
40
|
<td class="title-column"><%%= link_to <%= var_name %>.<%= attributes[0].name %>, <%= t_helper.controller_show_route(var_name) %> %></td>
|
35
|
-
|
36
|
-
|
41
|
+
<%- attributes[1..-1].each do |attribute| -%>
|
42
|
+
<%- if attribute.type == :references -%>
|
43
|
+
<%% unless @<%= attribute.name %> %>
|
44
|
+
<td><%%= <%= var_name %>.<%= attribute.name %> %></td>
|
45
|
+
<%% end %>
|
46
|
+
<%- elsif [:datetime, :timestamp, :time, :date].include? attribute.type -%>
|
37
47
|
<td><%% unless <%= var_name %>.<%= attribute.name %>.nil? %><%%=l <%= var_name %>.<%= attribute.name %><% if attribute.type == :datetime %>, :format => :long<% end %><% if attribute.type == :time %>, :format => :short<% end %> %><%% end %></td>
|
38
|
-
|
48
|
+
<%- else -%>
|
39
49
|
<td><%%= <%= var_name %>.<%= attribute.name %> %></td>
|
40
|
-
|
41
|
-
|
42
|
-
|
50
|
+
<%- end -%>
|
51
|
+
<%- end -%>
|
52
|
+
<%- end -%>
|
43
53
|
<td><%%=l <%= var_name %>.created_at, :format => :long %></td>
|
44
54
|
<td class="table-actions">
|
45
55
|
<%%= link_to t('.edit', :default => t("helpers.links.edit")),
|
data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/controller_spec.rb
CHANGED
@@ -21,7 +21,7 @@ require 'spec_helper'
|
|
21
21
|
<% module_namespacing do -%>
|
22
22
|
<%-
|
23
23
|
|
24
|
-
t_helper = AuthorizedRailsScaffolds::
|
24
|
+
t_helper = AuthorizedRailsScaffolds::RSpecScaffoldGeneratorHelper.new(
|
25
25
|
:class_name => class_name,
|
26
26
|
:singular_table_name => singular_table_name,
|
27
27
|
:file_name => file_name,
|
@@ -32,6 +32,8 @@ local_class_name = t_helper.local_class_name # Non-Namespaced class name
|
|
32
32
|
var_name = t_helper.var_name # Non-namespaced variable name
|
33
33
|
plural_var_name = t_helper.plural_var_name # Pluralized non-namespaced variable name
|
34
34
|
|
35
|
+
parent_model_tables = t_helper.parent_model_tables
|
36
|
+
|
35
37
|
-%>
|
36
38
|
describe <%= controller_class_name %>Controller do
|
37
39
|
|
@@ -47,22 +49,22 @@ describe <%= controller_class_name %>Controller do
|
|
47
49
|
FactoryGirl.attributes_for(:<%= var_name %>)
|
48
50
|
end
|
49
51
|
|
50
|
-
<%- if
|
52
|
+
<%- if parent_model_tables.any? -%>
|
51
53
|
before(:each) do
|
52
|
-
<%-
|
53
|
-
@<%=
|
54
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
55
|
+
@<%= parent_model %> = <%= t_helper.create_parent_model parent_model %>
|
54
56
|
<%- end -%>
|
55
57
|
end
|
56
58
|
|
57
59
|
<%- end -%>
|
58
60
|
<% unless options[:singleton] -%>
|
59
61
|
describe "GET index" do
|
60
|
-
context do # Within default nesting
|
61
|
-
<%-
|
62
|
-
grant_ability :read, <%=
|
62
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
63
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
64
|
+
grant_ability :read, <%= parent_model.classify %>
|
63
65
|
<%- end -%>
|
64
66
|
|
65
|
-
context 'without a user' do
|
67
|
+
context 'without a user session' do
|
66
68
|
describe 'with valid request' do
|
67
69
|
before(:each) do
|
68
70
|
@<%= var_name %> = <%= t_helper.create_factory_model %>
|
@@ -103,16 +105,12 @@ describe <%= controller_class_name %>Controller do
|
|
103
105
|
|
104
106
|
<% end -%>
|
105
107
|
describe "GET show" do
|
106
|
-
context do # Within default nesting
|
107
|
-
<%-
|
108
|
-
grant_ability :read, <%=
|
108
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
109
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
110
|
+
grant_ability :read, <%= parent_model.classify %>
|
109
111
|
<%- end -%>
|
110
112
|
|
111
|
-
context 'without a user' do
|
112
|
-
<%- AuthorizedRailsScaffolds.parent_models.each do |model| -%>
|
113
|
-
grant_ability :read, <%= model.classify %>
|
114
|
-
<%- end -%>
|
115
|
-
|
113
|
+
context 'without a user session' do
|
116
114
|
describe 'with valid request' do
|
117
115
|
before(:each) do
|
118
116
|
@<%= var_name %> = <%= t_helper.create_factory_model %>
|
@@ -152,12 +150,12 @@ describe <%= controller_class_name %>Controller do
|
|
152
150
|
end
|
153
151
|
|
154
152
|
describe "GET new" do
|
155
|
-
context do # Within default nesting
|
156
|
-
<%-
|
157
|
-
grant_ability :read, <%=
|
153
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
154
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
155
|
+
grant_ability :read, <%= parent_model.classify %>
|
158
156
|
<%- end -%>
|
159
157
|
|
160
|
-
context 'without a user' do
|
158
|
+
context 'without a user session' do
|
161
159
|
describe 'with valid request' do
|
162
160
|
before(:each) do
|
163
161
|
get :new, {<%= t_helper.index_action_params_prefix %>}
|
@@ -194,12 +192,12 @@ describe <%= controller_class_name %>Controller do
|
|
194
192
|
end
|
195
193
|
|
196
194
|
describe "GET edit" do
|
197
|
-
context do # Within default nesting
|
198
|
-
<%-
|
199
|
-
grant_ability :read, <%=
|
195
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
196
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
197
|
+
grant_ability :read, <%= parent_model.classify %>
|
200
198
|
<%- end -%>
|
201
199
|
|
202
|
-
context 'without a user' do
|
200
|
+
context 'without a user session' do
|
203
201
|
describe 'with valid request' do
|
204
202
|
before(:each) do
|
205
203
|
@<%= var_name %> = <%= t_helper.create_factory_model %>
|
@@ -239,12 +237,12 @@ describe <%= controller_class_name %>Controller do
|
|
239
237
|
end
|
240
238
|
|
241
239
|
describe "POST create" do
|
242
|
-
context do # Within default nesting
|
243
|
-
<%-
|
244
|
-
grant_ability :read, <%=
|
240
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
241
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
242
|
+
grant_ability :read, <%= parent_model.classify %>
|
245
243
|
<%- end -%>
|
246
244
|
|
247
|
-
context 'without a user' do
|
245
|
+
context 'without a user session' do
|
248
246
|
describe 'with valid params' do
|
249
247
|
before(:each) do
|
250
248
|
post :create, {<%= t_helper.action_params_prefix %>:<%= var_name %> => valid_create_attributes}
|
@@ -280,6 +278,11 @@ describe <%= controller_class_name %>Controller do
|
|
280
278
|
assigns(:<%= var_name %>).should be_a(<%= local_class_name %>)
|
281
279
|
assigns(:<%= var_name %>).should be_persisted
|
282
280
|
end
|
281
|
+
<% if parent_model_tables.any? -%>
|
282
|
+
it "assigns the parent <%= parent_model_tables[-1].classify %> to <%= var_name %>" do
|
283
|
+
assigns(:<%= var_name %>).<%= parent_model_tables[-1] %>.should eq(@<%= parent_model_tables[-1] %>)
|
284
|
+
end
|
285
|
+
<% end -%>
|
283
286
|
it "redirects to the created <%= var_name %>" do
|
284
287
|
response.should redirect_to(<%= t_helper.controller_show_route "#{local_class_name}.last" %>)
|
285
288
|
end
|
@@ -301,12 +304,12 @@ describe <%= controller_class_name %>Controller do
|
|
301
304
|
end
|
302
305
|
|
303
306
|
describe "PUT update" do
|
304
|
-
context do # Within default nesting
|
305
|
-
<%-
|
306
|
-
grant_ability :read, <%=
|
307
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
308
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
309
|
+
grant_ability :read, <%= parent_model.classify %>
|
307
310
|
<%- end -%>
|
308
311
|
|
309
|
-
context 'without a user' do
|
312
|
+
context 'without a user session' do
|
310
313
|
describe 'with valid params' do
|
311
314
|
before(:each) do
|
312
315
|
@<%= var_name %> = <%= t_helper.create_factory_model %>
|
@@ -374,12 +377,12 @@ describe <%= controller_class_name %>Controller do
|
|
374
377
|
end
|
375
378
|
|
376
379
|
describe "DELETE destroy" do
|
377
|
-
context do # Within default nesting
|
378
|
-
<%-
|
379
|
-
grant_ability :read, <%=
|
380
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
381
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
382
|
+
grant_ability :read, <%= parent_model.classify %>
|
380
383
|
<%- end -%>
|
381
384
|
|
382
|
-
context 'without a user' do
|
385
|
+
context 'without a user session' do
|
383
386
|
describe 'with valid request' do
|
384
387
|
before(:each) do
|
385
388
|
@<%= var_name %> = <%= t_helper.create_factory_model %>
|
data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/edit_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
<%-
|
4
4
|
|
5
|
-
t_helper = AuthorizedRailsScaffolds::
|
5
|
+
t_helper = AuthorizedRailsScaffolds::RSpecScaffoldGeneratorViewHelper.new(
|
6
6
|
:class_name => class_name,
|
7
7
|
:singular_table_name => singular_table_name,
|
8
8
|
:file_name => file_name,
|
@@ -12,29 +12,38 @@ t_helper = AuthorizedRailsScaffolds::ViewSpecHelper.new(
|
|
12
12
|
local_class_name = t_helper.local_class_name # Non-Namespaced class name
|
13
13
|
var_name = t_helper.var_name # Non-namespaced variable name
|
14
14
|
|
15
|
+
controller_directory = t_helper.controller_directory
|
16
|
+
parent_model_tables = t_helper.parent_model_tables
|
17
|
+
|
15
18
|
output_attributes = t_helper.output_attributes
|
16
19
|
standard_attributes = t_helper.standard_attributes
|
17
20
|
datetime_attributes = t_helper.datetime_attributes
|
18
21
|
|
19
22
|
-%>
|
20
|
-
describe "<%=
|
23
|
+
describe "<%= controller_directory %>/edit" do
|
21
24
|
|
22
|
-
|
23
|
-
<%-
|
24
|
-
|
25
|
+
<% parent_model_tables.each_with_index do |parent_model, index| -%>
|
26
|
+
<%- if index == 0 -%>
|
27
|
+
let(:<%= parent_model %>) { FactoryGirl.build_stubbed(:<%= parent_model %>) }
|
28
|
+
<%- else -%>
|
29
|
+
let(:<%= parent_model %>) { FactoryGirl.build_stubbed(:<%= parent_model %>, :<%= parent_model_tables[index - 1] %> => <%= parent_model_tables[index - 1] %>) }
|
30
|
+
<%- end -%>
|
25
31
|
<%- end -%>
|
26
|
-
|
32
|
+
let(:<%= var_name %>) do
|
33
|
+
FactoryGirl.build_stubbed(:<%= var_name %><%= output_attributes.empty? ? ')' : ',' %>
|
27
34
|
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
28
|
-
:<%= attribute.name %> =>
|
35
|
+
:<%= attribute.name %> => <% if attribute.type == :references && parent_model_tables.include?(attribute.name) %><%= attribute.name %><% else %><%= t_helper.factory_attribute_value attribute.type, value_for(attribute) %><% end %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
|
29
36
|
<% end -%>
|
30
|
-
<%= output_attributes.empty? ? "" : " )
|
37
|
+
<%= output_attributes.empty? ? "" : " )\n" -%>
|
31
38
|
end
|
32
39
|
|
33
|
-
context do # Within default nesting
|
40
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
34
41
|
before(:each) do
|
35
|
-
|
36
|
-
|
42
|
+
# Add Properties for view scope
|
43
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
44
|
+
assign(:<%= parent_model %>, @<%= parent_model %> = <%= parent_model %>)
|
37
45
|
<%- end -%>
|
46
|
+
assign(:<%= var_name %>, @<%= var_name %> = <%= var_name %>)
|
38
47
|
end
|
39
48
|
|
40
49
|
it "renders the edit <%= var_name %> form" do
|
data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/index_spec.rb
CHANGED
@@ -2,13 +2,16 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
<%-
|
4
4
|
|
5
|
-
t_helper = AuthorizedRailsScaffolds::
|
5
|
+
t_helper = AuthorizedRailsScaffolds::RSpecScaffoldGeneratorViewHelper.new(
|
6
6
|
:class_name => class_name,
|
7
7
|
:singular_table_name => singular_table_name,
|
8
8
|
:file_name => file_name,
|
9
9
|
:attributes => attributes
|
10
10
|
)
|
11
11
|
|
12
|
+
controller_directory = t_helper.controller_directory
|
13
|
+
parent_model_tables = t_helper.parent_model_tables
|
14
|
+
|
12
15
|
local_class_name = t_helper.local_class_name # Non-Namespaced class name
|
13
16
|
var_name = t_helper.var_name # Non-namespaced variable name
|
14
17
|
plural_var_name = t_helper.plural_var_name # Pluralized non-namespaced variable name
|
@@ -16,30 +19,40 @@ plural_var_name = t_helper.plural_var_name # Pluralized non-namespaced variable
|
|
16
19
|
output_attributes = t_helper.output_attributes
|
17
20
|
|
18
21
|
-%>
|
19
|
-
describe "<%=
|
22
|
+
describe "<%= controller_directory %>/index" do
|
20
23
|
|
21
|
-
|
22
|
-
<%-
|
23
|
-
|
24
|
+
<% parent_model_tables.each_with_index do |parent_model, index| -%>
|
25
|
+
<%- if index == 0 -%>
|
26
|
+
let(:<%= parent_model %>) { FactoryGirl.build_stubbed(:<%= parent_model %>) }
|
27
|
+
<%- else -%>
|
28
|
+
let(:<%= parent_model %>) { FactoryGirl.build_stubbed(:<%= parent_model %>, :<%= parent_model_tables[index - 1] %> => <%= parent_model_tables[index - 1] %>) }
|
29
|
+
<%- end -%>
|
24
30
|
<%- end -%>
|
25
31
|
<% [1,2].each_with_index do |id, model_index| -%>
|
26
|
-
|
32
|
+
let(:<%= var_name %>_<%= id %>) do
|
33
|
+
FactoryGirl.build_stubbed(:<%= var_name %><%= output_attributes.empty? ? ')' : ',' %>
|
27
34
|
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
28
|
-
:<%= attribute.name %> =>
|
35
|
+
:<%= attribute.name %> => <% if attribute.type == :references && parent_model_tables.include?(attribute.name) %><%= attribute.name %><% else %><%= t_helper.factory_attribute_value attribute.type, value_for(attribute) %><% end %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
|
29
36
|
<% end -%>
|
30
|
-
|
31
|
-
|
37
|
+
<%= output_attributes.empty? ? "" : " )\n" -%>
|
38
|
+
end
|
32
39
|
<% end -%>
|
40
|
+
|
41
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
42
|
+
before(:each) do
|
43
|
+
# Add Properties for view scope
|
44
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
45
|
+
assign(:<%= parent_model %>, @<%= parent_model %> = <%= parent_model %>)
|
46
|
+
<%- end -%>
|
47
|
+
<% [1,2].each_with_index do |id, model_index| -%>
|
48
|
+
@<%= var_name %>_<%= id %> = <%= var_name %>_<%= id %>
|
33
49
|
<% end -%>
|
34
|
-
|
50
|
+
assign(:<%= plural_var_name %>, [
|
35
51
|
<% [1,2].each_with_index do |id, model_index| -%>
|
36
|
-
|
52
|
+
@<%= var_name %>_<%= id %><%= model_index == 1 ? '' : ',' %>
|
37
53
|
<% end -%>
|
38
|
-
|
39
|
-
end
|
54
|
+
])
|
40
55
|
|
41
|
-
context do # Within default nesting
|
42
|
-
before(:each) do
|
43
56
|
@ability = Object.new
|
44
57
|
@ability.extend(CanCan::Ability)
|
45
58
|
controller.stub(:current_ability) { @ability }
|
@@ -84,6 +97,7 @@ describe "<%= ns_table_name %>/index" do
|
|
84
97
|
<%- end -%>
|
85
98
|
<% end -%>
|
86
99
|
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
100
|
+
<%- next if attribute.type == :references -%>
|
87
101
|
<%- if webrat? -%>
|
88
102
|
rendered.should have_selector("tr>td", :content => <%= factory_attribute_string attribute.type, value_for(attribute) %>.to_s, :count => 2)
|
89
103
|
<%- else -%>
|
@@ -91,6 +105,30 @@ describe "<%= ns_table_name %>/index" do
|
|
91
105
|
<%- end -%>
|
92
106
|
<% end -%>
|
93
107
|
end
|
108
|
+
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
109
|
+
<%- next unless attribute.type == :references && !parent_model_tables.include?(attribute.name.to_s) -%>
|
110
|
+
|
111
|
+
it "displays the <%= attribute.name %> belonging to <%= var_name %>" do
|
112
|
+
render
|
113
|
+
<%- if webrat? -%>
|
114
|
+
rendered.should have_selector("tr>td", :content => <%= attribute.name %>.to_s, :count => 2)
|
115
|
+
<%- else -%>
|
116
|
+
assert_select "tr>td", :text => <%= attribute.name %>.to_s, :count => 2
|
117
|
+
<%- end -%>
|
118
|
+
end
|
119
|
+
<% end -%>
|
120
|
+
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
121
|
+
<%- next unless attribute.type == :references && parent_model_tables.include?(attribute.name.to_s) -%>
|
122
|
+
|
123
|
+
it "does not display the <%= attribute.name %> belonging to <%= var_name %>" do
|
124
|
+
render
|
125
|
+
<%- if webrat? -%>
|
126
|
+
rendered.should have_selector("tr>td", :content => <%= attribute.name %>.to_s, :count => 0)
|
127
|
+
<%- else -%>
|
128
|
+
assert_select "tr>td", :text => <%= attribute.name %>.to_s, :count => 0
|
129
|
+
<%- end -%>
|
130
|
+
end
|
131
|
+
<% end -%>
|
94
132
|
|
95
133
|
describe 'show <%= var_name %> link' do
|
96
134
|
it "renders a link to <%= ns_file_name %>_path" do
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
<%-
|
4
4
|
|
5
|
-
t_helper = AuthorizedRailsScaffolds::
|
5
|
+
t_helper = AuthorizedRailsScaffolds::RSpecScaffoldGeneratorViewHelper.new(
|
6
6
|
:class_name => class_name,
|
7
7
|
:singular_table_name => singular_table_name,
|
8
8
|
:file_name => file_name,
|
@@ -12,27 +12,38 @@ t_helper = AuthorizedRailsScaffolds::ViewSpecHelper.new(
|
|
12
12
|
local_class_name = t_helper.local_class_name # Non-Namespaced class name
|
13
13
|
var_name = t_helper.var_name # Non-namespaced variable name
|
14
14
|
|
15
|
+
controller_directory = t_helper.controller_directory
|
16
|
+
parent_model_tables = t_helper.parent_model_tables
|
17
|
+
|
15
18
|
output_attributes = t_helper.output_attributes
|
16
19
|
standard_attributes = t_helper.standard_attributes
|
17
20
|
datetime_attributes = t_helper.datetime_attributes
|
18
21
|
|
19
22
|
-%>
|
20
|
-
describe "<%=
|
21
|
-
|
22
|
-
|
23
|
-
|
23
|
+
describe "<%= controller_directory %>/new" do
|
24
|
+
|
25
|
+
<% parent_model_tables.each_with_index do |parent_model, index| -%>
|
26
|
+
<%- if index == 0 -%>
|
27
|
+
let(:<%= parent_model %>) { FactoryGirl.build_stubbed(:<%= parent_model %>) }
|
28
|
+
<%- else -%>
|
29
|
+
let(:<%= parent_model %>) { FactoryGirl.build_stubbed(:<%= parent_model %>, :<%= parent_model_tables[index - 1] %> => <%= parent_model_tables[index - 1] %>) }
|
30
|
+
<%- end -%>
|
24
31
|
<%- end -%>
|
25
|
-
|
32
|
+
let(:<%= var_name %>) do
|
33
|
+
FactoryGirl.build(:<%= var_name %><%= output_attributes.empty? ? ')' : ',' %>
|
26
34
|
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
27
|
-
:<%= attribute.name %> =>
|
35
|
+
:<%= attribute.name %> => <% if attribute.type == :references && parent_model_tables.include?(attribute.name) %><%= attribute.name %><% else %><%= t_helper.factory_attribute_value attribute.type, value_for(attribute) %><% end %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
|
28
36
|
<% end -%>
|
29
|
-
<%=
|
37
|
+
<%= output_attributes.empty? ? "" : " )\n" -%>
|
38
|
+
end
|
30
39
|
|
31
|
-
context do # Within default nesting
|
40
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
32
41
|
before(:each) do
|
33
|
-
|
34
|
-
|
42
|
+
# Add Properties for view scope
|
43
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
44
|
+
assign(:<%= parent_model %>, @<%= parent_model %> = <%= parent_model %>)
|
35
45
|
<%- end -%>
|
46
|
+
assign(:<%= var_name %>, @<%= var_name %> = <%= var_name %>)
|
36
47
|
end
|
37
48
|
|
38
49
|
it "renders new <%= var_name %> form" do
|
@@ -61,31 +72,31 @@ describe "<%= ns_table_name %>/new" do
|
|
61
72
|
end
|
62
73
|
<% end -%>
|
63
74
|
end
|
64
|
-
|
65
75
|
<% if datetime_attributes.any? -%>
|
76
|
+
|
66
77
|
it "renders all date/time form elements" do
|
67
78
|
render
|
68
79
|
|
69
80
|
<% if webrat? -%>
|
70
81
|
rendered.should have_selector("form", :action => <%= t_helper.controller_index_path %>, :method => "post") do |form|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
<% end -%>
|
82
|
+
<%- for attribute in datetime_attributes -%>
|
83
|
+
<%- if [:date, :datetime].include? attribute.type -%>
|
84
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
85
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
86
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
87
|
+
<%- end -%>
|
88
|
+
<%- if [:time, :datetime].include? attribute.type -%>
|
89
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
90
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
91
|
+
<%- end -%>
|
92
|
+
<% end -%>
|
82
93
|
end
|
83
94
|
<% else -%>
|
84
95
|
# Run the generator again with the --webrat flag if you want to use webrat matchers
|
85
96
|
assert_select "form[action=?][method=?]", <%= t_helper.controller_index_path %>, "post" do
|
86
|
-
|
97
|
+
<%- for attribute in datetime_attributes -%>
|
87
98
|
# <%= attribute.name %> values
|
88
|
-
|
99
|
+
<%- if [:date, :datetime].include? attribute.type -%>
|
89
100
|
assert_select "select#<%= var_name %>_<%= attribute.name %>_1i[name=?]", "<%= var_name %>[<%= attribute.name %>(1i)]" do
|
90
101
|
assert_select "option[selected=selected]", :text => "<%= t_helper.date_select_year_value attribute.default %>", :count => 1
|
91
102
|
end
|
@@ -95,20 +106,19 @@ describe "<%= ns_table_name %>/new" do
|
|
95
106
|
assert_select "select#<%= var_name %>_<%= attribute.name %>_3i[name=?]", "<%= var_name %>[<%= attribute.name %>(3i)]" do
|
96
107
|
assert_select "option[selected=selected]", :text => "<%= t_helper.date_select_day_value attribute.default %>", :count => 1
|
97
108
|
end
|
98
|
-
|
99
|
-
|
109
|
+
<%- end -%>
|
110
|
+
<%- if [:time, :datetime].include? attribute.type -%>
|
100
111
|
assert_select "select#<%= var_name %>_<%= attribute.name %>_4i[name=?]", "<%= var_name %>[<%= attribute.name %>(4i)]" do
|
101
112
|
assert_select "option[selected=selected]", :text => "<%= t_helper.date_select_hour_value attribute.default %>", :count => 1
|
102
113
|
end
|
103
114
|
assert_select "select#<%= var_name %>_<%= attribute.name %>_5i[name=?]", "<%= var_name %>[<%= attribute.name %>(5i)]" do
|
104
115
|
assert_select "option[selected=selected]", :text => "<%= t_helper.date_select_minute_value attribute.default %>", :count => 1
|
105
116
|
end
|
117
|
+
<%- end -%>
|
106
118
|
<%- end -%>
|
107
|
-
<% end -%>
|
108
119
|
end
|
109
120
|
<% end -%>
|
110
121
|
end
|
111
|
-
end
|
112
|
-
|
113
122
|
<% end -%>
|
123
|
+
end
|
114
124
|
end
|
data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/routing_spec.rb
CHANGED
@@ -3,12 +3,17 @@ require "spec_helper"
|
|
3
3
|
<% module_namespacing do -%>
|
4
4
|
<%-
|
5
5
|
|
6
|
-
t_helper = AuthorizedRailsScaffolds::
|
7
|
-
|
6
|
+
t_helper = AuthorizedRailsScaffolds::RSpecScaffoldGeneratorHelper.new(
|
7
|
+
:class_name => class_name,
|
8
|
+
:singular_table_name => singular_table_name,
|
9
|
+
:file_name => file_name,
|
10
|
+
:attributes => attributes
|
8
11
|
)
|
9
12
|
|
10
|
-
request_path = t_helper.request_path
|
11
|
-
|
13
|
+
# request_path = t_helper.request_path
|
14
|
+
controller_directory = t_helper.controller_directory
|
15
|
+
example_controller_path = t_helper.example_controller_path
|
16
|
+
example_controller_path_extra_params = t_helper.example_controller_path_extra_params
|
12
17
|
|
13
18
|
-%>
|
14
19
|
describe <%= controller_class_name %>Controller do
|
@@ -16,32 +21,32 @@ describe <%= controller_class_name %>Controller do
|
|
16
21
|
|
17
22
|
<% unless options[:singleton] -%>
|
18
23
|
it "routes to #index" do
|
19
|
-
get("
|
24
|
+
get("<%= example_controller_path %>").should route_to("<%= controller_directory %>#index"<%= example_controller_path_extra_params %>)
|
20
25
|
end
|
21
26
|
|
22
27
|
<% end -%>
|
23
28
|
it "routes to #new" do
|
24
|
-
get("
|
29
|
+
get("<%= example_controller_path %>/new").should route_to("<%= controller_directory %>#new"<%= example_controller_path_extra_params %>)
|
25
30
|
end
|
26
31
|
|
27
32
|
it "routes to #show" do
|
28
|
-
get("
|
33
|
+
get("<%= example_controller_path %>/1").should route_to("<%= controller_directory %>#show"<%= example_controller_path_extra_params %>, :id => "1")
|
29
34
|
end
|
30
35
|
|
31
36
|
it "routes to #edit" do
|
32
|
-
get("
|
37
|
+
get("<%= example_controller_path %>/1/edit").should route_to("<%= controller_directory %>#edit"<%= example_controller_path_extra_params %>, :id => "1")
|
33
38
|
end
|
34
39
|
|
35
40
|
it "routes to #create" do
|
36
|
-
post("
|
41
|
+
post("<%= example_controller_path %>").should route_to("<%= controller_directory %>#create"<%= example_controller_path_extra_params %>)
|
37
42
|
end
|
38
43
|
|
39
44
|
it "routes to #update" do
|
40
|
-
put("
|
45
|
+
put("<%= example_controller_path %>/1").should route_to("<%= controller_directory %>#update"<%= example_controller_path_extra_params %>, :id => "1")
|
41
46
|
end
|
42
47
|
|
43
48
|
it "routes to #destroy" do
|
44
|
-
delete("
|
49
|
+
delete("<%= example_controller_path %>/1").should route_to("<%= controller_directory %>#destroy"<%= example_controller_path_extra_params %>, :id => "1")
|
45
50
|
end
|
46
51
|
|
47
52
|
end
|
data/lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/show_spec.rb
CHANGED
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
<%-
|
4
4
|
|
5
|
-
t_helper = AuthorizedRailsScaffolds::
|
5
|
+
t_helper = AuthorizedRailsScaffolds::RSpecScaffoldGeneratorViewHelper.new(
|
6
6
|
:class_name => class_name,
|
7
7
|
:singular_table_name => singular_table_name,
|
8
8
|
:file_name => file_name,
|
@@ -12,29 +12,38 @@ t_helper = AuthorizedRailsScaffolds::ViewSpecHelper.new(
|
|
12
12
|
local_class_name = t_helper.local_class_name # Non-Namespaced class name
|
13
13
|
var_name = t_helper.var_name # Non-namespaced variable name
|
14
14
|
|
15
|
+
controller_directory = t_helper.controller_directory
|
16
|
+
parent_model_tables = t_helper.parent_model_tables
|
17
|
+
|
15
18
|
output_attributes = t_helper.output_attributes
|
16
19
|
references_attributes = t_helper.references_attributes
|
17
20
|
|
18
21
|
-%>
|
19
|
-
describe "<%=
|
20
|
-
|
21
|
-
|
22
|
-
|
22
|
+
describe "<%= controller_directory %>/show" do
|
23
|
+
|
24
|
+
<% parent_model_tables.each_with_index do |parent_model, index| -%>
|
25
|
+
<%- if index == 0 -%>
|
26
|
+
let(:<%= parent_model %>) { FactoryGirl.build_stubbed(:<%= parent_model %>) }
|
27
|
+
<%- else -%>
|
28
|
+
let(:<%= parent_model %>) { FactoryGirl.build_stubbed(:<%= parent_model %>, :<%= parent_model_tables[index - 1] %> => <%= parent_model_tables[index - 1] %>) }
|
29
|
+
<%- end -%>
|
23
30
|
<%- end -%>
|
24
|
-
|
31
|
+
let(:<%= var_name %>) do
|
32
|
+
FactoryGirl.build_stubbed(:<%= var_name %><%= output_attributes.empty? ? ')' : ',' %>
|
25
33
|
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
26
|
-
:<%= attribute.name %> =>
|
27
|
-
<% end -%>
|
28
|
-
<% if !output_attributes.empty? -%>
|
29
|
-
)
|
34
|
+
:<%= attribute.name %> => <% if attribute.type == :references && parent_model_tables.include?(attribute.name) %><%= attribute.name %><% else %><%= t_helper.factory_attribute_value attribute.type, value_for(attribute) %><% end %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
|
30
35
|
<% end -%>
|
36
|
+
<%= output_attributes.empty? ? "" : " )\n" -%>
|
31
37
|
end
|
32
38
|
|
33
|
-
context do # Within default nesting
|
39
|
+
context <% if parent_model_tables.any? %>"within <%= parent_model_tables.join('/') %> nesting"<% end %> do<%- unless parent_model_tables.any? -%> # Within default nesting<% end %>
|
34
40
|
before(:each) do
|
35
|
-
|
36
|
-
|
41
|
+
# Add Properties for view scope
|
42
|
+
<%- parent_model_tables.each do |parent_model| -%>
|
43
|
+
assign(:<%= parent_model %>, @<%= parent_model %> = <%= parent_model %>)
|
37
44
|
<%- end -%>
|
45
|
+
assign(:<%= var_name %>, @<%= var_name %> = <%= var_name %>)
|
46
|
+
|
38
47
|
@ability = Object.new
|
39
48
|
@ability.extend(CanCan::Ability)
|
40
49
|
controller.stub(:current_ability) { @ability }
|
@@ -0,0 +1,147 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe AuthorizedRailsScaffolds::RSpecScaffoldGeneratorHelper do
|
4
|
+
|
5
|
+
describe '#controller_directory' do
|
6
|
+
it 'underscores the class_name value' do
|
7
|
+
subject = build_controller_spec_helper :class_name => 'FooBar'
|
8
|
+
subject.controller_directory.should eq('foo_bars')
|
9
|
+
end
|
10
|
+
it 'adds parent_models to the file path' do
|
11
|
+
subject = build_controller_spec_helper :class_name => 'Example::FooBar'
|
12
|
+
subject.controller_directory.should eq('example/foo_bars')
|
13
|
+
end
|
14
|
+
it 'adds multiple parent_models to the file path' do
|
15
|
+
subject = build_controller_spec_helper :class_name => 'Example::V1::FooBar'
|
16
|
+
subject.controller_directory.should eq('example/v1/foo_bars')
|
17
|
+
end
|
18
|
+
context 'with a parent model' do
|
19
|
+
before(:each) do
|
20
|
+
AuthorizedRailsScaffolds.configure do |config|
|
21
|
+
config.parent_models = ['Parent']
|
22
|
+
end
|
23
|
+
end
|
24
|
+
it 'ignores the parent_model value' do
|
25
|
+
subject = build_controller_spec_helper :class_name => 'FooBar'
|
26
|
+
subject.controller_directory.should eq('foo_bars')
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#example_controller_path' do
|
32
|
+
it 'underscores the class_name value' do
|
33
|
+
subject = build_controller_spec_helper :class_name => 'FooBar'
|
34
|
+
subject.example_controller_path.should eq('/foo_bars')
|
35
|
+
end
|
36
|
+
it 'adds parent_models to the file path' do
|
37
|
+
subject = build_controller_spec_helper :class_name => 'Example::FooBar'
|
38
|
+
subject.example_controller_path.should eq('/example/foo_bars')
|
39
|
+
end
|
40
|
+
it 'adds multiple parent_models to the file path' do
|
41
|
+
subject = build_controller_spec_helper :class_name => 'Example::V1::FooBar'
|
42
|
+
subject.example_controller_path.should eq('/example/v1/foo_bars')
|
43
|
+
end
|
44
|
+
context 'with a parent model' do
|
45
|
+
before(:each) do
|
46
|
+
AuthorizedRailsScaffolds.configure do |config|
|
47
|
+
config.parent_models = ['Parent']
|
48
|
+
end
|
49
|
+
end
|
50
|
+
it 'adds the parent model before the class name' do
|
51
|
+
subject = build_controller_spec_helper :class_name => 'FooBar'
|
52
|
+
subject.example_controller_path.should eq('/parents/2/foo_bars')
|
53
|
+
end
|
54
|
+
it 'adds the parent model after the parent module' do
|
55
|
+
subject = build_controller_spec_helper :class_name => 'Example::FooBar'
|
56
|
+
subject.example_controller_path.should eq('/example/parents/2/foo_bars')
|
57
|
+
end
|
58
|
+
it 'adds the parent model after multiple parent module' do
|
59
|
+
subject = build_controller_spec_helper :class_name => 'Example::V1::FooBar'
|
60
|
+
subject.example_controller_path.should eq('/example/v1/parents/2/foo_bars')
|
61
|
+
end
|
62
|
+
end
|
63
|
+
context 'with multiple parent models' do
|
64
|
+
before(:each) do
|
65
|
+
AuthorizedRailsScaffolds.configure do |config|
|
66
|
+
config.parent_models = ['Grandparent', 'Parent']
|
67
|
+
end
|
68
|
+
it 'adds the parent models before the class name' do
|
69
|
+
subject = build_controller_spec_helper :class_name => 'FooBar'
|
70
|
+
subject.example_controller_path.should eq('/grandparents/2/parents/3/foo_bars')
|
71
|
+
end
|
72
|
+
it 'adds the parent models after the parent module' do
|
73
|
+
subject = build_controller_spec_helper :class_name => 'Example::FooBar'
|
74
|
+
subject.example_controller_path.should eq('/example/grandparents/2/parents/3/foo_bars')
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '#example_controller_path_extra_params' do
|
81
|
+
context 'with no parent models' do
|
82
|
+
it 'returns an empty string with no parent module' do
|
83
|
+
subject = build_controller_spec_helper :class_name => 'FooBar'
|
84
|
+
subject.example_controller_path_extra_params.should eq('')
|
85
|
+
end
|
86
|
+
it 'returns an empty string with a parent module' do
|
87
|
+
subject = build_controller_spec_helper :class_name => 'Example::FooBar'
|
88
|
+
subject.example_controller_path_extra_params.should eq('')
|
89
|
+
end
|
90
|
+
end
|
91
|
+
context 'with a parent model' do
|
92
|
+
before(:each) do
|
93
|
+
AuthorizedRailsScaffolds.configure do |config|
|
94
|
+
config.parent_models = ['Parent']
|
95
|
+
end
|
96
|
+
end
|
97
|
+
it 'adds the parent model with a value assigned to it' do
|
98
|
+
subject = build_controller_spec_helper :class_name => 'FooBar'
|
99
|
+
subject.example_controller_path_extra_params.should eq(', :parent_id => 2')
|
100
|
+
end
|
101
|
+
end
|
102
|
+
context 'with multiple parent models' do
|
103
|
+
before(:each) do
|
104
|
+
AuthorizedRailsScaffolds.configure do |config|
|
105
|
+
config.parent_models = ['Grandparent', 'Parent']
|
106
|
+
end
|
107
|
+
end
|
108
|
+
it 'adds the parent models with their values' do
|
109
|
+
subject = build_controller_spec_helper :class_name => 'FooBar'
|
110
|
+
subject.example_controller_path_extra_params.should eq(', :grandparent_id => 2, :parent_id => 3')
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '#parent_model_tables' do
|
116
|
+
context 'with no parent_models' do
|
117
|
+
it 'returns an empty array' do
|
118
|
+
subject = build_controller_spec_helper
|
119
|
+
subject.parent_model_tables.should eq([])
|
120
|
+
end
|
121
|
+
end
|
122
|
+
context 'with a parent model' do
|
123
|
+
before(:each) do
|
124
|
+
AuthorizedRailsScaffolds.configure do |config|
|
125
|
+
config.parent_models = ['Parent']
|
126
|
+
end
|
127
|
+
end
|
128
|
+
it 'returns an array containing the models table name' do
|
129
|
+
subject = build_controller_spec_helper
|
130
|
+
subject.parent_model_tables.should eq(['parent'])
|
131
|
+
end
|
132
|
+
end
|
133
|
+
context 'with multiple parent models' do
|
134
|
+
before(:each) do
|
135
|
+
AuthorizedRailsScaffolds.configure do |config|
|
136
|
+
config.parent_models = ['Grandparent', 'Parent']
|
137
|
+
end
|
138
|
+
end
|
139
|
+
it 'returns an array containing all model table names' do
|
140
|
+
subject = build_controller_spec_helper
|
141
|
+
subject.parent_model_tables.should eq(['grandparent', 'parent'])
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
|
147
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require "bundler/setup"
|
2
|
+
Bundler.require
|
3
|
+
|
4
|
+
require 'rails'
|
5
|
+
|
6
|
+
require 'authorized_rails_scaffolds'
|
7
|
+
require 'support/rspec_scaffold_generator_helper_macros'
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.include RSpecScaffoldGeneratorHelperMacros
|
11
|
+
# some (optional) config here
|
12
|
+
|
13
|
+
config.after(:each) do
|
14
|
+
AuthorizedRailsScaffolds.configure do |config|
|
15
|
+
config.parent_models = []
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
module RSpecScaffoldGeneratorHelperMacros
|
3
|
+
|
4
|
+
def build_controller_spec_helper(args = {})
|
5
|
+
defaults = {
|
6
|
+
class_name: 'Scaffold::Example', # Model class name
|
7
|
+
singular_table_name: 'scaffold_example', # path and model name
|
8
|
+
file_name: 'example', # last part of singular_table_name
|
9
|
+
attributes: [],
|
10
|
+
}
|
11
|
+
defaults.merge! (args)
|
12
|
+
AuthorizedRailsScaffolds::RSpecScaffoldGeneratorHelper.new(defaults)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: authorized_rails_scaffolds
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
12
|
+
date: 2013-04-25 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: railties
|
16
|
-
requirement: &
|
16
|
+
requirement: &70301980494120 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,21 @@ dependencies:
|
|
21
21
|
version: '3.1'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70301980494120
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rails
|
27
|
+
requirement: &70301980493620 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.1'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70301980493620
|
25
36
|
- !ruby/object:Gem::Dependency
|
26
37
|
name: bundler
|
27
|
-
requirement: &
|
38
|
+
requirement: &70301980493160 !ruby/object:Gem::Requirement
|
28
39
|
none: false
|
29
40
|
requirements:
|
30
41
|
- - ~>
|
@@ -32,10 +43,21 @@ dependencies:
|
|
32
43
|
version: '1.3'
|
33
44
|
type: :development
|
34
45
|
prerelease: false
|
35
|
-
version_requirements: *
|
46
|
+
version_requirements: *70301980493160
|
36
47
|
- !ruby/object:Gem::Dependency
|
37
48
|
name: rake
|
38
|
-
requirement: &
|
49
|
+
requirement: &70301980492780 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70301980492780
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rspec
|
60
|
+
requirement: &70301980492320 !ruby/object:Gem::Requirement
|
39
61
|
none: false
|
40
62
|
requirements:
|
41
63
|
- - ! '>='
|
@@ -43,7 +65,7 @@ dependencies:
|
|
43
65
|
version: '0'
|
44
66
|
type: :development
|
45
67
|
prerelease: false
|
46
|
-
version_requirements: *
|
68
|
+
version_requirements: *70301980492320
|
47
69
|
description: Creates scaffolds for Twitter Bootstrap with generated RSpec coverage
|
48
70
|
email:
|
49
71
|
- bemo56@hotmail.com
|
@@ -58,11 +80,10 @@ files:
|
|
58
80
|
- Rakefile
|
59
81
|
- authorized_rails_scaffolds.gemspec
|
60
82
|
- lib/authorized_rails_scaffolds.rb
|
61
|
-
- lib/authorized_rails_scaffolds/controller_spec_helper.rb
|
62
83
|
- lib/authorized_rails_scaffolds/helper.rb
|
63
|
-
- lib/authorized_rails_scaffolds/
|
84
|
+
- lib/authorized_rails_scaffolds/rspec_scaffold_generator_helper.rb
|
85
|
+
- lib/authorized_rails_scaffolds/rspec_scaffold_generator_view_helper.rb
|
64
86
|
- lib/authorized_rails_scaffolds/version.rb
|
65
|
-
- lib/authorized_rails_scaffolds/view_spec_helper.rb
|
66
87
|
- lib/generators/authorized_rails_scaffolds/install_macros/USAGE
|
67
88
|
- lib/generators/authorized_rails_scaffolds/install_macros/install_macros_generator.rb
|
68
89
|
- lib/generators/authorized_rails_scaffolds/install_macros/templates/devise_can_can/USAGE
|
@@ -82,6 +103,9 @@ files:
|
|
82
103
|
- lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/new_spec.rb
|
83
104
|
- lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/routing_spec.rb
|
84
105
|
- lib/generators/authorized_rails_scaffolds/install_templates/templates/spec/show_spec.rb
|
106
|
+
- spec/lib/authorized_rails_scaffolds/rspec_scaffold_generator_helper_spec.rb
|
107
|
+
- spec/spec_helper.rb
|
108
|
+
- spec/support/rspec_scaffold_generator_helper_macros.rb
|
85
109
|
homepage: https://github.com/bmorrall/authorized_rails_scaffolds
|
86
110
|
licenses:
|
87
111
|
- MIT
|
@@ -108,4 +132,7 @@ signing_key:
|
|
108
132
|
specification_version: 3
|
109
133
|
summary: Replaces Rails and RSpec's default generators with templates taking full
|
110
134
|
advantage of Authentication (Devise), Authorization (CanCan) and Test Coverage (RSpec)
|
111
|
-
test_files:
|
135
|
+
test_files:
|
136
|
+
- spec/lib/authorized_rails_scaffolds/rspec_scaffold_generator_helper_spec.rb
|
137
|
+
- spec/spec_helper.rb
|
138
|
+
- spec/support/rspec_scaffold_generator_helper_macros.rb
|
@@ -1,31 +0,0 @@
|
|
1
|
-
class AuthorizedRailsScaffolds::ControllerSpecHelper < AuthorizedRailsScaffolds::Helper
|
2
|
-
|
3
|
-
def initialize(options = {})
|
4
|
-
super options
|
5
|
-
|
6
|
-
@attributes = options[:attributes]
|
7
|
-
end
|
8
|
-
|
9
|
-
def create_factory_model
|
10
|
-
extra_params = extra_model_params
|
11
|
-
"FactoryGirl.create(:#{var_name}#{extra_params})"
|
12
|
-
end
|
13
|
-
|
14
|
-
def create_parent_model(model_name)
|
15
|
-
extra_params = extra_model_params(model_name)
|
16
|
-
"FactoryGirl.create(:#{model_name}#{extra_params})"
|
17
|
-
end
|
18
|
-
|
19
|
-
protected
|
20
|
-
|
21
|
-
def extra_model_params(model_name = nil)
|
22
|
-
argument_params = []
|
23
|
-
AuthorizedRailsScaffolds.parent_models.each do |parent_model|
|
24
|
-
attribute = parent_model.underscore
|
25
|
-
break if model_name == attribute
|
26
|
-
argument_params << ", :#{attribute} => @#{attribute}"
|
27
|
-
end
|
28
|
-
argument_params.join('')
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
class AuthorizedRailsScaffolds::RoutingSpecHelper
|
2
|
-
|
3
|
-
def initialize(options = {})
|
4
|
-
@ns_table_name = options[:ns_table_name]
|
5
|
-
end
|
6
|
-
|
7
|
-
def extra_params
|
8
|
-
extra_params = ''
|
9
|
-
AuthorizedRailsScaffolds.parent_models.each_with_index do |model, model_index|
|
10
|
-
extra_params += ", :#{model.underscore}_id => \"#{model_index + 2}\""
|
11
|
-
end
|
12
|
-
extra_params
|
13
|
-
end
|
14
|
-
|
15
|
-
def request_path
|
16
|
-
# Remove last part of the path
|
17
|
-
parts = @ns_table_name.split('/')[0..-2] || []
|
18
|
-
|
19
|
-
AuthorizedRailsScaffolds.parent_models.each_with_index do |model, model_index|
|
20
|
-
parts << model.underscore.pluralize
|
21
|
-
parts << model_index + 2
|
22
|
-
end
|
23
|
-
|
24
|
-
# Add Final Part
|
25
|
-
parts << @ns_table_name.split('/')[-1]
|
26
|
-
parts.join('/')
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|