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.
Files changed (18) hide show
  1. data/README.md +2 -4
  2. data/lib/authorized_rails_scaffolds/version.rb +1 -1
  3. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/_form.html.erb +14 -5
  4. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/controller.rb +21 -16
  5. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/edit.html.erb +6 -1
  6. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/index.html.erb +23 -14
  7. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/new.html.erb +6 -1
  8. data/lib/generators/authorized_rails_scaffolds/install_scaffold/templates/show.html.erb +37 -12
  9. data/lib/generators/authorized_rails_scaffolds/install_spec/install_spec_generator.rb +28 -7
  10. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/controller_spec.rb +71 -65
  11. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/devise_can_can/USAGE +7 -0
  12. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/devise_can_can/controller_macros.rb +25 -0
  13. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/edit_spec.rb +57 -43
  14. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/index_spec.rb +81 -59
  15. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/model_spec.rb +28 -0
  16. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/new_spec.rb +53 -39
  17. data/lib/generators/authorized_rails_scaffolds/install_spec/templates/show_spec.rb +85 -37
  18. metadata +11 -8
@@ -1,28 +1,54 @@
1
1
  require 'spec_helper'
2
2
 
3
- <% output_attributes = attributes.reject{|attribute| [:timestamp].index(attribute.type) } -%>
4
- describe "<%= ns_table_name %>/show" do
5
- before(:each) do
6
- @<%= file_name %> = FactoryGirl.build_stubbed(:<%= file_name %><%= output_attributes.empty? ? ')' : ',' %>
7
- <% output_attributes.each_with_index do |attribute, attribute_index| -%>
8
3
  <%-
9
- attribute_prefix = ''
10
- attribute_suffix = ')'
11
- if attribute.type == :datetime
12
- attribute_value = value_for(attribute)
13
- attribute_prefix = 'DateTime.parse('
14
- elsif attribute.type == :time
15
- attribute_value = value_for(attribute).to_time.strftime('%T').dump
16
- attribute_prefix = 'Time.parse('
17
- elsif attribute.type == :date
18
- attribute_value = value_for(attribute)
19
- attribute_prefix = 'Date.parse('
20
- else
21
- attribute_value = value_for(attribute)
22
- attribute_suffix = ''
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, :references].include? attribute.type }
9
+ references_attributes = attributes.reject{|attribute| ![:references].include? attribute.type }
10
+
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
23
44
  end
45
+
24
46
  -%>
25
- :<%= attribute.name %> => <%= attribute_prefix %><%= attribute_value %><%= attribute_suffix %><%= attribute_index == output_attributes.length - 1 ? '' : ','%>
47
+ describe "<%= ns_table_name %>/show" do
48
+ before(:each) do
49
+ @<%= var_name %> = FactoryGirl.build_stubbed(:<%= var_name %><%= output_attributes.empty? ? ')' : ',' %>
50
+ <% 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 ? '' : ','%>
26
52
  <% end -%>
27
53
  <% if !output_attributes.empty? -%>
28
54
  )
@@ -37,28 +63,50 @@ end
37
63
  <% unless webrat? -%>
38
64
  # Run the generator again with the --webrat flag if you want to use webrat matchers
39
65
  <% end -%>
40
- <% for attribute in attributes -%>
41
- <%-
42
- if attribute.type == :datetime
43
- date_time_value = DateTime.parse(value_for(attribute))
44
- attribute_value = I18n.l(date_time_value, :format => :long).dump
45
- elsif attribute.type == :time
46
- time_value = Time.parse(value_for(attribute))
47
- attribute_value = I18n.l(time_value, :format => :short).dump
48
- elsif attribute.type == :date
49
- date_value = Date.parse(value_for(attribute))
50
- attribute_value = I18n.l(date_value).dump
51
- else
52
- attribute_value = value_for(attribute)
53
- end
54
- -%>
66
+ <% for attribute in output_attributes -%>
55
67
  <% if webrat? -%>
