rails_admin 0.3.0 → 0.4.0

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 (120) hide show
  1. data/Gemfile +2 -2
  2. data/README.md +13 -6
  3. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  4. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  5. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  6. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  7. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  8. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  9. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  10. data/app/assets/images/rails_admin/calendar.png +0 -0
  11. data/app/assets/images/rails_admin/clock.png +0 -0
  12. data/app/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  13. data/app/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  14. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  15. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  16. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  17. data/app/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  18. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  19. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  20. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  21. data/app/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  22. data/app/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  23. data/app/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  24. data/app/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  25. data/app/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  26. data/app/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  27. data/app/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  28. data/app/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  29. data/app/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  30. data/app/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  31. data/app/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  32. data/app/assets/images/rails_admin/colorpicker/select.png +0 -0
  33. data/app/assets/images/rails_admin/colorpicker/select2.png +0 -0
  34. data/app/assets/images/rails_admin/colorpicker/slider.png +0 -0
  35. data/app/assets/images/rails_admin/logo.png +0 -0
  36. data/app/assets/images/rails_admin/magnifier.png +0 -0
  37. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  38. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  39. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  40. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  41. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  42. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  43. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  44. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  45. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  46. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  47. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  48. data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +1 -0
  49. data/app/controllers/rails_admin/main_controller.rb +1 -1
  50. data/app/helpers/rails_admin/application_helper.rb +3 -2
  51. data/app/views/rails_admin/main/index.html.haml +1 -1
  52. data/lib/generators/rails_admin/install_generator.rb +1 -1
  53. data/lib/rails_admin/abstract_model.rb +4 -0
  54. data/lib/rails_admin/adapters/active_record.rb +4 -0
  55. data/lib/rails_admin/adapters/mongoid.rb +6 -0
  56. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +3 -3
  57. data/lib/rails_admin/config.rb +9 -12
  58. data/lib/rails_admin/config/actions/base.rb +4 -3
  59. data/lib/rails_admin/config/fields/association.rb +1 -1
  60. data/lib/rails_admin/config/fields/base.rb +1 -1
  61. data/lib/rails_admin/config/fields/factories/association.rb +1 -1
  62. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +1 -1
  63. data/lib/rails_admin/config/fields/types/boolean.rb +2 -2
  64. data/lib/rails_admin/config/fields/types/datetime.rb +1 -1
  65. data/lib/rails_admin/config/has_fields.rb +3 -2
  66. data/lib/rails_admin/config/lazy_model.rb +21 -0
  67. data/lib/rails_admin/extensions/history/history.rb +5 -5
  68. data/lib/rails_admin/support/csv_converter.rb +2 -6
  69. data/lib/rails_admin/version.rb +1 -1
  70. data/spec/controllers/{application_controller_spec.rb → rails_admin/application_controller_spec.rb} +0 -0
  71. data/spec/controllers/{main_controller_spec.rb → rails_admin/main_controller_spec.rb} +36 -4
  72. data/spec/dummy_app/Gemfile +2 -2
  73. data/spec/dummy_app/app/active_record/comment.rb +1 -1
  74. data/spec/dummy_app/app/active_record/team.rb +1 -1
  75. data/spec/dummy_app/app/mongoid/field_test.rb +2 -1
  76. data/spec/dummy_app/app/mongoid/team.rb +1 -1
  77. data/spec/dummy_app/db/seeds.rb +4 -4
  78. data/spec/dummy_app/db/test.sqlite3 +0 -0
  79. data/spec/dummy_app/log/test.log +156160 -0
  80. data/spec/helpers/rails_admin/application_helper_spec.rb +353 -0
  81. data/spec/helpers/{form_builder_spec.rb → rails_admin/form_builder_spec.rb} +0 -0
  82. data/spec/integration/authorization/cancan_spec.rb +13 -13
  83. data/spec/integration/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +2 -2
  84. data/spec/integration/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +13 -2
  85. data/spec/integration/basic/create/rails_admin_basic_create_spec.rb +8 -9
  86. data/spec/integration/basic/create/rails_admin_namespaced_model_create_spec.rb +1 -1
  87. data/spec/integration/basic/destroy/rails_admin_basic_destroy_spec.rb +4 -4
  88. data/spec/integration/basic/edit/rails_admin_basic_edit_spec.rb +2 -2
  89. data/spec/integration/basic/export/rails_admin_basic_export_spec.rb +2 -2
  90. data/spec/integration/basic/list/rails_admin_basic_list_spec.rb +51 -21
  91. data/spec/integration/basic/update/rails_admin_basic_update_spec.rb +15 -15
  92. data/spec/integration/config/edit/rails_admin_config_edit_spec.rb +13 -14
  93. data/spec/integration/config/list/rails_admin_config_list_spec.rb +7 -6
  94. data/spec/integration/config/show/rails_admin_config_show_spec.rb +1 -1
  95. data/spec/integration/rails_admin_spec.rb +2 -0
  96. data/spec/{unit → rails_admin}/abstract_model_spec.rb +7 -0
  97. data/spec/{unit → rails_admin}/active_record_extension_spec.rb +0 -0
  98. data/spec/{unit → rails_admin}/adapters/active_record/abstract_object_spec.rb +0 -0
  99. data/spec/{unit → rails_admin}/adapters/active_record_spec.rb +0 -0
  100. data/spec/{unit → rails_admin}/adapters/mongoid/abstract_object_spec.rb +0 -0
  101. data/spec/{unit → rails_admin}/adapters/mongoid_spec.rb +7 -1
  102. data/spec/{unit → rails_admin}/config/actions/base_spec.rb +0 -0
  103. data/spec/{unit → rails_admin}/config/actions_spec.rb +0 -0
  104. data/spec/{unit → rails_admin}/config/fields/base_spec.rb +0 -0
  105. data/spec/{unit → rails_admin}/config/fields/date_spec.rb +0 -0
  106. data/spec/{unit → rails_admin}/config/fields/datetime_spec.rb +0 -0
  107. data/spec/{unit → rails_admin}/config/fields/file_upload_spec.rb +0 -0
  108. data/spec/{unit → rails_admin}/config/fields/time_spec.rb +0 -0
  109. data/spec/{unit → rails_admin}/config/fields/timestamp_spec.rb +0 -0
  110. data/spec/rails_admin/config/fields/types/datetime_spec.rb +18 -0
  111. data/spec/{unit → rails_admin}/config/fields_spec.rb +0 -0
  112. data/spec/rails_admin/config/has_fields_spec.rb +30 -0
  113. data/spec/rails_admin/config/lazy_model_spec.rb +29 -0
  114. data/spec/{unit → rails_admin}/config/model_spec.rb +0 -0
  115. data/spec/{unit → rails_admin}/config/sections_spec.rb +0 -0
  116. data/spec/{unit → rails_admin}/config_spec.rb +0 -0
  117. data/spec/{unit → rails_admin}/support/csv_converter_spec.rb +0 -0
  118. data/spec/spec_helper.rb +2 -0
  119. metadata +65 -60
  120. data/spec/helpers/application_helper_spec.rb +0 -328
