authorized_rails_scaffolds 0.0.4 → 0.0.5
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/README.md +2 -4
- data/lib/authorized_rails_scaffolds/version.rb +1 -1
- data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/_form.html.erb +14 -5
- data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/controller.rb +21 -16
- data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/edit.html.erb +6 -1
- data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/index.html.erb +23 -14
- data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/new.html.erb +6 -1
- data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/show.html.erb +37 -12
- data/lib/generators/authorized_rails_scaffolds/install_spec/install_spec_generator.rb +28 -7
- data/lib/generators/authorized_rails_scaffolds/install_spec/templates/controller_spec.rb +71 -65
- data/lib/generators/authorized_rails_scaffolds/install_spec/templates/devise_can_can/USAGE +7 -0
- data/lib/generators/authorized_rails_scaffolds/install_spec/templates/devise_can_can/controller_macros.rb +25 -0
- data/lib/generators/authorized_rails_scaffolds/install_spec/templates/edit_spec.rb +57 -43
- data/lib/generators/authorized_rails_scaffolds/install_spec/templates/index_spec.rb +81 -59
- data/lib/generators/authorized_rails_scaffolds/install_spec/templates/model_spec.rb +28 -0
- data/lib/generators/authorized_rails_scaffolds/install_spec/templates/new_spec.rb +53 -39
- data/lib/generators/authorized_rails_scaffolds/install_spec/templates/show_spec.rb +85 -37
- metadata +11 -8
@@ -0,0 +1,25 @@
|
|
1
|
+
module DeviceCanCanControllerMacros
|
2
|
+
def login_unauthorized_user
|
3
|
+
before(:each) do
|
4
|
+
@ability = Object.new
|
5
|
+
@ability.extend(CanCan::Ability)
|
6
|
+
@controller.stubs(:current_ability).returns(@ability)
|
7
|
+
|
8
|
+
@request.env["devise.mapping"] = Devise.mappings[:user]
|
9
|
+
@logged_in_user = FactoryGirl.create(:user)
|
10
|
+
sign_in @logged_in_user
|
11
|
+
end
|
12
|
+
end
|
13
|
+
def login_user_with_ability(action, subject)
|
14
|
+
before(:each) do
|
15
|
+
@ability = Object.new
|
16
|
+
@ability.extend(CanCan::Ability)
|
17
|
+
@ability.can action, subject
|
18
|
+
@controller.stubs(:current_ability).returns(@ability)
|
19
|
+
|
20
|
+
@request.env["devise.mapping"] = Devise.mappings[:user]
|
21
|
+
@logged_in_admin = FactoryGirl.create(:user)
|
22
|
+
sign_in @logged_in_admin
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,92 +1,106 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
<% local_class_name = class_name.split('::')[-1] -%>
|
4
|
-
<% output_attributes = attributes.reject{|attribute| [:timestamp].index(attribute.type) } -%>
|
5
|
-
<% standard_attributes = output_attributes.reject{|attribute| [:time, :date, :datetime].index(attribute.type) } -%>
|
6
|
-
<% date_attributes = output_attributes.reject{|attribute| ![:time, :date, :datetime].index(attribute.type) } -%>
|
7
|
-
describe "<%= ns_table_name %>/edit" do
|
8
|
-
before(:each) do
|
9
|
-
@<%= file_name %> = assign(:<%= file_name %>, FactoryGirl.build_stubbed(:<%= file_name %><%= output_attributes.empty? ? '))' : ',' %>
|
10
|
-
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
11
3
|
<%-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
4
|
+
|
5
|
+
local_class_name = class_name.split('::')[-1] # Non-Namespaced class name
|
6
|
+
var_name = file_name # Non-namespaced variable name
|
7
|
+
|
8
|
+
output_attributes = attributes.reject{|attribute| [:timestamp].include? attribute.type }
|
9
|
+
standard_attributes = attributes.reject{|attribute| [:time, :date, :datetime].include? attribute.type }
|
10
|
+
datetime_attributes = attributes.reject{|attribute| ![:time, :date, :datetime].include? attribute.type }
|
11
|
+
|
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
26
|
end
|
27
|
+
|
27
28
|
-%>
|
28
|
-
|
29
|
+
describe "<%= ns_table_name %>/edit" do
|
30
|
+
before(:each) do
|
31
|
+
@<%= var_name %> = assign(:<%= var_name %>, FactoryGirl.build_stubbed(:<%= var_name %><%= output_attributes.empty? ? '))' : ',' %>
|
32
|
+
<% 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 ? '' : ','%>
|
29
34
|
<% end -%>
|
30
35
|
<%= output_attributes.empty? ? "" : " ))\n" -%>
|
31
36
|
end
|
32
37
|
|
33
|
-
it "renders the edit <%=
|
38
|
+
it "renders the edit <%= var_name %> form" do
|
34
39
|
render
|
35
40
|
|
36
41
|
<% if webrat? -%>
|
37
|
-
rendered.should have_selector("form", :action => <%= ns_file_name %>_path(@<%=
|
42
|
+
rendered.should have_selector("form", :action => <%= ns_file_name %>_path(@<%= var_name %>), :method => "post") do |form|
|
38
43
|
<% for attribute in standard_attributes -%>
|
39
|
-
|
44
|
+
<%- if attribute.type == :references -%>
|
45
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>_id", :name => "<%= var_name %>[<%= attribute.name %>_id]")
|
46
|
+
<%- else -%>
|
47
|
+
form.should have_selector("<%= attribute.input_type -%>#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
48
|
+
<%- end -%>
|
40
49
|
<% end -%>
|
41
50
|
end
|
42
51
|
<% else -%>
|
43
52
|
# Run the generator again with the --webrat flag if you want to use webrat matchers
|
44
|
-
assert_select "form[action=?][method=?]", <%= ns_file_name %>_path(@<%=
|
53
|
+
assert_select "form[action=?][method=?]", <%= ns_file_name %>_path(@<%= var_name %>), "post" do
|
45
54
|
<% for attribute in standard_attributes -%>
|
46
|
-
|
55
|
+
<%- if attribute.type == :references -%>
|
56
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_id[name=?]", "<%= var_name %>[<%= attribute.name %>_id]"
|
57
|
+
<%- else -%>
|
58
|
+
assert_select "<%= attribute.input_type -%>#<%= var_name %>_<%= attribute.name %>[name=?]", "<%= var_name %>[<%= attribute.name %>]"
|
59
|
+
<%- end -%>
|
47
60
|
<% end -%>
|
48
61
|
end
|
49
62
|
<% end -%>
|
50
63
|
end
|
51
64
|
|
52
|
-
<% if
|
65
|
+
<% if datetime_attributes.any? -%>
|
53
66
|
it "renders all date/time form elements" do
|
54
67
|
render
|
55
68
|
|
56
69
|
<% if webrat? -%>
|
57
|
-
rendered.should have_selector("form", :action => <%= ns_file_name %>_path(@<%=
|
58
|
-
<% for attribute in
|
70
|
+
rendered.should have_selector("form", :action => <%= ns_file_name %>_path(@<%= var_name %>), :method => "post") do |form|
|
71
|
+
<% for attribute in datetime_attributes -%>
|
59
72
|
<%- if [:date, :datetime].include? attribute.type -%>
|
60
|
-
form.should have_selector("select#<%=
|
61
|
-
form.should have_selector("select#<%=
|
62
|
-
form.should have_selector("select#<%=
|
73
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
74
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
75
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
63
76
|
<%- end -%>
|
64
77
|
<%- if [:time, :datetime].include? attribute.type -%>
|
65
|
-
form.should have_selector("select#<%=
|
66
|
-
form.should have_selector("select#<%=
|
78
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
79
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
67
80
|
<%- end -%>
|
68
81
|
<% end -%>
|
69
82
|
end
|
70
83
|
<% else -%>
|
71
84
|
# Run the generator again with the --webrat flag if you want to use webrat matchers
|
72
|
-
assert_select "form[action=?][method=?]", <%= ns_file_name %>_path(@<%=
|
73
|
-
<% for attribute in
|
85
|
+
assert_select "form[action=?][method=?]", <%= ns_file_name %>_path(@<%= var_name %>), "post" do
|
86
|
+
<% for attribute in datetime_attributes -%>
|
87
|
+
# <%= attribute.name %> values
|
74
88
|
<%- if [:date, :datetime].include? attribute.type -%>
|
75
|
-
assert_select "select#<%=
|
89
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_1i[name=?]", "<%= var_name %>[<%= attribute.name %>(1i)]" do
|
76
90
|
assert_select "option[selected=selected]", :text => <%= DateTime.parse(attribute.default).strftime('%Y').dump %>, :count => 1
|
77
91
|
end
|
78
|
-
assert_select "select#<%=
|
92
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_2i[name=?]", "<%= var_name %>[<%= attribute.name %>(2i)]" do
|
79
93
|
assert_select "option[selected=selected][value=?]", <%= DateTime.parse(attribute.default).strftime('%-m').dump %>, :text => <%= DateTime.parse(attribute.default).strftime('%B').dump %>, :count => 1
|
80
94
|
end
|
81
|
-
assert_select "select#<%=
|
95
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_3i[name=?]", "<%= var_name %>[<%= attribute.name %>(3i)]" do
|
82
96
|
assert_select "option[selected=selected]", :text => <%= DateTime.parse(attribute.default).strftime('%d').dump %>, :count => 1
|
83
97
|
end
|
84
98
|
<%- end -%>
|
85
99
|
<%- if [:time, :datetime].include? attribute.type -%>
|
86
|
-
assert_select "select#<%=
|
100
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_4i[name=?]", "<%= var_name %>[<%= attribute.name %>(4i)]" do
|
87
101
|
assert_select "option[selected=selected]", :text => <%= DateTime.parse(attribute.default).strftime('%H').dump %>, :count => 1
|
88
102
|
end
|
89
|
-
assert_select "select#<%=
|
103
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_5i[name=?]", "<%= var_name %>[<%= attribute.name %>(5i)]" do
|
90
104
|
assert_select "option[selected=selected]", :text => <%= DateTime.parse(attribute.default).strftime('%M').dump %>, :count => 1
|
91
105
|
end
|
92
106
|
<%- end -%>
|
@@ -1,38 +1,61 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
<%-
|
4
|
-
|
3
|
+
<%-
|
4
|
+
|
5
|
+
local_class_name = class_name.split('::')[-1] # Non-Namespaced class name
|
6
|
+
var_name = file_name # Non-namespaced variable name
|
7
|
+
plural_var_name = var_name.pluralize # Pluralized non-namespaced variable name
|
8
|
+
|
9
|
+
output_attributes = attributes.reject{|attribute| [:timestamp].include? attribute.type }
|
10
|
+
|
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
|
+
-%>
|
5
45
|
describe "<%= ns_table_name %>/index" do
|
6
46
|
before(:each) do
|
7
47
|
<% [1,2].each_with_index do |id, model_index| -%>
|
8
|
-
@<%=
|
48
|
+
@<%= var_name %>_<%= model_index + 1 %> = FactoryGirl.build_stubbed(:<%= var_name %><%= output_attributes.empty? ? ')' : ',' %>
|
9
49
|
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
10
|
-
|
11
|
-
attribute_prefix = ''
|
12
|
-
attribute_suffix = ')'
|
13
|
-
if attribute.type == :datetime
|
14
|
-
attribute_value = value_for(attribute)
|
15
|
-
attribute_prefix = 'DateTime.parse('
|
16
|
-
elsif attribute.type == :time
|
17
|
-
attribute_value = value_for(attribute).to_time.strftime('%T').dump
|
18
|
-
attribute_prefix = 'Time.parse('
|
19
|
-
elsif attribute.type == :date
|
20
|
-
attribute_value = value_for(attribute)
|
21
|
-
attribute_prefix = 'Date.parse('
|
22
|
-
else
|
23
|
-
attribute_value = value_for(attribute)
|
24
|
-
attribute_suffix = ''
|
25
|
-
end
|
26
|
-
-%>
|
27
|
-
:<%= attribute.name %> => <%= attribute_prefix %><%= attribute_value %><%= attribute_suffix %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
|
50
|
+
:<%= attribute.name %> => <%= factory_attribute_value attribute.type, value_for(attribute) %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
|
28
51
|
<% end -%>
|
29
52
|
<% if !output_attributes.empty? -%>
|
30
53
|
)
|
31
54
|
<% end -%>
|
32
55
|
<% end -%>
|
33
|
-
assign(:<%=
|
56
|
+
assign(:<%= plural_var_name %>, [
|
34
57
|
<% [1,2].each_with_index do |id, model_index| -%>
|
35
|
-
@<%=
|
58
|
+
@<%= var_name %>_<%= id %><%= model_index == 1 ? '' : ',' %>
|
36
59
|
<% end -%>
|
37
60
|
])
|
38
61
|
@ability = Object.new
|
@@ -44,72 +67,71 @@ end
|
|
44
67
|
it 'includes a h1 title' do
|
45
68
|
render
|
46
69
|
<% if webrat? -%>
|
47
|
-
rendered.should have_selector(".page-header>h1", :content => <%=
|
70
|
+
rendered.should have_selector(".page-header>h1", :content => <%= var_name.humanize.pluralize.dump %>, :count => 1)
|
48
71
|
<% else -%>
|
49
|
-
assert_select ".page-header>h1", :text => <%=
|
72
|
+
assert_select ".page-header>h1", :text => <%= var_name.humanize.pluralize.dump %>, :count => 1
|
50
73
|
<% end -%>
|
51
74
|
end
|
52
75
|
end
|
53
76
|
|
54
|
-
describe "<%=
|
55
|
-
it 'includes a row for each <%=
|
77
|
+
describe "<%= plural_var_name %> table" do
|
78
|
+
it 'includes a row for each <%= var_name %>' do
|
56
79
|
render
|
57
80
|
<% unless webrat? -%>
|
58
81
|
# Run the generator again with the --webrat flag if you want to use webrat matchers
|
59
82
|
<% end -%>
|
60
83
|
<% [1,2].each do |model_index| -%>
|
61
84
|
<% if webrat? -%>
|
62
|
-
rendered.should have_selector("table>tbody>tr.<%=
|
85
|
+
rendered.should have_selector("table>tbody>tr.<%= var_name %>_#{@<%= var_name %>_<%= model_index %>.id}", :count => 1)
|
63
86
|
<% else -%>
|
64
|
-
assert_select "table>tbody>tr.<%=
|
87
|
+
assert_select "table>tbody>tr.<%= var_name %>_#{@<%= var_name %>_<%= model_index %>.id}", :count => 1
|
65
88
|
<% end -%>
|
66
89
|
<% end -%>
|
67
90
|
end
|
68
91
|
|
69
|
-
it "contains a list of <%=
|
92
|
+
it "contains a list of <%= plural_var_name %>" do
|
70
93
|
render
|
71
94
|
<% unless webrat? -%>
|
72
95
|
# Run the generator again with the --webrat flag if you want to use webrat matchers
|
73
96
|
<% end -%>
|
74
97
|
<% [1,2].each do |model_index| -%>
|
75
98
|
<% if webrat? -%>
|
76
|
-
rendered.should have_selector("tr>td.id-column", :content => @<%=
|
99
|
+
rendered.should have_selector("tr>td.id-column", :content => @<%= var_name %>_<%= model_index %>.id.to_s, :count => 1)
|
77
100
|
<% else -%>
|
78
|
-
assert_select "tr>td.id-column", :text => @<%=
|
101
|
+
assert_select "tr>td.id-column", :text => @<%= var_name %>_<%= model_index %>.id.to_s, :count => 1
|
79
102
|
<% end -%>
|
80
103
|
<% end -%>
|
81
104
|
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
82
|
-
<%-
|
83
|
-
if attribute.type == :datetime
|
84
|
-
date_time_value = DateTime.parse(value_for(attribute))
|
85
|
-
attribute_value = I18n.l(date_time_value, :format => :long).dump
|
86
|
-
elsif attribute.type == :time
|
87
|
-
time_value = Time.parse(value_for(attribute))
|
88
|
-
attribute_value = I18n.l(time_value, :format => :short).dump
|
89
|
-
elsif attribute.type == :date
|
90
|
-
date_value = Date.parse(value_for(attribute))
|
91
|
-
attribute_value = I18n.l(date_value).dump
|
92
|
-
else
|
93
|
-
attribute_value = value_for(attribute)
|
94
|
-
end
|
95
|
-
-%>
|
96
105
|
<% if webrat? -%>
|
97
|
-
rendered.should have_selector("tr>td
|
106
|
+
rendered.should have_selector("tr>td", :content => <%= factory_attribute_string attribute.type, value_for(attribute) %>.to_s, :count => 2)
|
98
107
|
<% else -%>
|
99
|
-
assert_select "tr>td
|
108
|
+
assert_select "tr>td", :text => <%= factory_attribute_string attribute.type, value_for(attribute) %>.to_s, :count => 2
|
100
109
|
<% end -%>
|
101
110
|
<% end -%>
|
102
111
|
end
|
103
112
|
|
104
|
-
describe '
|
113
|
+
describe 'show <%= var_name %> link' do
|
114
|
+
it "renders a link to <%= ns_file_name %>_path" do
|
115
|
+
render
|
116
|
+
<% [1,2].each do |model_index| -%>
|
117
|
+
<% if webrat? -%>
|
118
|
+
rendered.should have_selector("td>a[href]:not([data-method])", :href => <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1)
|
119
|
+
<% else -%>
|
120
|
+
assert_select "td>a[href=?]:not([data-method])", <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1
|
121
|
+
<% end -%>
|
122
|
+
<% end -%>
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe 'edit <%= var_name %> link' do
|
105
127
|
context 'without update permissions' do
|
106
128
|
it "renders a disabled link to edit_<%= ns_file_name %>_path" do
|
107
129
|
render
|
108
130
|
<% [1,2].each do |model_index| -%>
|
109
131
|
<% if webrat? -%>
|
110
|
-
rendered.should_not have_selector("td>a[href][disabled=disabled]", :href => edit_<%= ns_file_name %>_path(@<%=
|
132
|
+
rendered.should_not have_selector("td>a[href][disabled=disabled]", :href => edit_<%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1)
|
111
133
|
<% else -%>
|
112
|
-
assert_select "td>a[href=?][disabled=disabled]", edit_<%= ns_file_name %>_path(@<%=
|
134
|
+
assert_select "td>a[href=?][disabled=disabled]", edit_<%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1
|
113
135
|
<% end -%>
|
114
136
|
<% end -%>
|
115
137
|
end
|
@@ -120,24 +142,24 @@ end
|
|
120
142
|
render
|
121
143
|
<% [1,2].each do |model_index| -%>
|
122
144
|
<% if webrat? -%>
|
123
|
-
rendered.should have_selector("td>a[href]:not([disabled])", :href => edit_<%= ns_file_name %>_path(@<%=
|
145
|
+
rendered.should have_selector("td>a[href]:not([disabled])", :href => edit_<%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1)
|
124
146
|
<% else -%>
|
125
|
-
assert_select "td>a[href=?]:not([disabled])", edit_<%= ns_file_name %>_path(@<%=
|
147
|
+
assert_select "td>a[href=?]:not([disabled])", edit_<%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1
|
126
148
|
<% end -%>
|
127
149
|
<% end -%>
|
128
150
|
end
|
129
151
|
end
|
130
152
|
end
|
131
153
|
|
132
|
-
describe 'destroy <%=
|
154
|
+
describe 'destroy <%= var_name %> link' do
|
133
155
|
context 'without destroy permissions' do
|
134
156
|
it "renders a disabled link to <%= ns_file_name %>_path" do
|
135
157
|
render
|
136
158
|
<% [1,2].each do |model_index| -%>
|
137
159
|
<% if webrat? -%>
|
138
|
-
rendered.should_not have_selector("td>a[href][data-method=delete][disabled=disabled]", :href => <%= ns_file_name %>_path(@<%=
|
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)
|
139
161
|
<% else -%>
|
140
|
-
assert_select "td>a[href=?][data-method=delete][disabled=disabled]", <%= ns_file_name %>_path(@<%=
|
162
|
+
assert_select "td>a[href=?][data-method=delete][disabled=disabled]", <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1
|
141
163
|
<% end -%>
|
142
164
|
<% end -%>
|
143
165
|
end
|
@@ -148,9 +170,9 @@ end
|
|
148
170
|
render
|
149
171
|
<% [1,2].each do |model_index| -%>
|
150
172
|
<% if webrat? -%>
|
151
|
-
rendered.should have_selector("td>a[href][data-method=delete]:not([disabled])", :href => <%= ns_file_name %>_path(@<%=
|
173
|
+
rendered.should have_selector("td>a[href][data-method=delete]:not([disabled])", :href => <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1)
|
152
174
|
<% else -%>
|
153
|
-
assert_select "td>a[href=?][data-method=delete]:not([disabled])", <%= ns_file_name %>_path(@<%=
|
175
|
+
assert_select "td>a[href=?][data-method=delete]:not([disabled])", <%= ns_file_name %>_path(@<%= var_name %>_<%= model_index %>), :count => 1
|
154
176
|
<% end -%>
|
155
177
|
<% end -%>
|
156
178
|
end
|
@@ -158,7 +180,7 @@ end
|
|
158
180
|
end
|
159
181
|
end
|
160
182
|
|
161
|
-
describe 'new <%=
|
183
|
+
describe 'new <%= var_name %> link' do
|
162
184
|
context 'without create permissions' do
|
163
185
|
it "does not render a link to new_<%= ns_file_name %>_path" do
|
164
186
|
render
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
<% module_namespacing do -%>
|
4
|
+
describe <%= class_name %> do
|
5
|
+
<%- attributes.each do |attribute| -%>
|
6
|
+
<%- unless attribute.type == :references -%>
|
7
|
+
it { should allow_mass_assignment_of(:<%= attribute.name %>)}
|
8
|
+
<%- end -%>
|
9
|
+
<%- end -%>
|
10
|
+
<%- attributes.each_with_index do |attribute, attribute_index| -%>
|
11
|
+
|
12
|
+
# <%= attribute.name %>:<%= attribute.type %>
|
13
|
+
<%- if attribute_index == 0 -%>
|
14
|
+
it { should validate_presence_of(:<%= attributes[0].name %>) }
|
15
|
+
<%- end -%>
|
16
|
+
<%- if attribute.type == :references -%>
|
17
|
+
it { should belong_to(:<%= attribute.name %>) }
|
18
|
+
<%- elsif attribute.type == :boolean -%>
|
19
|
+
it { should allow_value(true).for(:<%= attribute.name %>) }
|
20
|
+
it { should allow_value(false).for(:<%= attribute.name %>) }
|
21
|
+
<%- elsif [:double, :decimal].include? attribute.type -%>
|
22
|
+
it { should validate_numericality_of(:<%= attribute.name %>) }
|
23
|
+
<%- elsif attribute.type == :integer -%>
|
24
|
+
it { should validate_numericality_of(:<%= attribute.name %>).only_integer }
|
25
|
+
<%- end -%>
|
26
|
+
<%- end -%>
|
27
|
+
end
|
28
|
+
<% end -%>
|
@@ -1,91 +1,105 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
<% local_class_name = class_name.split('::')[-1] -%>
|
4
|
-
<% output_attributes = attributes.reject{|attribute| [:timestamp].index(attribute.type) } -%>
|
5
|
-
<% standard_attributes = output_attributes.reject{|attribute| [:time, :date, :datetime].index(attribute.type) } -%>
|
6
|
-
<% date_attributes = output_attributes.reject{|attribute| ![:time, :date, :datetime].index(attribute.type) } -%>
|
7
|
-
describe "<%= ns_table_name %>/new" do
|
8
|
-
before(:each) do
|
9
|
-
assign(:<%= file_name %>, FactoryGirl.build(:<%= file_name %><%= output_attributes.empty? ? '))' : ',' %>
|
10
|
-
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
11
3
|
<%-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
4
|
+
|
5
|
+
local_class_name = class_name.split('::')[-1] # Non-Namespaced class name
|
6
|
+
var_name = file_name # Non-namespaced variable name
|
7
|
+
|
8
|
+
output_attributes = attributes.reject{|attribute| [:timestamp].include? attribute.type }
|
9
|
+
standard_attributes = attributes.reject{|attribute| [:time, :date, :datetime].include? attribute.type }
|
10
|
+
datetime_attributes = attributes.reject{|attribute| ![:time, :date, :datetime].include? attribute.type }
|
11
|
+
|
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
26
|
end
|
27
|
+
|
27
28
|
-%>
|
28
|
-
|
29
|
+
describe "<%= ns_table_name %>/new" do
|
30
|
+
before(:each) do
|
31
|
+
assign(:<%= var_name %>, FactoryGirl.build(:<%= var_name %><%= output_attributes.empty? ? '))' : ',' %>
|
32
|
+
<% 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 ? '' : ','%>
|
29
34
|
<% end -%>
|
30
35
|
<%= !output_attributes.empty? ? " ))\n end" : " end" %>
|
31
36
|
|
32
|
-
it "renders new <%=
|
37
|
+
it "renders new <%= var_name %> form" do
|
33
38
|
render
|
34
39
|
|
35
40
|
<% if webrat? -%>
|
36
41
|
rendered.should have_selector("form", :action => <%= table_name %>_path, :method => "post") do |form|
|
37
42
|
<% for attribute in standard_attributes -%>
|
38
|
-
|
43
|
+
<%- if attribute.type == :references -%>
|
44
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>_id", :name => "<%= var_name %>[<%= attribute.name %>_id]")
|
45
|
+
<%- else -%>
|
46
|
+
form.should have_selector("<%= attribute.input_type -%>#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
47
|
+
<%- end -%>
|
39
48
|
<% end -%>
|
40
49
|
end
|
41
50
|
<% else -%>
|
42
51
|
# Run the generator again with the --webrat flag if you want to use webrat matchers
|
43
52
|
assert_select "form[action=?][method=?]", <%= index_helper %>_path, "post" do
|
44
53
|
<% for attribute in standard_attributes -%>
|
45
|
-
|
54
|
+
<%- if attribute.type == :references -%>
|
55
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_id[name=?]", "<%= var_name %>[<%= attribute.name %>_id]"
|
56
|
+
<%- else -%>
|
57
|
+
assert_select "<%= attribute.input_type -%>#<%= var_name %>_<%= attribute.name %>[name=?]", "<%= var_name %>[<%= attribute.name %>]"
|
58
|
+
<%- end -%>
|
46
59
|
<% end -%>
|
47
60
|
end
|
48
61
|
<% end -%>
|
49
62
|
end
|
50
63
|
|
51
|
-
<% if
|
64
|
+
<% if datetime_attributes.any? -%>
|
52
65
|
it "renders all date/time form elements" do
|
53
66
|
render
|
54
67
|
|
55
68
|
<% if webrat? -%>
|
56
69
|
rendered.should have_selector("form", :action => <%= table_name %>_path, :method => "post") do |form|
|
57
|
-
<% for attribute in
|
70
|
+
<% for attribute in datetime_attributes -%>
|
58
71
|
<%- if [:date, :datetime].include? attribute.type -%>
|
59
|
-
form.should have_selector("select#<%=
|
60
|
-
form.should have_selector("select#<%=
|
61
|
-
form.should have_selector("select#<%=
|
72
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
73
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
74
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
62
75
|
<%- end -%>
|
63
76
|
<%- if [:time, :datetime].include? attribute.type -%>
|
64
|
-
form.should have_selector("select#<%=
|
65
|
-
form.should have_selector("select#<%=
|
77
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
78
|
+
form.should have_selector("select#<%= var_name %>_<%= attribute.name %>", :name => "<%= var_name %>[<%= attribute.name %>]")
|
66
79
|
<%- end -%>
|
67
80
|
<% end -%>
|
68
81
|
end
|
69
82
|
<% else -%>
|
70
83
|
# Run the generator again with the --webrat flag if you want to use webrat matchers
|
71
84
|
assert_select "form[action=?][method=?]", <%= table_name %>_path, "post" do
|
72
|
-
<% for attribute in
|
85
|
+
<% for attribute in datetime_attributes -%>
|
86
|
+
# <%= attribute.name %> values
|
73
87
|
<%- if [:date, :datetime].include? attribute.type -%>
|
74
|
-
assert_select "select#<%=
|
88
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_1i[name=?]", "<%= var_name %>[<%= attribute.name %>(1i)]" do
|
75
89
|
assert_select "option[selected=selected]", :text => <%= DateTime.parse(attribute.default).strftime('%Y').dump %>, :count => 1
|
76
90
|
end
|
77
|
-
assert_select "select#<%=
|
91
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_2i[name=?]", "<%= var_name %>[<%= attribute.name %>(2i)]" do
|
78
92
|
assert_select "option[selected=selected][value=?]", <%= DateTime.parse(attribute.default).strftime('%-m').dump %>, :text => <%= DateTime.parse(attribute.default).strftime('%B').dump %>, :count => 1
|
79
93
|
end
|
80
|
-
assert_select "select#<%=
|
94
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_3i[name=?]", "<%= var_name %>[<%= attribute.name %>(3i)]" do
|
81
95
|
assert_select "option[selected=selected]", :text => <%= DateTime.parse(attribute.default).strftime('%d').dump %>, :count => 1
|
82
96
|
end
|
83
97
|
<%- end -%>
|
84
98
|
<%- if [:time, :datetime].include? attribute.type -%>
|
85
|
-
assert_select "select#<%=
|
99
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_4i[name=?]", "<%= var_name %>[<%= attribute.name %>(4i)]" do
|
86
100
|
assert_select "option[selected=selected]", :text => <%= DateTime.parse(attribute.default).strftime('%H').dump %>, :count => 1
|
87
101
|
end
|
88
|
-
assert_select "select#<%=
|
102
|
+
assert_select "select#<%= var_name %>_<%= attribute.name %>_5i[name=?]", "<%= var_name %>[<%= attribute.name %>(5i)]" do
|
89
103
|
assert_select "option[selected=selected]", :text => <%= DateTime.parse(attribute.default).strftime('%M').dump %>, :count => 1
|
90
104
|
end
|
91
105
|
<%- end -%>
|