leonardo 1.9.0.beta1 → 1.9.0.beta2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,7 +1,12 @@
1
+ 1.9.0.beta2 (December 12th, 2011) Marco Mastrodonato
2
+ * Specs updated
3
+ * Little improvements
4
+
1
5
  1.9.0.beta1 (November 30th, 2011) Marco Mastrodonato
2
6
  * Lists: Added multiple selection to combine with massive operation
3
7
  * Lists: Added copy operation to create new items from existing. It works for multiple rows as well.
4
8
  * Data forms: fields moved into new partial to share with multiple operation
9
+ * Little improvements
5
10
 
6
11
  TODO:
7
12
  * Model: Create name attribute for every one that does not have
@@ -3,13 +3,13 @@
3
3
  <%%= f.label :<%= attribute.name %>, t('attributes.<%= singular_table_name %>.<%= attribute.name %>') %><br />
4
4
  <%- case attribute.type
5
5
  when :references, :belongs_to -%>
6
- <%% if @<%= singular_table_name %>.new_record? -%>
6
+ <%% if <%= singular_table_name %>.new_record? -%>
7
7
  <%%= f.collection_select :<%= attribute.name %>_id, <%= attribute.name.classify %>.all, :id, :name, :prompt => true if can?(:manage, <%=class_name %>) %>
8
8
  <%% else -%>
9
9
  <%%= f.collection_select :<%= attribute.name %>_id, <%= attribute.name.classify %>.all, :id, :name, :prompt => true %>
10
10
  <%% end -%>
11
11
  <%- when :date -%>
12
- <%%= f.<%= attribute.field_type %> :<%= attribute.name %> <%=", :class => \"calendar\"" if jquery_ui?%> %>
12
+ <%%= f.text_field :<%= attribute.name %> <%=", :class => \"calendar\"" if jquery_ui?%> %>
13
13
  <%- else -%>
14
14
  <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
15
15
  <%- end -%>
@@ -2,7 +2,6 @@
2
2
  <%% if @<%= singular_table_name %>.errors.any? %>
3
3
  <div id="error_explanation">
4
4
  <h2><%%= pluralize(@<%= singular_table_name %>.errors.count, "error") %> prohibited this <%= singular_table_name %> from being saved:</h2>
5
-
6
5
  <ul>
7
6
  <%% @<%= singular_table_name %>.errors.full_messages.each do |msg| %>
8
7
  <li><%%= msg %></li>
@@ -11,7 +10,7 @@
11
10
  </div>
12
11
  <%% end %>
13
12
 
14
- <%%= render 'fields', :f => f %>
13
+ <%%= render 'fields', :f => f, :<%= singular_table_name %> => @<%= singular_table_name %> %>
15
14
  <div class="actions">
16
15
  <%%= f.submit :class => 'button large' %>
17
16
  </div>
@@ -1,9 +1,10 @@
1
1
  <%%= form_for(:<%= plural_table_name %>, :url => path, :method => :put) do |f| %>
2
- <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
3
- <%%= f.fields_for "#{<%= singular_table_name %>.id}", <%= singular_table_name %> do |f_<%= singular_table_name %>| %>
4
- <%%= render 'fields', :f => f_<%= singular_table_name %> %>
5
- <%% end %>
2
+ <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| -%>
3
+ <%%= f.fields_for "#{<%= singular_table_name %>.id}", <%= singular_table_name %> do |ff| %>
4
+ <%%= render 'fields', :f => ff, :<%= singular_table_name %> => <%= singular_table_name %> %>
6
5
  <%% end %>
6
+ <div class="separator"></div>
7
+ <%% end -%>
7
8
  <div class="actions">
8
9
  <%%= f.submit :class => 'button large' %>
9
10
  </div>
@@ -2,7 +2,7 @@
2
2
  <%%= paginate @<%= plural_table_name %>, :remote => remote %>
3
3
  <%end%>
4
4
  <%%= page_entries_info @<%= plural_table_name %>, t('models.<%= singular_table_name %>'), t('models.<%= plural_table_name %>') %>
5
-
5
+ <%% if @<%= plural_table_name %>.any? -%>
6
6
  <%%= form_for :select, :url => select_<%= plural_table_name %>_path, :remote => false, :html => { :method => :post, :id => "form_select" } do |f| %>