@@ -0,0 +1,353 @@
1
+ require 'spec_helper'
2
+ require 'cancan'
3
+
4
+ class TestAbility
5
+ include CanCan::Ability
6
+ def initialize(user)
7
+ can :access, :rails_admin
8
+ can :edit, FieldTest
9
+ cannot :edit, FieldTest, string_field: 'dangerous'
10
+ end
11
+ end
12
+
13
+ describe RailsAdmin::ApplicationHelper do
14
+ describe '#authorized?' do
15
+ before do
16
+ RailsAdmin.config.stub(_current_user: FactoryGirl.create(:user))
17
+ helper.instance_variable_set('@authorization_adapter', RailsAdmin::AUTHORIZATION_ADAPTERS[:cancan].new(RailsAdmin.config, TestAbility))
18
+ end
19
+
20
+ it 'doesn\'t test unpersisted objects' do
21
+ am = RailsAdmin.config(FieldTest).abstract_model
22
+ expect(helper.authorized?(:edit, am, FactoryGirl.create(:field_test, string_field: 'dangerous'))).to be_false
23
+ expect(helper.authorized?(:edit, am, FactoryGirl.create(:field_test, string_field: 'not-dangerous'))).to be_true
24
+ expect(helper.authorized?(:edit, am, FactoryGirl.build(:field_test, string_field: 'dangerous'))).to be_true
25
+ end
26
+ end
27
+
28
+ describe 'with #authorized? stubbed' do
29
+ before do
30
+ controller.stub(:authorized?).and_return(true)
31
+ end
32
+
33
+ describe "#current_action?" do
34
+ it "returns true if current_action, false otherwise" do
35
+ @action = RailsAdmin::Config::Actions.find(:index)
36
+
37
+ expect(helper.current_action?(RailsAdmin::Config::Actions.find(:index))).to be_true
38
+ expect(helper.current_action?(RailsAdmin::Config::Actions.find(:show))).not_to be_true
39
+ end
40
+ end
41
+
42
+ describe "#action" do
43
+ it "returns action by :custom_key" do
44
+ RailsAdmin.config do |config|
45
+ config.actions do
46
+ dashboard do
47
+ custom_key :my_custom_dashboard_key
48
+ end
49
+ end
50
+ end
51
+ expect(helper.action(:my_custom_dashboard_key)).to be
52
+ end
53
+
54
+ it "returns only visible actions" do
55
+ RailsAdmin.config do |config|
56
+ config.actions do
57
+ dashboard do
58
+ visible false
59
+ end
60
+ end
61
+ end
62
+
63
+ expect(helper.action(:dashboard)).to be_nil
64
+ end
65
+
66
+ it "returns only visible actions, passing all bindings" do
67
+ RailsAdmin.config do |config|
68
+ config.actions do
69
+ member :test_bindings do
70
+ visible do
71
+ bindings[:controller].is_a?(ActionView::TestCase::TestController) and
72
+ bindings[:abstract_model].model == Team and
73
+ bindings[:object].is_a? Team
74
+ end
75
+ end
76
+ end
77
+ end
78
+ expect(helper.action(:test_bindings, RailsAdmin::AbstractModel.new(Team), Team.new)).to be
79
+ expect(helper.action(:test_bindings, RailsAdmin::AbstractModel.new(Team), Player.new)).to be_nil
80
+ expect(helper.action(:test_bindings, RailsAdmin::AbstractModel.new(Player), Team.new)).to be_nil
81
+ end
82
+ end
83
+
84
+ describe "#actions" do
85
+ it "returns actions by type" do
86
+ abstract_model = RailsAdmin::AbstractModel.new(Player)
87
+ object = FactoryGirl.create :player
88
+ expect(helper.actions(:all, abstract_model, object).map(&:custom_key)).to eq([:dashboard, :index, :show, :new, :edit, :export, :delete, :bulk_delete, :history_show, :history_index, :show_in_app])
89
+ expect(helper.actions(:root, abstract_model, object).map(&:custom_key)).to eq([:dashboard])
90
+ expect(helper.actions(:collection, abstract_model, object).map(&:custom_key)).to eq([:index, :new, :export, :bulk_delete, :history_index])
91
+ expect(helper.actions(:member, abstract_model, object).map(&:custom_key)).to eq([:show, :edit, :delete, :history_show, :show_in_app])
92
+ end
93
+
94
+ it "only returns visible actions, passing bindings correctly" do
95
+ RailsAdmin.config do |config|
96
+ config.actions do
97
+ member :test_bindings do
98
+ visible do
99
+ bindings[:controller].is_a?(ActionView::TestCase::TestController) and
100
+ bindings[:abstract_model].model == Team and
101
+ bindings[:object].is_a? Team
102
+ end
103
+ end
104
+ end
105
+ end
106
+
107
+ expect(helper.actions(:all, RailsAdmin::AbstractModel.new(Team), Team.new).map(&:custom_key)).to eq([:test_bindings])
108
+ expect(helper.actions(:all, RailsAdmin::AbstractModel.new(Team), Player.new).map(&:custom_key)).to eq([])
109
+ expect(helper.actions(:all, RailsAdmin::AbstractModel.new(Player), Team.new).map(&:custom_key)).to eq([])
110
+ end
111
+ end
112
+
113
+ describe "#wording_for" do
114
+ it "gives correct wording even if action is not visible" do
115
+ RailsAdmin.config do |config|
116
+ config.actions do
117
+ index do
118
+ visible false
119
+ end
120
+ end
121
+ end
122
+
123
+ expect(helper.wording_for(:menu, :index)).to eq("List")
124
+ end
125
+
126
+ it "passes correct bindings" do
127
+ expect(helper.wording_for(:title, :edit, RailsAdmin::AbstractModel.new(Team), Team.new(:name => 'the avengers'))).to eq("Edit Team 'the avengers'")
128
+ end
129
+
130
+ it "defaults correct bindings" do
131
+ @action = RailsAdmin::Config::Actions.find :edit
132
+ @abstract_model = RailsAdmin::AbstractModel.new(Team)
133
+ @object = Team.new(:name => 'the avengers')
134
+ expect(helper.wording_for(:title)).to eq("Edit Team 'the avengers'")
135
+ end
136
+
137
+ it "does not try to use the wrong :label_metod" do
138
+ @abstract_model = RailsAdmin::AbstractModel.new(Draft)
139
+ @object = Draft.new
140
+
141
+ expect(helper.wording_for(:link, :new, RailsAdmin::AbstractModel.new(Team))).to eq("Add a new Team")
142
+ end
143
+
144
+ end
145
+
146
+ describe "#breadcrumb" do
147
+ it "gives us a breadcrumb" do
148
+ @action = RailsAdmin::Config::Actions.find(:edit, {:abstract_model => RailsAdmin::AbstractModel.new(Team), :object => Team.new(:name => 'the avengers')})
149
+ bc = helper.breadcrumb
150
+ expect(bc).to match /Dashboard/ # dashboard
151
+ expect(bc).to match /Teams/ # list
152
+ expect(bc).to match /the avengers/ # show
153
+ expect(bc).to match /Edit/ # current (edit)
154
+ end
155
+ end
156
+
157
+ describe "#menu_for" do
158
+ it "passes model and object as bindings and generates a menu, excluding non-get actions" do
159
+ RailsAdmin.config do |config|
160
+ config.actions do
161
+ dashboard
162
+ index do
163
+ visible do
164
+ bindings[:abstract_model].model == Team
165
+ end
166
+ end
167
+ show do
168
+ visible do
169
+ bindings[:object].class == Team
170
+ end
171
+ end
172
+ delete do
173
+ http_methods [:post, :put, :delete]
174
+ end
175
+ end
176
+ end
177
+
178
+ @action = RailsAdmin::Config::Actions.find :show
179
+ @abstract_model = RailsAdmin::AbstractModel.new(Team)
180
+ @object = Team.new(:name => 'the avengers')
181
+
182
+ expect(helper.menu_for(:root)).to match /Dashboard/
183
+ expect(helper.menu_for(:collection, @abstract_model)).to match /List/
184
+ expect(helper.menu_for(:member, @abstract_model, @object)).to match /Show/
185
+
186
+ @abstract_model = RailsAdmin::AbstractModel.new(Player)
187
+ @object = Player.new
188
+ expect(helper.menu_for(:collection, @abstract_model)).not_to match /List/
189
+ expect(helper.menu_for(:member, @abstract_model, @object)).not_to match /Show/
190
+ end
191
+
192
+ it "excludes non-get actions" do
193
+ RailsAdmin.config do |config|
194
+ config.actions do
195
+ dashboard do
196
+ http_methods [:post, :put, :delete]
197
+ end
198
+ end
199
+ end
200
+
201
+ @action = RailsAdmin::Config::Actions.find :dashboard
202
+ expect(helper.menu_for(:root)).not_to match /Dashboard/
203
+ end
204
+ end
205
+
206
+ describe "#main_navigation" do
207
+ it "shows included models" do
208
+ RailsAdmin.config do |config|
209
+ config.included_models = [Ball, Comment]
210
+ end
211
+ expect(helper.main_navigation).to match /(nav\-header).*(Navigation).*(Balls).*(Comments)/m
212
+ end
213
+
214
+ it "does not draw empty navigation labels" do
215
+ RailsAdmin.config do |config|
216
+ config.included_models = [Ball, Comment, Comment::Confirmed]
217
+ config.model Comment do
218
+ navigation_label 'Commentz'
219
+ end
220
+ config.model Comment::Confirmed do
221
+ label_plural 'Confirmed'
222
+ end
223
+ end
224
+ expect(helper.main_navigation).to match /(nav\-header).*(Navigation).*(Balls).*(Commentz).*(Confirmed)/m
225
+ expect(helper.main_navigation).not_to match /(nav\-header).*(Navigation).*(Balls).*(Commentz).*(Confirmed).*(Comment)/m
226
+ end
227
+
228
+ it "does not show unvisible models" do
229
+ RailsAdmin.config do |config|
230
+ config.included_models = [Ball, Comment]
231
+ config.model Comment do
232
+ hide
233
+ end
234
+ end
235
+ result = helper.main_navigation
236
+ expect(result).to match /(nav\-header).*(Navigation).*(Balls)/m
237
+ expect(result).not_to match "Comments"
238
+ end
239
+
240
+ it "shows children of hidden models" do # https://github.com/sferik/rails_admin/issues/978
241
+ RailsAdmin.config do |config|
242
+ config.included_models = [Ball, Hardball]
243
+ config.model Ball do
244
+ hide
245
+ end
246
+ end
247
+ expect(helper.main_navigation).to match /(nav\-header).*(Navigation).*(Hardballs)/m
248
+ end
249
+
250
+ it "shows children of excluded models" do
251
+ RailsAdmin.config do |config|
252
+ config.included_models = [Hardball]
253
+ end
254
+ expect(helper.main_navigation).to match /(nav\-header).*(Navigation).*(Hardballs)/m
255
+ end
256
+
257
+ it "nests in navigation label" do
258
+ RailsAdmin.config do |config|
259
+ config.included_models = [Comment]
260
+ config.model Comment do
261
+ navigation_label 'commentable'
262
+ end
263
+ end
264
+ expect(helper.main_navigation).to match /(nav\-header).*(commentable).*(Comments)/m
265
+ end
266
+
267
+ it "nests in parent model" do
268
+ RailsAdmin.config do |config|
269
+ config.included_models = [Player, Comment]
270
+ config.model Comment do
271
+ parent Player
272
+ end
273
+ end
274
+ expect(helper.main_navigation).to match /(Players).* (nav\-level\-1).*(Comments)/m
275
+ end
276
+
277
+ it "orders" do
278
+ RailsAdmin.config do |config|
279
+ config.included_models = [Player, Comment]
280
+ end
281
+ expect(helper.main_navigation).to match /(Comments).*(Players)/m
282
+
283
+ RailsAdmin.config(Comment) do
284
+ weight 1
285
+ end
286
+ expect(helper.main_navigation).to match /(Players).*(Comments)/m
287
+ end
288
+ end
289
+
290
+ describe "#static_navigation" do
291
+ it "shows not show static nav if no static links defined" do
292
+ RailsAdmin.config do |config|
293
+ config.navigation_static_links = {}
294
+ end
295
+ expect(helper.static_navigation).to be_empty
296
+ end
297
+
298
+ it "shows links if defined" do
299
+ RailsAdmin.config do |config|
300
+ config.navigation_static_links = {
301
+ 'Test Link' => 'http://www.google.com'
302
+ }
303
+ end
304
+ expect(helper.static_navigation).to match /Test Link/
305
+ end
306
+
307
+ it "shows default header if navigation_static_label not defined in config" do
308
+ RailsAdmin.config do |config|
309
+ config.navigation_static_links = {
310
+ 'Test Link' => 'http://www.google.com'
311
+ }
312
+ end
313
+ expect(helper.static_navigation).to match I18n.t('admin.misc.navigation_static_label')
314
+ end
315
+
316
+ it "shows custom header if defined" do
317
+ RailsAdmin.config do |config|
318
+ config.navigation_static_label = "Test Header"
319
+ config.navigation_static_links = {
320
+ 'Test Link' => 'http://www.google.com'
321
+ }
322
+ end
323
+ expect(helper.static_navigation).to match /Test Header/
324
+ end
325
+ end
326
+
327
+ describe "#bulk_menu" do
328
+ it "includes all visible bulkable actions" do
329
+ RailsAdmin.config do |config|
330
+ config.actions do
331
+ index
332
+ collection :zorg do
333
+ bulkable true
334
+ action_name :zorg_action
335
+ end
336
+ collection :blub do
337
+ bulkable true
338
+ visible do
339
+ bindings[:abstract_model].model == Team
340
+ end
341
+ end
342
+ end
343
+ end
344
+ @action = RailsAdmin::Config::Actions.find :index
345
+ result = helper.bulk_menu(RailsAdmin::AbstractModel.new(Team))
346
+ expect(result).to match "zorg_action"
347
+ expect(result).to match "blub"
348
+
349
+ expect(helper.bulk_menu(RailsAdmin::AbstractModel.new(Player))).not_to match "blub"
350
+ end
351
+ end
352
+ end
353
+ end
@@ -76,9 +76,9 @@ describe "RailsAdmin CanCan Authorization" do
76
76
 