56
68
  rendered.should have_selector("dl>dt", :content => <%= "#{attribute.human_name}:".dump %>)
57
- rendered.should have_selector("dl>dd", :content => <%= attribute_value %>.to_s)
69
+ rendered.should have_selector("dl>dd", :content => <%= factory_attribute_string attribute.type, value_for(attribute) %>.to_s)
58
70
  <% else -%>
59
71
  assert_select "dl>dt", :text => <%= "#{attribute.human_name}:".dump %>
60
- assert_select "dl>dd", :text => <%= attribute_value %>.to_s
72
+ assert_select "dl>dd", :text => <%= factory_attribute_string attribute.type, value_for(attribute) %>.to_s
73
+ <% end -%>
74
+ <% end -%>
75
+ end
76
+
77
+ <% for attribute in references_attributes -%>
78
+ context "with a <%= attribute.name %> reference" do
79
+ before(:each) do
80
+ @<%= var_name %>.<%= attribute.name %> = FactoryGirl.build_stubbed(:<%= attribute.name %>)
81
+ end
82
+ context 'without read <%= attribute.name.classify %> permissions' do
83
+ it "should not a render link to <%= attribute.name %>" do
84
+ render
85
+ <% if webrat? -%>
86
+ 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)
88
+ <% else -%>
89
+ 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
61
91
  <% end -%>
92
+ end
93
+ end
94
+ context 'with read <%= attribute.name.classify %> permissions' do
95
+ before(:each) do
96
+ @ability.can :read, <%= attribute.name.classify %>
97
+ end
98
+ it "renders a namespaced link to <%= attribute.name %>" do
99
+ render
100
+ <% if webrat? -%>
101
+ 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)
103
+ <% else -%>
104
+ 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
62
106
  <% end -%>
107
+ end
108
+ end
63
109
  end
110
+
111
+ <% end -%>
64
112
  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
4
+ version: 0.0.5
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-03-20 00:00:00.000000000Z
12
+ date: 2013-03-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
16
- requirement: &70324219046420 !ruby/object:Gem::Requirement
16
+ requirement: &70329046438340 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70324219046420
24
+ version_requirements: *70329046438340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: bundler
27
- requirement: &70324219045920 !ruby/object:Gem::Requirement
27
+ requirement: &70329046437840 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.3'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70324219045920
35
+ version_requirements: *70329046437840
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &70324219045540 !ruby/object:Gem::Requirement
38
+ requirement: &70329046437460 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70324219045540
46
+ version_requirements: *70329046437460
47
47
  description: Creates scaffolds for Twitter Bootstrap with generated RSpec coverage
48
48
  email:
49
49
  - bemo56@hotmail.com
@@ -70,8 +70,11 @@ files:
70
70
  - lib/generators/authorized_rails_scaffolds/install_spec/USAGE
71
71
  - lib/generators/authorized_rails_scaffolds/install_spec/install_spec_generator.rb
72
72
  - lib/generators/authorized_rails_scaffolds/install_spec/templates/controller_spec.rb
73
+ - lib/generators/authorized_rails_scaffolds/install_spec/templates/devise_can_can/USAGE
74
+ - lib/generators/authorized_rails_scaffolds/install_spec/templates/devise_can_can/controller_macros.rb
73
75
  - lib/generators/authorized_rails_scaffolds/install_spec/templates/edit_spec.rb
74
76
  - lib/generators/authorized_rails_scaffolds/install_spec/templates/index_spec.rb
77
+ - lib/generators/authorized_rails_scaffolds/install_spec/templates/model_spec.rb
75
78
  - lib/generators/authorized_rails_scaffolds/install_spec/templates/new_spec.rb
76
79
  - lib/generators/authorized_rails_scaffolds/install_spec/templates/show_spec.rb
77
80
  homepage: https://github.com/bmorrall/authorized_rails_scaffolds