7
7
  <table class='user' cellspacing='0'>
8
8
  <thead>
@@ -55,7 +55,7 @@
55
55
  </div>
56
56
  <%% end -%>
57
57
  <div class="separator"></div>
58
-
58
+ <%% end -%>
59
59
  <%- if pagination? -%>
60
60
  <%%= paginate @<%= plural_table_name %>, :remote => remote %>
61
61
  <%- end -%>
@@ -1,12 +1,11 @@
1
1
  <td>
2
2
  <%%= check_box_tag "ids[]", <%= singular_table_name %>.id, false, {:id =>"check#{<%= singular_table_name %>.id}", :class => "selectable"} %>
3
- <%%= number_with_delimiter <%= singular_table_name %>.id %>
3
+ <%%= link_to number_with_delimiter(<%= singular_table_name %>.id), <%= show_resource_path %><%= ", :remote => remote" if jquery_ui? %> %>
4
4
  </td>
5
5
  <%- attributes.each do |attribute| -%>
6
6
  <td><%= attribute_to_erb(attribute, singular_table_name) -%></td>
7
7
  <%- end -%>
8
8
  <!-- Manage section, do not remove this tag -->
9
- <td><%%= link_to t(:show), <%= show_resource_path %><%= ", :remote => remote" if jquery_ui? %> %></td>
10
9
  <%- if authorization? -%>
11
10
  <%%- if can? :update, <%= singular_table_name %> -%>
12
11
  <%- end -%>
@@ -2,7 +2,7 @@
2
2
  <%- attributes.each do |attribute| -%>
3
3
  <%- case attribute.type
4
4
  when :references, :belongs_to -%>
5
- <%% if @<%= singular_table_name %>.new_record? -%>
5
+ <%% if <%= singular_table_name %>.new_record? -%>
6
6
  <%%= f.input :<%= attribute.name %> if can?(:manage, <%=class_name %>) %>
7
7
  <%% else -%>
8
8
  <%%= f.input :<%= attribute.name %> %>
@@ -1,5 +1,5 @@
1
1
  <%%= semantic_form_for(<%= form_resource_path %>) do |f| %>
2
- <%%= render 'fields', :f => f %>
2
+ <%%= render 'fields', :f => f, :<%= singular_table_name %> => @<%= singular_table_name %> %>
3
3
  <%%= f.buttons do %>
4
4
  <%%= f.commit_button :button_html => { :class => "button large" } %>
5
5
  <%% end %>
@@ -1,8 +1,9 @@
1
1
  <%%= semantic_form_for(:<%= plural_table_name %>, :url => path, :method => :put) do |f| %>
2
2
  <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
3
- <%%= f.semantic_fields_for "#{<%= singular_table_name %>.id}", <%= singular_table_name %> do |f_<%= singular_table_name %>| %>
4
- <%%= render 'fields', :f => f_<%= singular_table_name %> %>
3
+ <%%= f.semantic_fields_for "#{<%= singular_table_name %>.id}", <%= singular_table_name %> do |ff| %>
4
+ <%%= render 'fields', :f => ff, :<%= singular_table_name %> => <%= singular_table_name %> %>
5
5
  <%% end %>
6
+ <div class="separator"></div>
6
7
  <%% end %>
7
8
  <%%= f.buttons do %>
8
9
  <%%= f.commit_button :button_html => { :class => "button large" } %>
@@ -30,7 +30,7 @@
30
30
  <%- when :text -%>
31
31
  <%%= f.text_field :<%= attribute.name %> %>
32
32
  <%- when :date -%>
33
- <%%= f.text_field :<%= attribute.name %>, :class => "autosubmit<%=" calendar" if jquery_ui? %>"
33
+ <%%= f.text_field :<%= attribute.name %>, :class => "autosubmit<%=" calendar" if jquery_ui? %>" %>
34
34
  <%- else -%>
35
35
  <%%= f.<%= attribute.field_type %> :<%= attribute.name %> %>
36
36
  <%- end -%>
@@ -178,9 +178,9 @@ en:
178
178
  # Default value for :prompt => true in FormOptionsHelper
179
179
  prompt: "Please select"
180
180
  # Default translation keys for submit FormHelper
181
- submit:
181
+ submit: &actions
182
182
  create: "Create %{model}"