77
77
  it "GET /admin should show Player but not League" do
78
78
  visit dashboard_path
79
- expect(body).to have_content("Player")
80
- expect(body).not_to have_content("League")
81
- expect(body).not_to have_content("Add new")
79
+ should have_content("Player")
80
+ should_not have_content("League")
81
+ should_not have_content("Add new")
82
82
  end
83
83
 
84
84
  it "GET /admin/player should render successfully but not list retired players and not show new, edit, or delete actions" do
@@ -132,7 +132,7 @@ describe "RailsAdmin CanCan Authorization" do
132
132
  fill_in "player[name]", :with => "Jackie Robinson"
133
133
  fill_in "player[number]", :with => "42"
134
134
  fill_in "player[position]", :with => "Second baseman"
135
- click_button "Save"
135
+ click_button "Save" # first(:button, "Save").click
136
136
  should_not have_content("Edit")
137
137
 
138
138
  @player = RailsAdmin::AbstractModel.new("Player").first
@@ -165,7 +165,7 @@ describe "RailsAdmin CanCan Authorization" do
165
165
  should_not have_content("History")
166
166
  should_not have_content("Show in app")
167
167
  fill_in "player[name]", :with => "Jackie Robinson"
168
- click_button "Save"
168
+ click_button "Save" # click_button "Save" # first(:button, "Save").click
169
169
  @player.reload
