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
@@ -1,328 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe RailsAdmin::ApplicationHelper do
4
-
5
- before do
6
- controller.stub(:authorized?).and_return(true)
7
- end
8
-
9
- describe "#current_action?" do
10
- it "returns true if current_action, false otherwise" do
11
- @action = RailsAdmin::Config::Actions.find(:index)
12
-
13
- expect(helper.current_action?(RailsAdmin::Config::Actions.find(:index))).to be_true
14
- expect(helper.current_action?(RailsAdmin::Config::Actions.find(:show))).not_to be_true
15
- end
16
- end
17
-
18
- describe "#action" do
19
- it "returns action by :custom_key" do
20
- RailsAdmin.config do |config|
21
- config.actions do
22
- dashboard do
23
- custom_key :my_custom_dashboard_key
24
- end
25
- end
26
- end
27
- expect(helper.action(:my_custom_dashboard_key)).to be
28
- end
29
-
30
- it "returns only visible actions" do
31
- RailsAdmin.config do |config|
32
- config.actions do
33
- dashboard do
34
- visible false
35
- end
36
- end
37
- end
38
-
39
- expect(helper.action(:dashboard)).to be_nil
40
- end
41
-
42
- it "returns only visible actions, passing all bindings" do
43
- RailsAdmin.config do |config|
44
- config.actions do
45
- member :test_bindings do
46
- visible do
47
- bindings[:controller].is_a?(ActionView::TestCase::TestController) and
48
- bindings[:abstract_model].model == Team and
49
- bindings[:object].is_a? Team
50
- end
51
- end
52
- end
53
- end
54
- expect(helper.action(:test_bindings, RailsAdmin::AbstractModel.new(Team), Team.new)).to be
55
- expect(helper.action(:test_bindings, RailsAdmin::AbstractModel.new(Team), Player.new)).to be_nil
56
- expect(helper.action(:test_bindings, RailsAdmin::AbstractModel.new(Player), Team.new)).to be_nil
57
- end
58
- end
59
-
60
- describe "#actions" do
61
- it "returns actions by type" do
62
- abstract_model = RailsAdmin::AbstractModel.new(Player)
63
- object = FactoryGirl.create :player
64
- 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])
65
- expect(helper.actions(:root, abstract_model, object).map(&:custom_key)).to eq([:dashboard])
66
- expect(helper.actions(:collection, abstract_model, object).map(&:custom_key)).to eq([:index, :new, :export, :bulk_delete, :history_index])
67
- expect(helper.actions(:member, abstract_model, object).map(&:custom_key)).to eq([:show, :edit, :delete, :history_show, :show_in_app])
68
- end
69
-
70
- it "only returns visible actions, passing bindings correctly" do
71
- RailsAdmin.config do |config|
72
- config.actions do
73
- member :test_bindings do
74
- visible do
75
- bindings[:controller].is_a?(ActionView::TestCase::TestController) and
76
- bindings[:abstract_model].model == Team and
77
- bindings[:object].is_a? Team
78
- end
79
- end
80
- end
81
- end
82
-
83
- expect(helper.actions(:all, RailsAdmin::AbstractModel.new(Team), Team.new).map(&:custom_key)).to eq([:test_bindings])
84
- expect(helper.actions(:all, RailsAdmin::AbstractModel.new(Team), Player.new).map(&:custom_key)).to eq([])
85
- expect(helper.actions(:all, RailsAdmin::AbstractModel.new(Player), Team.new).map(&:custom_key)).to eq([])
86
- end
87
- end
88
-
89
- describe "#wording_for" do
90
- it "gives correct wording even if action is not visible" do
91
- RailsAdmin.config do |config|
92
- config.actions do
93
- index do
94
- visible false
95
- end
96
- end
97
- end
98
-
99
- expect(helper.wording_for(:menu, :index)).to eq("List")
100
- end
101
-
102
- it "passes correct bindings" do
103
- expect(helper.wording_for(:title, :edit, RailsAdmin::AbstractModel.new(Team), Team.new(:name => 'the avengers'))).to eq("Edit Team 'the avengers'")
104
- end
105
-
106
- it "defaults correct bindings" do
107
- @action = RailsAdmin::Config::Actions.find :edit
108
- @abstract_model = RailsAdmin::AbstractModel.new(Team)
109
- @object = Team.new(:name => 'the avengers')
110
- expect(helper.wording_for(:title)).to eq("Edit Team 'the avengers'")
111
- end
112
-
113
- it "does not try to use the wrong :label_metod" do
114
- @abstract_model = RailsAdmin::AbstractModel.new(Draft)
115
- @object = Draft.new
116
-
117
- expect(helper.wording_for(:link, :new, RailsAdmin::AbstractModel.new(Team))).to eq("Add a new Team")
118
- end
119
-
120
- end
121
-
122
- describe "#breadcrumb" do
123
- it "gives us a breadcrumb" do
124
- @action = RailsAdmin::Config::Actions.find(:edit, {:abstract_model => RailsAdmin::AbstractModel.new(Team), :object => Team.new(:name => 'the avengers')})
125
- bc = helper.breadcrumb
126
- expect(bc).to match /Dashboard/ # dashboard
127
- expect(bc).to match /Teams/ # list
128
- expect(bc).to match /the avengers/ # show
129
- expect(bc).to match /Edit/ # current (edit)
130
- end
131
- end
132
-
133
- describe "#menu_for" do
134
- it "passes model and object as bindings and generates a menu, excluding non-get actions" do
135
- RailsAdmin.config do |config|
136
- config.actions do
137
- dashboard
138
- index do
139
- visible do
140
- bindings[:abstract_model].model == Team
141
- end
142
- end
143
- show do
144
- visible do
145
- bindings[:object].class == Team
146
- end
147
- end
148
- delete do
149
- http_methods [:post, :put, :delete]
150
- end
151
- end
152
- end
153
-
154
- @action = RailsAdmin::Config::Actions.find :show
155
- @abstract_model = RailsAdmin::AbstractModel.new(Team)
156
- @object = Team.new(:name => 'the avengers')
157
-
158
- expect(helper.menu_for(:root)).to match /Dashboard/
159
- expect(helper.menu_for(:collection, @abstract_model)).to match /List/
160
- expect(helper.menu_for(:member, @abstract_model, @object)).to match /Show/
161
-
162
- @abstract_model = RailsAdmin::AbstractModel.new(Player)
163
- @object = Player.new
164
- expect(helper.menu_for(:collection, @abstract_model)).not_to match /List/
165
- expect(helper.menu_for(:member, @abstract_model, @object)).not_to match /Show/
166
- end
167
-
168
- it "excludes non-get actions" do
169
- RailsAdmin.config do |config|
170
- config.actions do
171
- dashboard do
172
- http_methods [:post, :put, :delete]
173
- end
174
- end
175
- end
176
-
177
- @action = RailsAdmin::Config::Actions.find :dashboard
178
- expect(helper.menu_for(:root)).not_to match /Dashboard/
179
- end
180
- end
181
-
182
- describe "#main_navigation" do
183
- it "shows included models" do
184
- RailsAdmin.config do |config|
185
- config.included_models = [Ball, Comment]
186
- end
187
- expect(helper.main_navigation).to match /(nav\-header).*(Navigation).*(Balls).*(Comments)/m
188
- end
189
-
190
- it "does not draw empty navigation labels" do
191
- RailsAdmin.config do |config|
192
- config.included_models = [Ball, Comment, Comment::Confirmed]
193
- config.model Comment do
194
- navigation_label 'Commentz'
195
- end
196
- config.model Comment::Confirmed do
197
- label_plural 'Confirmed'
198
- end
199
- end
200
- expect(helper.main_navigation).to match /(nav\-header).*(Navigation).*(Balls).*(Commentz).*(Confirmed)/m
201
- expect(helper.main_navigation).not_to match /(nav\-header).*(Navigation).*(Balls).*(Commentz).*(Confirmed).*(Comment)/m
202
- end
203
-
204
- it "does not show unvisible models" do
205
- RailsAdmin.config do |config|
206
- config.included_models = [Ball, Comment]
207
- config.model Comment do
208
- hide
209
- end
210
- end
211
- result = helper.main_navigation
212
- expect(result).to match /(nav\-header).*(Navigation).*(Balls)/m
213
- expect(result).not_to match "Comments"
214
- end
215
-
216
- it "shows children of hidden models" do # https://github.com/sferik/rails_admin/issues/978
217
- RailsAdmin.config do |config|
218
- config.included_models = [Ball, Hardball]
219
- config.model Ball do
220
- hide
221
- end
222
- end
223
- expect(helper.main_navigation).to match /(nav\-header).*(Navigation).*(Hardballs)/m
224
- end
225
-
226
- it "shows children of excluded models" do
227
- RailsAdmin.config do |config|
228
- config.included_models = [Hardball]
229
- end
230
- expect(helper.main_navigation).to match /(nav\-header).*(Navigation).*(Hardballs)/m
231
- end
232
-
233
- it "nests in navigation label" do
234
- RailsAdmin.config do |config|
235
- config.included_models = [Comment]
236
- config.model Comment do
237
- navigation_label 'commentable'
238
- end
239
- end
240
- expect(helper.main_navigation).to match /(nav\-header).*(commentable).*(Comments)/m
241
- end
242
-
243
- it "nests in parent model" do
244
- RailsAdmin.config do |config|
245
- config.included_models = [Player, Comment]
246
- config.model Comment do
247
- parent Player
248
- end
249
- end
250
- expect(helper.main_navigation).to match /(Players).* (nav\-level\-1).*(Comments)/m
251
- end
252
-
253
- it "orders" do
254
- RailsAdmin.config do |config|
255
- config.included_models = [Player, Comment]
256
- end
257
- expect(helper.main_navigation).to match /(Comments).*(Players)/m
258
-
259
- RailsAdmin.config(Comment) do
260
- weight 1
261
- end
262
- expect(helper.main_navigation).to match /(Players).*(Comments)/m
263
- end
264
- end
265
-
266
- describe "#static_navigation" do
267
- it "shows not show static nav if no static links defined" do
268
- RailsAdmin.config do |config|
269
- config.navigation_static_links = {}
270
- end
271
- expect(helper.static_navigation).to be_empty
272
- end
273
-
274
- it "shows links if defined" do
275
- RailsAdmin.config do |config|
276
- config.navigation_static_links = {
277
- 'Test Link' => 'http://www.google.com'
278
- }
279
- end
280
- expect(helper.static_navigation).to match /Test Link/
281
- end
282
-
283
- it "shows default header if navigation_static_label not defined in config" do
284
- RailsAdmin.config do |config|
285
- config.navigation_static_links = {
286
- 'Test Link' => 'http://www.google.com'
287
- }
288
- end
289
- expect(helper.static_navigation).to match I18n.t('admin.misc.navigation_static_label')
290
- end
291
-
292
- it "shows custom header if defined" do
293
- RailsAdmin.config do |config|
294
- config.navigation_static_label = "Test Header"
295
- config.navigation_static_links = {
296
- 'Test Link' => 'http://www.google.com'
297
- }
298
- end
299
- expect(helper.static_navigation).to match /Test Header/
300
- end
301
- end
302
-
303
- describe "#bulk_menu" do
304
- it "includes all visible bulkable actions" do
305
- RailsAdmin.config do |config|
306
- config.actions do
307
- index
308
- collection :zorg do
309
- bulkable true
310
- action_name :zorg_action
311
- end
312
- collection :blub do
313
- bulkable true
314
- visible do
315
- bindings[:abstract_model].model == Team
316
- end
317
- end
318
- end
319
- end
320
- @action = RailsAdmin::Config::Actions.find :index
321
- result = helper.bulk_menu(RailsAdmin::AbstractModel.new(Team))
322
- expect(result).to match "zorg_action"
323
- expect(result).to match "blub"
324
-
325
- expect(helper.bulk_menu(RailsAdmin::AbstractModel.new(Player))).not_to match "blub"
326
- end
327
- end
328
- end