183
- update: "Update %{model}"
183
+ update: "Update"
184
184
  submit: "Proceed"
185
185
 
186
186
  activerecord: &activerecord
@@ -196,10 +196,8 @@ en:
196
196
  labels:
197
197
  <<: *attributes
198
198
  hints:
199
- actions: &actions
200
- create: "Create %{model}"
201
- update: "Save changes"
202
- submit: "Proceed"
199
+ actions:
200
+ <<: *actions
203
201
  authentication:
204
202
  sign_in: "Sign in"
205
203
  sign_in_with: "Sign in with"
@@ -230,6 +228,7 @@ en:
230
228
  updated_multiple: "%{model} were successfully updated."
231
229
  updated_multiple_ko: "An error prohibited %{model} to be updated."
232
230
  deleted: "%{model} was successfully deleted."
231
+ deleted_ko: "An error prohibited %{model} to be deleted."
233
232
  deleted_multiple: "%{model} were successfully deleted."
234
233
  deleted_multiple_ko: "An error prohibited %{model} to be deleted."
235
234
  search_found: "%{found} found"
@@ -176,9 +176,9 @@ it:
176
176
  # Default value for :prompt => true in FormOptionsHelper
177
177
  prompt: "Seleziona ..."
178
178
  # Default translation keys for submit FormHelper
179
- submit:
179
+ submit: &actions
180
180
  create: "Crea %{model}"
181
- update: "Aggiorna %{model}"
181
+ update: "Aggiorna"
182
182
  submit: "Procedi"
183
183
 
184
184
  activerecord: &activerecord
@@ -225,10 +225,8 @@ it:
225
225
  labels:
226
226
  <<: *attributes
227
227
  hints:
228
- actions: &actions
229
- create: "Crea %{model}"
230
- update: "Aggiorna"
231
- submit: "Procedi"
228
+ actions:
229
+ <<: *actions
232
230
  authentication:
233
231
  sign_in: "Accedi"
234
232
  sign_in_with: "Accedi con"
@@ -260,6 +258,7 @@ it:
260
258
  updated_multiple: "La modifica di %{model} è avvenuta con successo."
261
259
  updated_multiple_ko: "Un errore ha impedito la modifica di %{model}."
262
260
  deleted: "L'oggetto %{model} è stato eliminato."
261
+ updated_ko: "Un errore ha impedito l'eliminazione dell'oggetto %{model}."
263
262
  deleted_multiple: "L'eliminazione di %{model} è avvenuta con successo."
264
263
  deleted_multiple_ko: "Un errore ha impedito l'eliminazione di %{model}."
265
264
  search_found: "La ricerca ha trovato %{found}"
@@ -59,14 +59,16 @@ module Leonardo
59
59
  end
60
60
  " #{name}#{value}"
61
61
  end
62
- def attribute_to_requests(attribute)
62
+ def attribute_to_requests(attribute, object_id=nil)
63
+ object_id ||= "#{singular_table_name}_#{attribute.name}"
64
+ object_id = object_id.gsub('#', "\#{#{singular_table_name}.id}")
63
65
  case attribute.type
64
- when :boolean then "check '#{singular_table_name}_#{attribute.name}' if #{singular_table_name}.#{attribute.name}"
65
- when :references, :belongs_to then "select #{singular_table_name}.#{attribute.name}.name, :from => '#{singular_table_name}_#{attribute.name}_id'"
66
+ when :boolean then "check \"#{object_id}\" if #{singular_table_name}.#{attribute.name}"
67
+ when :references, :belongs_to then "select #{singular_table_name}.#{attribute.name}.name, :from => \"#{object_id}\""
66
68
  when :datetime, :time, :timestamp
67
69
  then ""
68
- when :date then "fill_in '#{singular_table_name}_#{attribute.name}', :with => #{singular_table_name}.#{attribute.name}.strftime('%d-%m-%Y')"
69
- else "fill_in '#{singular_table_name}_#{attribute.name}', :with => #{singular_table_name}.#{attribute.name}"
70
+ when :date then "fill_in \"#{object_id}\", :with => #{singular_table_name}.#{attribute.name}.strftime('%d-%m-%Y')"
71
+ else "fill_in \"#{object_id}\", :with => #{singular_table_name}.#{attribute.name}"
70
72
  end