170
170
  expect(@player.name).to eq("Jackie Robinson")
171
171
  end
@@ -276,17 +276,17 @@ describe "RailsAdmin CanCan Authorization" do
276
276
  active_player = FactoryGirl.create :player, :retired => false
277
277
  retired_player = FactoryGirl.create :player, :retired => true
278
278
 
279
- page.driver.post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id)))
279
+ post bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id))
280
280
 
281
- should have_content(active_player.name)
282
- should_not have_content(retired_player.name)
281
+ expect(response.body).to include(active_player.name)
282
+ expect(response.body).not_to include(retired_player.name)
283
283
  end
284
284
 
285
285
  it "POST /admin/player/bulk_destroy should destroy records which are authorized to" do
286
286
  active_player = FactoryGirl.create :player, :retired => false
287
287
  retired_player = FactoryGirl.create :player, :retired => true
288
288
 
289
- page.driver.delete(bulk_delete_path(:model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id)))
289
+ delete bulk_delete_path(:model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id))
290
290
  expect(@player_model.get(active_player.id)).to be_nil
291
291
  expect(@player_model.get(retired_player.id)).not_to be_nil
292
292
  end
@@ -298,10 +298,10 @@ describe "RailsAdmin CanCan Authorization" do
298
298
  active_player = FactoryGirl.create :player, :retired => false