71
73
  end
72
74
  def attribute_to_erb(attribute, object)
@@ -83,13 +85,17 @@ module Leonardo
83
85
  end
84
86
  end
85
87
  def get_attr_to_match(view=:list)
86
- attributes.each do |attribute|
87
- case attribute.type
88
- when :string, :text then
89
- return "have_content(#{singular_table_name}.#{attribute.name})",
90
- "have_no_content(#{singular_table_name}.#{attribute.name})"
91
- end
92
- end
88
+ #attributes.each do |attribute|
89
+ # case attribute.type
90
+ # when :string, :text then
91
+ # return "have_content(#{singular_table_name}.#{attribute.name})",
92
+ # "have_no_content(#{singular_table_name}.#{attribute.name})"
93
+ # end
94
+ #end
95
+ attr = get_attr_to_check(view)
96
+ return "have_content(#{singular_table_name}.#{attr})",
97
+ "have_no_content(#{singular_table_name}.#{attr})" if attr
98
+
93
99
  #If there are not string or text attributes
94
100
  case view
95
101
  when :list
@@ -98,6 +104,29 @@ module Leonardo
98
104
  return "have_xpath('//table/tbody/tr')", "have_no_xpath('//table/tbody/tr')"
99
105
  end
100
106
  end
107
+ def get_attr_to_check(view=:list)
108
+ attribute = nil
109
+ case view
110
+ when :something
111
+ else
112
+ attributes.each{|a| attribute = case a.type when :string, :text then a.name end}
113
+ attributes.each{|a| attribute = case a.type when :references, :belongs_to, :datetime then nil else a.name end} unless attribute
114
+ #attributes.each do |attribute|
115
+ # case attribute.type
116
+ # when :references, :belongs_to, :datetime
117
+ # else
118
+ # selected_attr = attribute.name
119
+ # break
120
+ # end
121
+ #end
122
+ end
123
+ attribute
124
+ end
125
+ def fill_form_with_values(object_id=nil)
126
+ items = []
127
+ attributes.each{|a|items << " #{attribute_to_requests(a, object_id)}"}
128
+ items
129
+ end
101
130
  end
102
131
 
103
132
  module Nested
@@ -26,7 +26,6 @@ module Rails
26
26
  post :select, :on => :collection
27
27
  post :edit_multiple, :on => :collection
28
28
  put :update_multiple, :on => :collection
29
- post :copy, :on => :collection
30
29
  put :create_multiple, :on => :collection
31
30
  end
32
31
  FILE
@@ -19,6 +19,7 @@ module Rails
19
19
  class_option :remote, :type => :boolean, :default => true, :desc => "Enable ajax. You can also do later set remote to true into index view."
20
20
  class_option :under, :type => :string, :default => "", :banner => "brand/category", :desc => "To nest a resource under another(s)"
21
21
  class_option :leospace, :type => :string, :default => "", :banner => ":admin", :desc => "To nest a resource under namespace(s)"
22
+ class_option :auth_class, :type => :boolean, :default => 'user', :desc => "Set the authentication class name"
22
23
 
23
24
  #Override
24
25
  def create_controller_files
@@ -92,18 +93,25 @@ module Rails
92
93
  return unless File.exists?(file)
93
94
  inject_into_file file, :before => " end\nend" do
94
95
  <<-FILE.gsub(/^ /, '')
95
- #can :read, #{class_name} if user.new_record? #Guest
96
- can :read, #{class_name} if user.role? :guest #Registered guest
97
- if user.role? :user
96
+ #can :read, #{class_name} if #{options[:auth_class]}.new_record? #Guest
97
+ can :read, #{class_name} if #{options[:auth_class]}.role? :guest #Registered guest
98
+ if #{options[:auth_class]}.role? :user
98
99
  can :read, #{class_name}
99
- can :update, #{class_name}
100
100
  can :create, #{class_name}