299
299
  retired_player = FactoryGirl.create :player, :retired => true
300
300
 
301
- page.driver.post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id)))
301
+ post bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id))
302
302
 
303
- should have_content(active_player.name)
304
- should_not have_content(retired_player.name)
303
+ expect(response.body).to include(active_player.name)
304
+ expect(response.body).not_to include(retired_player.name)
305
305
  end
306
306
 
307
307
  it "POST /admin/player/bulk_destroy should destroy records which are authorized to" do
@@ -309,7 +309,7 @@ describe "RailsAdmin CanCan Authorization" do
309
309
  active_player = FactoryGirl.create :player, :retired => false
310
310
  retired_player = FactoryGirl.create :player, :retired => true
311
311
 
312
- page.driver.delete(bulk_delete_path(:model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id)))
312
+ delete bulk_delete_path(:model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id))
313
313
  expect(@player_model.get(active_player.id)).to be_nil
314
314
  expect(@player_model.get(retired_player.id)).not_to be_nil
315
315
  end
@@ -10,8 +10,8 @@ describe "RailsAdmin Basic Bulk Action" do
10
10
 
11
11
  describe "bulk_delete" do
12
12
  it "shows names of to-be-deleted players" do
13
- page.driver.post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => @players.map(&:id)))
14
- @players.each { |player| should have_content(player.name) }
13
+ post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => @players.map(&:id)))
14
+ @players.each { |player| expect(response.body).to include(player.name) }
15
15
  end
16
16
  end
17
17
 
@@ -9,8 +9,13 @@ describe "RailsAdmin Basic Bulk Destroy" do
9
9
  RailsAdmin.config { |c| c.audit_with :history }
10
10
  @players = 3.times.map { FactoryGirl.create(:player) }
11
11
  @delete_ids = @players[0..1].map(&:id)
12
- page.driver.post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => @delete_ids))
13
12
 
13
+ # NOTE: This uses an internal, unsupported capybara API which could break at any moment. We
14
+ # should refactor this test so that it either A) uses capybara's supported API (only GET
15
+ # requests via visit) or B) just uses Rack::Test (and doesn't use capybara for browser
16
+ # interaction like click_button).
17
+ page.driver.browser.reset_host!
18
+ page.driver.browser.process :post, bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => @delete_ids, '_method' => 'post')
14
19
  click_button "Yes, I'm sure"
15
20
  end
16
21
 
@@ -31,7 +36,13 @@ describe "RailsAdmin Basic Bulk Destroy" do
31
36
  before do
32
37
  @players = 3.times.map { FactoryGirl.create(:player) }
33
38
  @delete_ids = @players[0..1].map(&:id)
34
- page.driver.post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => @delete_ids))
39
+
40
+ # NOTE: This uses an internal, unsupported capybara API which could break at any moment. We
41
+ # should refactor this test so that it either A) uses capybara's supported API (only GET
42
+ # requests via visit) or B) just uses Rack::Test (and doesn't use capybara for browser
43
+ # interaction like click_button).
44
+ page.driver.browser.reset_host!
45
+ page.driver.browser.process :post, bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => @delete_ids, '_method' => 'post')
35
46
  click_button "Cancel"
36
47
  end
37
48