101
+ can [:update, :destroy, :select, :create_multiple, :update_multiple], #{class_name} do |#{singular_table_name}|
102
+ if defined?(#{singular_table_name}.#{options[:auth_class]}_id)
103
+ #{singular_table_name}.#{options[:auth_class]}_id == #{options[:auth_class]}.id
104
+ else
105
+ true
106
+ end
107
+ end
101
108
  end
102
- if user.role? :manager
109
+ if #{options[:auth_class]}.role? :manager
103
110
  can :read, #{class_name}
104
111
  can :update, #{class_name}
105
112
  can :create, #{class_name}
106
113
  can :destroy, #{class_name}
114
+ can [:select, :create_multiple, :update_multiple], #{class_name}
107
115
  end
108
116
 
109
117
  FILE
@@ -132,7 +132,8 @@ end
132
132
  def create_multiple
133
133
  respond_to do |format|
134
134
  if <%= class_name %>.create(params[:<%= plural_table_name %>].values)
135
- format.html { redirect_to <%= list_resources_path %>, :notice => I18n.t(:created_multiple, :model => I18n.t('models.<%= plural_table_name %>')) }
135
+ num = params[:<%= plural_table_name %>].values.size
136
+ format.html { redirect_to <%= list_resources_path %>, :notice => (num == 1 ? I18n.t(:created, :model => I18n.t('models.<%= singular_table_name %>')) : I18n.t(:created_multiple, :model => "#{num} #{I18n.t('models.<%= plural_table_name %>')}") ) }
136
137
  else
137
138
  format.html { render :action => "copy" }
138
139
  end
@@ -158,7 +159,8 @@ end
158
159
  def update_multiple
159
160
  respond_to do |format|
160
161
  if <%= class_name %>.update(params[:<%= plural_table_name %>].keys, params[:<%= plural_table_name %>].values)
161
- format.html { redirect_to <%= list_resources_path %>, :notice => I18n.t(:updated_multiple, :model => I18n.t('models.<%= plural_table_name %>')) }
162
+ num = params[:<%= plural_table_name %>].values.size
163
+ format.html { redirect_to <%= list_resources_path %>, :notice => (num == 1 ? I18n.t(:updated, :model => I18n.t('models.<%= singular_table_name %>')) : I18n.t(:updated_multiple, :model => "#{num} #{I18n.t('models.<%= plural_table_name %>')}") ) }
162
164
  else
163
165
  format.html { render :action => "edit_multiple" }
164
166
  end
@@ -209,8 +211,12 @@ end
209
211
  respond_to do |format|
210
212
  format.js
211
213
  format.html do
214
+ num_ok = num_ko = 0
215
+ @results.each {|k, v| result, msg = v; result ? num_ok +=1 : num_ko +=1}
212
216
  case @operation
213
217
  when :destroy
218
+ flash[:notice] = (num_ok == 1 ? I18n.t(:deleted, :model => I18n.t('models.<%= singular_table_name %>')) : I18n.t(:deleted_multiple, :model => "#{num_ok} #{I18n.t('models.<%= plural_table_name %>')}") ) if num_ok > 0
219
+ flash[:error] = (num_ko == 1 ? I18n.t(:deleted_ko, :model => I18n.t('models.<%= singular_table_name %>')) : I18n.t(:deleted_multiple_ko, :model => "#{num_ko} #{I18n.t('models.<%= plural_table_name %>')}") ) if num_ko > 0
214
220
  redirect_to <%= list_resources_path %> and return
215
221
  when :edit
216
222
  render :edit_multiple and return
@@ -1,11 +1,5 @@
1
1
  require 'spec_helper'
2
- <%-
3
- items = []
4
- attributes.each do |attribute|
5
- items << " #{attribute_to_requests(attribute)}"
6
- end
7
- check_attr_to_have, check_attr_to_not_have = get_attr_to_match
8
- -%>
2
+ <%- check_attr_to_have, check_attr_to_not_have = get_attr_to_match -%>
9
3
 
10
4
  describe "<%= class_name.pluralize %>" do
11
5
  describe "GET /<%= table_name %>" do
@@ -23,12 +17,106 @@ describe "<%= class_name.pluralize %>" do
23
17
  <%= singular_table_name %> = Factory.build(:<%= singular_table_name %>)
24
18
  visit <%= new_resource_path_test %>
25
19
  <%= "login_view_as(:user_admin)" if authentication? %>
26
- <%= items.join(CRLF) %>
20
+ <%= fill_form_with_values.join(CRLF) %>
27
21
  click_button "Create #{I18n.t('models.<%= singular_table_name %>')}"
28
22
  #save_and_open_page #uncomment to debug
29
23
  page.should have_content(I18n.t(:created, :model => I18n.t('models.<%= singular_table_name %>')))
30
24
  page.should <%= check_attr_to_have %>
31
25
  end
26
+
27
+ it "copy one <%= singular_table_name %>" do
28
+ <%= singular_table_name %> = Factory(:<%= singular_table_name %>)
29
+ visit <%= list_resources_path_test %>
30
+ <%= "login_view_as(:user_manager)" if authentication? -%>
31
+ #save_and_open_page #uncomment to debug
32
+ page.should <%= check_attr_to_have %>
33
+ assert page.find("#tr#{<%= singular_table_name %>.id}").visible?
34
+ check("check#{<%= singular_table_name %>.id}")
35
+ click_button I18n.t(:copy).upcase
36
+ page.should have_content(I18n.t('attributes.<%= singular_table_name %>.op_copy'))
37
+ <%= fill_form_with_values("#{plural_table_name}_#_name").join(CRLF) %>
38
+ click_button I18n.t(:submit)
39
+ page.should have_content(I18n.t(:created, :model => I18n.t('models.<%= singular_table_name %>')))
40
+ end
41
+
42
+ it "copy several <%= plural_table_name %>" do
43
+ <%= plural_table_name %> = FactoryGirl.create_list(:<%= singular_table_name %>, 2)
44
+ visit <%= list_resources_path_test %>
45
+ <%= "login_view_as(:user_manager)" if authentication? -%>
46
+ #save_and_open_page #uncomment to debug
47
+ <%= plural_table_name %>.each do |<%= singular_table_name %>|
48
+ page.should <%= check_attr_to_have %>
49
+ assert page.find("#tr#{<%= singular_table_name %>.id}").visible?
50
+ check "check#{<%= singular_table_name %>.id}"
51
+ end
52
+ click_button I18n.t(:copy).upcase
53
+ page.should have_content(I18n.t('attributes.<%= singular_table_name %>.op_copy'))
54
+ <%= plural_table_name %>.each do |<%= singular_table_name %>|
55
+ <%= fill_form_with_values("#{plural_table_name}_#_name").join(CRLF) %>
56
+ end
57
+ click_button I18n.t(:submit)
58
+ page.should have_content(I18n.t(:created_multiple, :model => "#{<%= plural_table_name %>.size} #{I18n.t('models.<%= plural_table_name %>')}"))
59
+ end
60
+
61
+ it "edit one <%= singular_table_name %>" do
62
+ <%= singular_table_name %> = Factory(:<%= singular_table_name %>)
63
+ visit <%= list_resources_path_test %>
64
+ <%= "login_view_as(:user_manager)" if authentication? -%>
65
+ #save_and_open_page #uncomment to debug
66
+ page.should <%= check_attr_to_have %>
67
+ assert page.find("#tr#{<%= singular_table_name %>.id}").visible?
68
+ check("check#{<%= singular_table_name %>.id}")
69
+ click_button I18n.t(:edit).upcase
70
+ page.should have_content(I18n.t('attributes.<%= singular_table_name %>.op_edit_multiple'))
71
+ <%= fill_form_with_values("#{plural_table_name}_#_name").join(CRLF) %>
72
+ click_button I18n.t(:submit)
73
+ page.should have_content(I18n.t(:updated, :model => I18n.t('models.<%= singular_table_name %>')))
74
+ end
75
+
76
+ it "edit several <%= plural_table_name %>" do
77
+ <%= plural_table_name %> = FactoryGirl.create_list(:<%= singular_table_name %>, 2)
78
+ visit <%= list_resources_path_test %>
79
+ <%= "login_view_as(:user_manager)" if authentication? -%>
80
+ #save_and_open_page #uncomment to debug
81
+ <%= plural_table_name %>.each do |<%= singular_table_name %>|
82
+ page.should <%= check_attr_to_have %>
83
+ assert page.find("#tr#{<%= singular_table_name %>.id}").visible?
84
+ check "check#{<%= singular_table_name %>.id}"
85
+ end
86
+ click_button I18n.t(:edit).upcase
87
+ page.should have_content(I18n.t('attributes.<%= singular_table_name %>.op_edit_multiple'))
88
+ <%= plural_table_name %>.each do |<%= singular_table_name %>|
89
+ <%= fill_form_with_values("#{plural_table_name}_#_name").join(CRLF) %>
90
+ end
91
+ click_button I18n.t(:submit)
92
+ page.should have_content(I18n.t(:updated_multiple, :model => "#{<%= plural_table_name %>.size} #{I18n.t('models.<%= plural_table_name %>')}"))
93
+ end
94
+
95
+ it "destroy one <%= singular_table_name %>" do
96
+ <%= singular_table_name %> = Factory(:<%= singular_table_name %>)
97
+ visit <%= list_resources_path_test %>
98
+ <%= "login_view_as(:user_manager)" if authentication? -%>
99
+ #save_and_open_page #uncomment to debug
100
+ page.should <%= check_attr_to_have %>
101
+ assert page.find("#tr#{<%= singular_table_name %>.id}").visible?
102
+ check("check#{<%= singular_table_name %>.id}")
103
+ click_button I18n.t(:destroy).upcase
104
+ page.should have_content(I18n.t(:deleted, :model => I18n.t('models.<%= singular_table_name %>')))
105
+ end
106
+
107
+ it "destroy several <%= plural_table_name %>" do
108
+ <%= plural_table_name %> = FactoryGirl.create_list(:<%= singular_table_name %>, 2)
109
+ visit <%= list_resources_path_test %>
110
+ <%= "login_view_as(:user_manager)" if authentication? -%>
111
+ #save_and_open_page #uncomment to debug
112
+ <%= plural_table_name %>.each do |<%= singular_table_name %>|
113
+ page.should <%= check_attr_to_have %>
114
+ assert page.find("#tr#{<%= singular_table_name %>.id}").visible?
115
+ check "check#{<%= singular_table_name %>.id}"
116
+ end
117
+ click_button I18n.t(:destroy).upcase
118
+ page.should have_content(I18n.t(:deleted_multiple, :model => "#{<%= plural_table_name %>.size} #{I18n.t('models.<%= plural_table_name %>')}"))
119
+ end
32
120
  end
33
121
 
34
122
  describe "Check ajax /<%= plural_table_name %>" do
@@ -37,7 +125,7 @@ describe "<%= class_name.pluralize %>" do
37
125
  visit <%= list_resources_path_test %>
38
126
  <%= "login_view_as(:user_manager)" if authentication? %> #authentication
39
127
  page.find("div#list").should <%= check_attr_to_have %>
40
- click_link I18n.t(:show)
128
+ click_link "#{<%= singular_table_name %>.id}"
41
129
  page.find("div.ui-dialog").should <%= check_attr_to_have %> #checks if dialog is appeared
42
130
  click_link "close" #close dialog
43
131
  !page.find("div.ui-dialog").visible? #checks if dialog has been closed
@@ -168,7 +168,7 @@ describe <%= leospaced? ? (base_namespaces << controller_class_name).join('/').c
168
168
  <%- if authorization? -%>
169
169
  describe "without authorization" do
170
170
  it "destroys the requested <%= ns_file_name %>" do
171
- <%= "login_controller_as(:user)" if authentication? %>
171
+ <%= "login_controller_as(:user_guest)" if authentication? %>
172
172
  <%= file_name %> = Factory(:<%= file_name %>)
173
173
  expect {
174
174
  delete :destroy, :id => <%= file_name %>.id.to_s<%= nested_params_http_request %>
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leonardo
3
3
  version: !ruby/object:Gem::Version
4
- hash: 62196241
4
+ hash: 62196247
5
5
  prerelease: 6
6
6
  segments:
7
7
  - 1
8
8
  - 9
9
9
  - 0
10
10
  - beta
11
- - 1
12
- version: 1.9.0.beta1
11
+ - 2
12
+ version: 1.9.0.beta2
13
13
  platform: ruby
14
14
  authors:
15
15
  - Marco Mastrodonato
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-11-30 00:00:00 Z
20
+ date: 2011-12-09 00:00:00 Z
21
21
  dependencies: []
22
22
 
23
23
  description: A generator for creating Rails 3.1 applications ready to go. It generates the layout, the style, the internationalization and manage external gems for authentication, authorization and other. It also provides a customized scaffold to generates cool sites ajax ready in few minutes. If you find a bug please report to m.mastrodonato@gmail.com