drewda_rails_admin 0.0.1

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 (372) hide show
  1. data/Gemfile +53 -0
  2. data/LICENSE.md +20 -0
  3. data/README.md +160 -0
  4. data/Rakefile +19 -0
  5. data/app/assets/images/rails_admin/aristo/images/bg_fallback.png +0 -0
  6. data/app/assets/images/rails_admin/aristo/images/icon_sprite.png +0 -0
  7. data/app/assets/images/rails_admin/aristo/images/progress_bar.gif +0 -0
  8. data/app/assets/images/rails_admin/aristo/images/slider_handles.png +0 -0
  9. data/app/assets/images/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  10. data/app/assets/images/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  11. data/app/assets/images/rails_admin/bullet_black.png +0 -0
  12. data/app/assets/images/rails_admin/bullet_white.png +0 -0
  13. data/app/assets/images/rails_admin/calendar.png +0 -0
  14. data/app/assets/images/rails_admin/clock.png +0 -0
  15. data/app/assets/images/rails_admin/colorpicker/colorpicker_background.png +0 -0
  16. data/app/assets/images/rails_admin/colorpicker/colorpicker_hex.png +0 -0
  17. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_b.png +0 -0
  18. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_h.png +0 -0
  19. data/app/assets/images/rails_admin/colorpicker/colorpicker_hsb_s.png +0 -0
  20. data/app/assets/images/rails_admin/colorpicker/colorpicker_indic.gif +0 -0
  21. data/app/assets/images/rails_admin/colorpicker/colorpicker_overlay.png +0 -0
  22. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_b.png +0 -0
  23. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_g.png +0 -0
  24. data/app/assets/images/rails_admin/colorpicker/colorpicker_rgb_r.png +0 -0
  25. data/app/assets/images/rails_admin/colorpicker/colorpicker_select.gif +0 -0
  26. data/app/assets/images/rails_admin/colorpicker/colorpicker_submit.png +0 -0
  27. data/app/assets/images/rails_admin/colorpicker/custom_background.png +0 -0
  28. data/app/assets/images/rails_admin/colorpicker/custom_hex.png +0 -0
  29. data/app/assets/images/rails_admin/colorpicker/custom_hsb_b.png +0 -0
  30. data/app/assets/images/rails_admin/colorpicker/custom_hsb_h.png +0 -0
  31. data/app/assets/images/rails_admin/colorpicker/custom_hsb_s.png +0 -0
  32. data/app/assets/images/rails_admin/colorpicker/custom_indic.gif +0 -0
  33. data/app/assets/images/rails_admin/colorpicker/custom_rgb_b.png +0 -0
  34. data/app/assets/images/rails_admin/colorpicker/custom_rgb_g.png +0 -0
  35. data/app/assets/images/rails_admin/colorpicker/custom_rgb_r.png +0 -0
  36. data/app/assets/images/rails_admin/colorpicker/custom_submit.png +0 -0
  37. data/app/assets/images/rails_admin/colorpicker/select.png +0 -0
  38. data/app/assets/images/rails_admin/colorpicker/select2.png +0 -0
  39. data/app/assets/images/rails_admin/colorpicker/slider.png +0 -0
  40. data/app/assets/images/rails_admin/logo.png +0 -0
  41. data/app/assets/images/rails_admin/magnifier.png +0 -0
  42. data/app/assets/images/rails_admin/multiselect/icon_sprite.png +0 -0
  43. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-dark.png +0 -0
  44. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-n-light.png +0 -0
  45. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-dark.png +0 -0
  46. data/app/assets/images/rails_admin/multiselect/ui-icon-circle-triangle-s-light.png +0 -0
  47. data/app/assets/javascripts/rails_admin/custom/ui.js +12 -0
  48. data/app/assets/javascripts/rails_admin/jquery.colorpicker.js +484 -0
  49. data/app/assets/javascripts/rails_admin/jquery.pjax.js +431 -0
  50. data/app/assets/javascripts/rails_admin/jquery.ui.timepicker.js +1371 -0
  51. data/app/assets/javascripts/rails_admin/ra.datetimepicker.js +67 -0
  52. data/app/assets/javascripts/rails_admin/ra.filter-box.js +129 -0
  53. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +280 -0
  54. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +181 -0
  55. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +40 -0
  56. data/app/assets/javascripts/rails_admin/ra.remote-form.js +150 -0
  57. data/app/assets/javascripts/rails_admin/rails_admin.js.erb +25 -0
  58. data/app/assets/javascripts/rails_admin/themes/default/ui.js +12 -0
  59. data/app/assets/javascripts/rails_admin/ui.js.coffee +61 -0
  60. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  61. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  62. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  63. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  64. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  65. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  66. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.css.scss +733 -0
  67. data/app/assets/stylesheets/rails_admin/base/README +2 -0
  68. data/app/assets/stylesheets/rails_admin/base/mixins.css.scss +1 -0
  69. data/app/assets/stylesheets/rails_admin/base/theming.css.scss +263 -0
  70. data/app/assets/stylesheets/rails_admin/base/variables.css.scss +1 -0
  71. data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +12 -0
  72. data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +13 -0
  73. data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +15 -0
  74. data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +76 -0
  75. data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +180 -0
  76. data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +69 -0
  77. data/app/assets/stylesheets/rails_admin/ra.calendar-additions.css.scss +25 -0
  78. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.css.scss +85 -0
  79. data/app/assets/stylesheets/rails_admin/rails_admin.css +4 -0
  80. data/app/assets/stylesheets/rails_admin/themes/default/mixins.css.scss +8 -0
  81. data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +11 -0
  82. data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +12 -0
  83. data/app/controllers/rails_admin/application_controller.rb +82 -0
  84. data/app/controllers/rails_admin/main_controller.rb +151 -0
  85. data/app/helpers/rails_admin/application_helper.rb +123 -0
  86. data/app/helpers/rails_admin/form_builder.rb +104 -0
  87. data/app/helpers/rails_admin/main_helper.rb +36 -0
  88. data/app/views/kaminari/twitter-bootstrap/_gap.html.haml +2 -0
  89. data/app/views/kaminari/twitter-bootstrap/_next_page.html.haml +4 -0
  90. data/app/views/kaminari/twitter-bootstrap/_page.html.haml +4 -0
  91. data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +10 -0
  92. data/app/views/kaminari/twitter-bootstrap/_prev_page.html.haml +4 -0
  93. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +12 -0
  94. data/app/views/layouts/rails_admin/application.html.haml +39 -0
  95. data/app/views/rails_admin/main/_dashboard_history.html.haml +10 -0
  96. data/app/views/rails_admin/main/_delete_notice.html.haml +18 -0
  97. data/app/views/rails_admin/main/_form_colorpicker.html.haml +24 -0
  98. data/app/views/rails_admin/main/_form_datetime.html.haml +4 -0
  99. data/app/views/rails_admin/main/_form_enumeration.html.haml +4 -0
  100. data/app/views/rails_admin/main/_form_field.html.haml +1 -0
  101. data/app/views/rails_admin/main/_form_file_upload.html.haml +18 -0
  102. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +59 -0
  103. data/app/views/rails_admin/main/_form_filtering_select.html.haml +47 -0
  104. data/app/views/rails_admin/main/_form_nested_many.html.haml +41 -0
  105. data/app/views/rails_admin/main/_form_nested_one.html.haml +35 -0
  106. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +34 -0
  107. data/app/views/rails_admin/main/_form_text.html.haml +9 -0
  108. data/app/views/rails_admin/main/_submit_buttons.html.haml +15 -0
  109. data/app/views/rails_admin/main/bulk_delete.html.haml +11 -0
  110. data/app/views/rails_admin/main/dashboard.html.haml +31 -0
  111. data/app/views/rails_admin/main/delete.html.haml +18 -0
  112. data/app/views/rails_admin/main/edit.html.haml +2 -0
  113. data/app/views/rails_admin/main/export.html.haml +75 -0
  114. data/app/views/rails_admin/main/history.html.haml +42 -0
  115. data/app/views/rails_admin/main/index.html.haml +140 -0
  116. data/app/views/rails_admin/main/new.html.haml +2 -0
  117. data/app/views/rails_admin/main/show.html.haml +14 -0
  118. data/config/initializers/active_record_extensions.rb +19 -0
  119. data/config/initializers/devise_patch.rb +9 -0
  120. data/config/initializers/haml.rb +2 -0
  121. data/config/initializers/mongoid_extensions.rb +4 -0
  122. data/config/locales/fr.yml +24 -0
  123. data/config/locales/rails_admin.en.yml +130 -0
  124. data/config/routes.rb +12 -0
  125. data/lib/generators/rails_admin/install_generator.rb +84 -0
  126. data/lib/generators/rails_admin/templates/drop.rb +18 -0
  127. data/lib/generators/rails_admin/templates/initializer.erb +101 -0
  128. data/lib/generators/rails_admin/templates/migration.rb +18 -0
  129. data/lib/generators/rails_admin/uninstall_generator.rb +22 -0
  130. data/lib/generators/rails_admin/utils.rb +30 -0
  131. data/lib/rails_admin.rb +34 -0
  132. data/lib/rails_admin/abstract_model.rb +110 -0
  133. data/lib/rails_admin/adapters/active_record.rb +247 -0
  134. data/lib/rails_admin/adapters/active_record/abstract_object.rb +32 -0
  135. data/lib/rails_admin/adapters/mongoid.rb +333 -0
  136. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +32 -0
  137. data/lib/rails_admin/adapters/mongoid/extension.rb +27 -0
  138. data/lib/rails_admin/config.rb +322 -0
  139. data/lib/rails_admin/config/actions.rb +121 -0
  140. data/lib/rails_admin/config/actions/base.rb +117 -0
  141. data/lib/rails_admin/config/actions/bulk_delete.rb +55 -0
  142. data/lib/rails_admin/config/actions/dashboard.rb +44 -0
  143. data/lib/rails_admin/config/actions/delete.rb +53 -0
  144. data/lib/rails_admin/config/actions/edit.rb +60 -0
  145. data/lib/rails_admin/config/actions/export.rb +40 -0
  146. data/lib/rails_admin/config/actions/history_index.rb +38 -0
  147. data/lib/rails_admin/config/actions/history_show.rb +38 -0
  148. data/lib/rails_admin/config/actions/index.rb +85 -0
  149. data/lib/rails_admin/config/actions/new.rb +64 -0
  150. data/lib/rails_admin/config/actions/show.rb +32 -0
  151. data/lib/rails_admin/config/actions/show_in_app.rb +28 -0
  152. data/lib/rails_admin/config/configurable.rb +92 -0
  153. data/lib/rails_admin/config/fields.rb +88 -0
  154. data/lib/rails_admin/config/fields/association.rb +108 -0
  155. data/lib/rails_admin/config/fields/base.rb +281 -0
  156. data/lib/rails_admin/config/fields/factories/belongs_to_association.rb +29 -0
  157. data/lib/rails_admin/config/fields/factories/carrierwave.rb +31 -0
  158. data/lib/rails_admin/config/fields/factories/devise.rb +27 -0
  159. data/lib/rails_admin/config/fields/factories/dragonfly.rb +27 -0
  160. data/lib/rails_admin/config/fields/factories/enum.rb +11 -0
  161. data/lib/rails_admin/config/fields/factories/paperclip.rb +26 -0
  162. data/lib/rails_admin/config/fields/factories/password.rb +17 -0
  163. data/lib/rails_admin/config/fields/factories/serialized.rb +17 -0
  164. data/lib/rails_admin/config/fields/group.rb +78 -0
  165. data/lib/rails_admin/config/fields/types.rb +27 -0
  166. data/lib/rails_admin/config/fields/types/all.rb +26 -0
  167. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +41 -0
  168. data/lib/rails_admin/config/fields/types/boolean.rb +31 -0
  169. data/lib/rails_admin/config/fields/types/bson_object_id.rb +42 -0
  170. data/lib/rails_admin/config/fields/types/carrierwave.rb +31 -0
  171. data/lib/rails_admin/config/fields/types/color.rb +37 -0
  172. data/lib/rails_admin/config/fields/types/date.rb +24 -0
  173. data/lib/rails_admin/config/fields/types/datetime.rb +165 -0
  174. data/lib/rails_admin/config/fields/types/decimal.rb +14 -0
  175. data/lib/rails_admin/config/fields/types/dragonfly.rb +41 -0
  176. data/lib/rails_admin/config/fields/types/enum.rb +35 -0
  177. data/lib/rails_admin/config/fields/types/file_upload.rb +61 -0
  178. data/lib/rails_admin/config/fields/types/float.rb +14 -0
  179. data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +14 -0
  180. data/lib/rails_admin/config/fields/types/has_many_association.rb +32 -0
  181. data/lib/rails_admin/config/fields/types/has_one_association.rb +39 -0
  182. data/lib/rails_admin/config/fields/types/hidden.rb +21 -0
  183. data/lib/rails_admin/config/fields/types/integer.rb +22 -0
  184. data/lib/rails_admin/config/fields/types/mongoid_type.rb +25 -0
  185. data/lib/rails_admin/config/fields/types/paperclip.rb +28 -0
  186. data/lib/rails_admin/config/fields/types/password.rb +39 -0
  187. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +76 -0
  188. data/lib/rails_admin/config/fields/types/serialized.rb +22 -0
  189. data/lib/rails_admin/config/fields/types/string.rb +41 -0
  190. data/lib/rails_admin/config/fields/types/text.rb +36 -0
  191. data/lib/rails_admin/config/fields/types/time.rb +36 -0
  192. data/lib/rails_admin/config/fields/types/timestamp.rb +18 -0
  193. data/lib/rails_admin/config/groupable.rb +18 -0
  194. data/lib/rails_admin/config/has_fields.rb +135 -0
  195. data/lib/rails_admin/config/has_groups.rb +23 -0
  196. data/lib/rails_admin/config/hideable.rb +28 -0
  197. data/lib/rails_admin/config/model.rb +88 -0
  198. data/lib/rails_admin/config/proxyable.rb +12 -0
  199. data/lib/rails_admin/config/proxyable/proxy.rb +43 -0
  200. data/lib/rails_admin/config/sections.rb +38 -0
  201. data/lib/rails_admin/config/sections/base.rb +29 -0
  202. data/lib/rails_admin/config/sections/create.rb +11 -0
  203. data/lib/rails_admin/config/sections/edit.rb +11 -0
  204. data/lib/rails_admin/config/sections/export.rb +11 -0
  205. data/lib/rails_admin/config/sections/list.rb +27 -0
  206. data/lib/rails_admin/config/sections/nested.rb +10 -0
  207. data/lib/rails_admin/config/sections/show.rb +10 -0
  208. data/lib/rails_admin/config/sections/update.rb +10 -0
  209. data/lib/rails_admin/engine.rb +22 -0
  210. data/lib/rails_admin/extension.rb +29 -0
  211. data/lib/rails_admin/extensions/cancan.rb +5 -0
  212. data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +59 -0
  213. data/lib/rails_admin/extensions/history.rb +5 -0
  214. data/lib/rails_admin/extensions/history/auditing_adapter.rb +37 -0
  215. data/lib/rails_admin/extensions/history/history.rb +69 -0
  216. data/lib/rails_admin/extensions/paper_trail.rb +5 -0
  217. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +92 -0
  218. data/lib/rails_admin/i18n_support.rb +43 -0
  219. data/lib/rails_admin/support/core_extensions.rb +44 -0
  220. data/lib/rails_admin/support/csv_converter.rb +109 -0
  221. data/lib/rails_admin/version.rb +6 -0
  222. data/lib/tasks/prepare_ci_env.rake +27 -0
  223. data/lib/tasks/rails_admin.rake +18 -0
  224. data/spec/ci.sh +2 -0
  225. data/spec/controllers/application_controller_spec.rb +30 -0
  226. data/spec/controllers/main_controller_spec.rb +180 -0
  227. data/spec/database_helpers.rb +15 -0
  228. data/spec/dummy_app/Gemfile +58 -0
  229. data/spec/dummy_app/Rakefile +7 -0
  230. data/spec/dummy_app/app/assets/images/rails.png +0 -0
  231. data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
  232. data/spec/dummy_app/app/assets/stylesheets/application.css +13 -0
  233. data/spec/dummy_app/app/controllers/application_controller.rb +3 -0
  234. data/spec/dummy_app/app/controllers/players_controller.rb +5 -0
  235. data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
  236. data/spec/dummy_app/app/locales/models.en.yml +16 -0
  237. data/spec/dummy_app/app/models/abstract.rb +5 -0
  238. data/spec/dummy_app/app/models/article.rb +9 -0
  239. data/spec/dummy_app/app/models/author.rb +6 -0
  240. data/spec/dummy_app/app/models/ball.rb +8 -0
  241. data/spec/dummy_app/app/models/category.rb +3 -0
  242. data/spec/dummy_app/app/models/cms.rb +5 -0
  243. data/spec/dummy_app/app/models/cms/basic_page.rb +7 -0
  244. data/spec/dummy_app/app/models/cms/unscoped_page.rb +3 -0
  245. data/spec/dummy_app/app/models/comment.rb +3 -0
  246. data/spec/dummy_app/app/models/division.rb +12 -0
  247. data/spec/dummy_app/app/models/draft.rb +11 -0
  248. data/spec/dummy_app/app/models/fan.rb +5 -0
  249. data/spec/dummy_app/app/models/field_test.rb +20 -0
  250. data/spec/dummy_app/app/models/hardball.rb +2 -0
  251. data/spec/dummy_app/app/models/league.rb +10 -0
  252. data/spec/dummy_app/app/models/mongoid_field_test.rb +22 -0
  253. data/spec/dummy_app/app/models/nested_field_test.rb +6 -0
  254. data/spec/dummy_app/app/models/player.rb +23 -0
  255. data/spec/dummy_app/app/models/rel_test.rb +6 -0
  256. data/spec/dummy_app/app/models/tag.rb +7 -0
  257. data/spec/dummy_app/app/models/team.rb +25 -0
  258. data/spec/dummy_app/app/models/user.rb +21 -0
  259. data/spec/dummy_app/app/uploaders/carrierwave_uploader.rb +53 -0
  260. data/spec/dummy_app/app/views/layouts/application.html.erb +14 -0
  261. data/spec/dummy_app/app/views/players/show.html.haml +1 -0
  262. data/spec/dummy_app/config.ru +4 -0
  263. data/spec/dummy_app/config/application.rb +62 -0
  264. data/spec/dummy_app/config/boot.rb +6 -0
  265. data/spec/dummy_app/config/database.yml +25 -0
  266. data/spec/dummy_app/config/environment.rb +5 -0
  267. data/spec/dummy_app/config/environments/development.rb +37 -0
  268. data/spec/dummy_app/config/environments/production.rb +67 -0
  269. data/spec/dummy_app/config/environments/test.rb +37 -0
  270. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  271. data/spec/dummy_app/config/initializers/devise.rb +148 -0
  272. data/spec/dummy_app/config/initializers/inflections.rb +15 -0
  273. data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
  274. data/spec/dummy_app/config/initializers/rails_admin.rb +11 -0
  275. data/spec/dummy_app/config/initializers/secret_token.rb +7 -0
  276. data/spec/dummy_app/config/initializers/session_store.rb +8 -0
  277. data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
  278. data/spec/dummy_app/config/mongoid.yml +17 -0
  279. data/spec/dummy_app/config/routes.rb +10 -0
  280. data/spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb +13 -0
  281. data/spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb +19 -0
  282. data/spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb +12 -0
  283. data/spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb +20 -0
  284. data/spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb +22 -0
  285. data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +49 -0
  286. data/spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb +16 -0
  287. data/spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb +12 -0
  288. data/spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb +11 -0
  289. data/spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb +9 -0
  290. data/spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb +9 -0
  291. data/spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb +16 -0
  292. data/spec/dummy_app/db/migrate/00000000000013_add_roles_to_user.rb +9 -0
  293. data/spec/dummy_app/db/migrate/00000000000014_add_color_to_team_migration.rb +9 -0
  294. data/spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb +15 -0
  295. data/spec/dummy_app/db/migrate/20110103205808_create_comments.rb +15 -0
  296. data/spec/dummy_app/db/migrate/20110123042530_rename_histories_to_rails_admin_histories.rb +9 -0
  297. data/spec/dummy_app/db/migrate/20110224184303_create_field_tests.rb +22 -0
  298. data/spec/dummy_app/db/migrate/20110328193014_create_cms_basic_pages.rb +14 -0
  299. data/spec/dummy_app/db/migrate/20110329183136_remove_league_id_from_teams.rb +9 -0
  300. data/spec/dummy_app/db/migrate/20110607152842_add_format_to_field_test.rb +9 -0
  301. data/spec/dummy_app/db/migrate/20110714095433_create_balls.rb +12 -0
  302. data/spec/dummy_app/db/migrate/20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb +6 -0
  303. data/spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb +19 -0
  304. data/spec/dummy_app/db/migrate/20110901142530_rename_league_id_foreign_key_on_divisions.rb +5 -0
  305. data/spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb +21 -0
  306. data/spec/dummy_app/db/migrate/20110901154834_change_length_for_rails_admin_histories.rb +9 -0
  307. data/spec/dummy_app/db/migrate/20111103174459_create_unscoped_pages.rb +9 -0
  308. data/spec/dummy_app/db/migrate/20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb +7 -0
  309. data/spec/dummy_app/db/migrate/20111115041025_add_type_to_balls.rb +5 -0
  310. data/spec/dummy_app/db/migrate/20111123092549_create_nested_field_tests.rb +10 -0
  311. data/spec/dummy_app/db/migrate/20111130075338_add_dragonfly_asset_name_to_field_tests.rb +5 -0
  312. data/spec/dummy_app/db/migrate/20111215083258_create_foo_bars.rb +8 -0
  313. data/spec/dummy_app/db/migrate/20120117151733_add_custom_field_to_teams.rb +5 -0
  314. data/spec/dummy_app/db/migrate/20120118122004_add_categories.rb +7 -0
  315. data/spec/dummy_app/db/seeds.rb +18 -0
  316. data/spec/dummy_app/doc/README_FOR_APP +2 -0
  317. data/spec/dummy_app/public/404.html +26 -0
  318. data/spec/dummy_app/public/422.html +26 -0
  319. data/spec/dummy_app/public/500.html +25 -0
  320. data/spec/dummy_app/public/favicon.ico +0 -0
  321. data/spec/dummy_app/public/robots.txt +5 -0
  322. data/spec/dummy_app/public/system/dragonfly/development/2011/11/24/10_36_27_888_Pensive_Parakeet.jpg +0 -0
  323. data/spec/dummy_app/public/system/dragonfly/development/2011/11/24/10_36_27_888_Pensive_Parakeet.jpg.meta +1 -0
  324. data/spec/dummy_app/public/system/dragonfly/development/2011/11/30/08_54_39_906_Costa_Rican_Frog.jpg +0 -0
  325. data/spec/dummy_app/public/system/dragonfly/development/2011/11/30/08_54_39_906_Costa_Rican_Frog.jpg.meta +1 -0
  326. data/spec/dummy_app/public/system/paperclip_assets/1/original/Boston City Flow.jpg +0 -0
  327. data/spec/dummy_app/public/system/paperclip_assets/1/thumb/Boston City Flow.jpg +0 -0
  328. data/spec/dummy_app/public/system/paperclip_assets/3/original/Costa Rican Frog.jpg +0 -0
  329. data/spec/dummy_app/public/system/paperclip_assets/3/thumb/Costa Rican Frog.jpg +0 -0
  330. data/spec/dummy_app/public/system/paperclip_assets/6/original/liste-electorale.pdf +0 -0
  331. data/spec/dummy_app/public/system/paperclip_assets/6/thumb/liste-electorale.pdf +148 -0
  332. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/3/Boston_City_Flow.jpg +0 -0
  333. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/3/thumb_Boston_City_Flow.jpg +0 -0
  334. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/4/Costa_Rican_Frog.jpg +0 -0
  335. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/4/thumb_Costa_Rican_Frog.jpg +0 -0
  336. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/6/Pensive_Parakeet.jpg +0 -0
  337. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/6/thumb_Pensive_Parakeet.jpg +0 -0
  338. data/spec/dummy_app/script/rails +6 -0
  339. data/spec/factories.rb +89 -0
  340. data/spec/helpers/application_helper_spec.rb +277 -0
  341. data/spec/integration/authorization/cancan_spec.rb +349 -0
  342. data/spec/integration/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +25 -0
  343. data/spec/integration/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +44 -0
  344. data/spec/integration/basic/create/rails_admin_basic_create_spec.rb +154 -0
  345. data/spec/integration/basic/create/rails_admin_namespaced_model_create_spec.rb +23 -0
  346. data/spec/integration/basic/delete/rails_admin_basic_delete_spec.rb +27 -0
  347. data/spec/integration/basic/destroy/rails_admin_basic_destroy_spec.rb +56 -0
  348. data/spec/integration/basic/edit/rails_admin_basic_edit_spec.rb +109 -0
  349. data/spec/integration/basic/export/rails_admin_basic_export_spec.rb +87 -0
  350. data/spec/integration/basic/list/rails_admin_basic_list_spec.rb +392 -0
  351. data/spec/integration/basic/new/rails_admin_basic_new_spec.rb +74 -0
  352. data/spec/integration/basic/new/rails_admin_namespaced_model_new_spec.rb +31 -0
  353. data/spec/integration/basic/show/rails_admin_basic_show_spec.rb +91 -0
  354. data/spec/integration/basic/update/rails_admin_basic_update_spec.rb +219 -0
  355. data/spec/integration/config/edit/rails_admin_config_edit_spec.rb +954 -0
  356. data/spec/integration/config/list/rails_admin_config_list_spec.rb +509 -0
  357. data/spec/integration/config/show/rails_admin_config_show_spec.rb +302 -0
  358. data/spec/integration/history/rails_admin_history_spec.rb +66 -0
  359. data/spec/integration/rails_admin_spec.rb +113 -0
  360. data/spec/integration/relation_spec.rb +26 -0
  361. data/spec/spec_helper.rb +86 -0
  362. data/spec/support/tableless.rb +27 -0
  363. data/spec/unit/adapters/active_record/abstract_object_spec.rb +131 -0
  364. data/spec/unit/adapters/active_record_spec.rb +373 -0
  365. data/spec/unit/adapters/mongoid/abstract_object_spec.rb +30 -0
  366. data/spec/unit/adapters/mongoid_spec.rb +581 -0
  367. data/spec/unit/config/actions_spec.rb +181 -0
  368. data/spec/unit/config/fields/base_spec.rb +300 -0
  369. data/spec/unit/config/model_spec.rb +75 -0
  370. data/spec/unit/config/sections_spec.rb +123 -0
  371. data/spec/unit/config_spec.rb +273 -0
  372. metadata +823 -0
@@ -0,0 +1,181 @@
1
+ require 'spec_helper'
2
+
3
+ describe RailsAdmin::Config::Actions do
4
+
5
+ describe "default" do
6
+ it 'should be as before' do
7
+ RailsAdmin::Config::Actions.all.map(&:key).should == [:dashboard, :index, :show, :new, :edit, :export, :delete, :bulk_delete, :history_show, :history_index, :show_in_app]
8
+ end
9
+ end
10
+
11
+ describe 'find' do
12
+ it 'should find by custom key' do
13
+ RailsAdmin.config do |config|
14
+ config.actions do
15
+ dashboard do
16
+ custom_key :custom_dashboard
17
+ end
18
+
19
+ collection :custom_collection, :index
20
+
21
+ show
22
+ end
23
+ end
24
+
25
+ RailsAdmin::Config::Actions.find(:custom_dashboard).should be_a(RailsAdmin::Config::Actions::Dashboard)
26
+ RailsAdmin::Config::Actions.find(:custom_collection).should be_a(RailsAdmin::Config::Actions::Index)
27
+ RailsAdmin::Config::Actions.find(:show).should be_a(RailsAdmin::Config::Actions::Show)
28
+ end
29
+
30
+ it 'should return nil when no action is found by the custom key' do
31
+ RailsAdmin::Config::Actions.find(:non_existent_action_key).should be_nil
32
+ end
33
+
34
+ it 'should return visible action passing binding if controller binding is given, and pass action visible or not if no' do
35
+ RailsAdmin.config do |config|
36
+ config.actions do
37
+ root :custom_root do
38
+ visible do
39
+ bindings[:controller] == "controller"
40
+ end
41
+ end
42
+ end
43
+ end
44
+ RailsAdmin::Config::Actions.find(:custom_root).should be_a(RailsAdmin::Config::Actions::Base)
45
+ RailsAdmin::Config::Actions.find(:custom_root, {:controller => "not_controller"}).should be_nil
46
+ RailsAdmin::Config::Actions.find(:custom_root, {:controller => "controller"}).should be_a(RailsAdmin::Config::Actions::Base)
47
+ end
48
+
49
+ it 'should check bindings[:abstract_model] visibility while checking action\'s visibility' do
50
+ RailsAdmin.config Team do
51
+ hide
52
+ end
53
+
54
+ RailsAdmin::Config::Actions.find(:index, {:controller => double(:authorized? => true), :abstract_model => RailsAdmin::AbstractModel.new(Comment)}).should be_a(RailsAdmin::Config::Actions::Index) #decoy
55
+ RailsAdmin::Config::Actions.find(:index, {:controller => double(:authorized? => true), :abstract_model => RailsAdmin::AbstractModel.new(Team)}).should be_nil
56
+ end
57
+
58
+ it 'should check bindings[:abstract_model] presence while checking action\'s visibility' do
59
+ RailsAdmin.config do |config|
60
+ config.excluded_models << Team
61
+ end
62
+ RailsAdmin::Config::Actions.find(:index, {:controller => double(:authorized? => true), :abstract_model => RailsAdmin::AbstractModel.new(Comment)}).should be_a(RailsAdmin::Config::Actions::Index) #decoy
63
+ RailsAdmin::Config::Actions.find(:index, {:controller => double(:authorized? => true), :abstract_model => RailsAdmin::AbstractModel.new(Team)}).should be_nil
64
+ end
65
+ end
66
+
67
+ describe 'all' do
68
+ it 'should return all defined actions' do
69
+ RailsAdmin.config do |config|
70
+ config.actions do
71
+ dashboard
72
+ index
73
+ end
74
+ end
75
+
76
+ RailsAdmin::Config::Actions.all.map(&:key).should == [:dashboard, :index]
77
+ end
78
+
79
+ it 'should restrict by scope' do
80
+ RailsAdmin.config do |config|
81
+ config.actions do
82
+ root :custom_root
83
+ collection :custom_collection
84
+ member :custom_member
85
+ end
86
+ end
87
+ RailsAdmin::Config::Actions.all(:root).map(&:key).should == [:custom_root]
88
+ RailsAdmin::Config::Actions.all(:collection).map(&:key).should == [:custom_collection]
89
+ RailsAdmin::Config::Actions.all(:member).map(&:key).should == [:custom_member]
90
+ end
91
+
92
+ it 'should return all visible actions passing binding if controller binding is given, and pass all actions if no' do
93
+ RailsAdmin.config do |config|
94
+ config.actions do
95
+ root :custom_root do
96
+ visible do
97
+ bindings[:controller] == "controller"
98
+ end
99
+ end
100
+ end
101
+ end
102
+ RailsAdmin::Config::Actions.all(:root).map(&:custom_key).should == [:custom_root]
103
+ RailsAdmin::Config::Actions.all(:root, {:controller => "not_controller"}).map(&:custom_key).should == []
104
+ RailsAdmin::Config::Actions.all(:root, {:controller => "controller"}).map(&:custom_key).should == [:custom_root]
105
+ end
106
+ end
107
+
108
+ describe "customized through DSL" do
109
+ it 'should add the one asked' do
110
+ RailsAdmin.config do |config|
111
+ config.actions do
112
+ dashboard
113
+ index
114
+ show
115
+ end
116
+ end
117
+
118
+ RailsAdmin::Config::Actions.all.map(&:key).should == [:dashboard, :index, :show]
119
+ end
120
+
121
+ it 'should allow to customize the custom_key when customizing an existing action' do
122
+ RailsAdmin.config do |config|
123
+ config.actions do
124
+ dashboard do
125
+ custom_key :my_dashboard
126
+ end
127
+ end
128
+ end
129
+ RailsAdmin::Config::Actions.all.map(&:custom_key).should == [:my_dashboard]
130
+ RailsAdmin::Config::Actions.all.map(&:key).should == [:dashboard]
131
+ end
132
+
133
+ it 'should allow to change the key and the custom_key when "subclassing" an existing action' do
134
+ RailsAdmin.config do |config|
135
+ config.actions do
136
+ root :my_dashboard_key, :dashboard do
137
+ custom_key :my_dashboard_custom_key
138
+ end
139
+ end
140
+ end
141
+ RailsAdmin::Config::Actions.all.map(&:custom_key).should == [:my_dashboard_custom_key]
142
+ RailsAdmin::Config::Actions.all.map(&:key).should == [:my_dashboard_key]
143
+ RailsAdmin::Config::Actions.all.map(&:class).should == [RailsAdmin::Config::Actions::Dashboard]
144
+ end
145
+
146
+ it 'should not add the same custom_key twice' do
147
+ lambda do
148
+ RailsAdmin.config do |config|
149
+ config.actions do
150
+ dashboard
151
+ dashboard
152
+ end
153
+ end
154
+ end.should raise_error("Action dashboard already exist. Please change its custom key")
155
+
156
+
157
+ lambda do
158
+ RailsAdmin.config do |config|
159
+ config.actions do
160
+ index
161
+ collection :index
162
+ end
163
+ end
164
+ end.should raise_error("Action index already exist. Please change its custom key")
165
+ end
166
+
167
+ it 'should add the same key with different custom key' do
168
+ RailsAdmin.config do |config|
169
+ config.actions do
170
+ dashboard
171
+ dashboard do
172
+ custom_key :my_dashboard
173
+ end
174
+ end
175
+ end
176
+
177
+ RailsAdmin::Config::Actions.all.map(&:custom_key).should == [:dashboard, :my_dashboard]
178
+ RailsAdmin::Config::Actions.all.map(&:key).should == [:dashboard, :dashboard]
179
+ end
180
+ end
181
+ end
@@ -0,0 +1,300 @@
1
+ require 'spec_helper'
2
+
3
+ describe RailsAdmin::Config::Fields::Base do
4
+
5
+ describe "#children_fields" do
6
+
7
+ it 'should be empty by default' do
8
+ RailsAdmin.config(Team).fields.find{ |f| f.name == :name }.children_fields.should == []
9
+ end
10
+
11
+ it 'should contain child key for belongs to associations' do
12
+ RailsAdmin.config(Team).fields.find{ |f| f.name == :division }.children_fields.should == [:division_id]
13
+ end
14
+
15
+ it 'should contain child keys for polymorphic belongs to associations' do
16
+ RailsAdmin.config(Comment).fields.find{ |f| f.name == :commentable }.children_fields.should == [:commentable_id, :commentable_type]
17
+ end
18
+
19
+ it "should have correct fields when polymorphic_type column comes ahead of polymorphic foreign_key column" do
20
+ class CommentReversed < Tableless
21
+ column :commentable_type, :string
22
+ column :commentable_id, :integer
23
+ belongs_to :commentable, :polymorphic => true
24
+ end
25
+ RailsAdmin.config(CommentReversed).fields.map{|f| f.name.to_s}.sort.should == ['commentable', 'commentable_id', 'commentable_type']
26
+ end
27
+
28
+ context 'of a Paperclip installation' do
29
+ it 'should be a _file_name field' do
30
+ RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :paperclip_asset }.children_fields.should == [:paperclip_asset_file_name]
31
+ end
32
+
33
+ it 'should be hidden, not filterable' do
34
+ f = RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :paperclip_asset_file_name }
35
+ f.hidden?.should be_true
36
+ f.filterable?.should be_false
37
+ end
38
+ end
39
+
40
+ context 'of a Dragonfly installation' do
41
+ it 'should be a _name field and _uid field' do
42
+ RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :dragonfly_asset }.children_fields.should == [:dragonfly_asset_name, :dragonfly_asset_uid]
43
+ end
44
+ end
45
+
46
+ context 'of a Carrierwave installation' do
47
+ it 'should be the parent field itself' do
48
+ RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :carrierwave_asset }.children_fields.should == [:carrierwave_asset]
49
+ RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :carrierwave_asset }.hidden?.should be_false
50
+ end
51
+ end
52
+ end
53
+
54
+ describe "#html_default_value" do
55
+ it 'should be default_value for new records when value is nil' do
56
+ RailsAdmin.config Team do
57
+ list do
58
+ field :name do
59
+ default_value 'default value'
60
+ end
61
+ end
62
+ end
63
+ @team = Team.new
64
+ RailsAdmin.config('Team').list.fields.find{|f| f.name == :name}.with(:object => @team).html_default_value.should == 'default value'
65
+ @team.name = 'set value'
66
+ RailsAdmin.config('Team').list.fields.find{|f| f.name == :name}.with(:object => @team).html_default_value.should be_nil
67
+ @team = FactoryGirl.create :team
68
+ @team.name = nil
69
+ RailsAdmin.config('Team').list.fields.find{|f| f.name == :name}.with(:object => @team).html_default_value.should be_nil
70
+ end
71
+ end
72
+
73
+ describe "#default_value" do
74
+ it 'should be nil by default' do
75
+ RailsAdmin.config('Team').list.fields.find{|f| f.name == :name}.default_value.should be_nil
76
+ end
77
+ end
78
+
79
+ describe "#css_class" do
80
+ it "should have a default and be user customizable" do
81
+ RailsAdmin.config Team do
82
+ list do
83
+ field :division do
84
+ css_class "custom"
85
+ end
86
+ field :name
87
+ end
88
+ end
89
+ RailsAdmin.config('Team').list.fields.find{|f| f.name == :division}.css_class.should == "custom" # custom
90
+ RailsAdmin.config('Team').list.fields.find{|f| f.name == :division}.type_css_class.should == "belongs_to_association_type" # type css class, non-customizable
91
+ RailsAdmin.config('Team').list.fields.find{|f| f.name == :name}.css_class.should == "name_field" # default
92
+ end
93
+ end
94
+
95
+ describe "#associated_collection_cache_all" do
96
+ it "should default to true if associated collection count < 100" do
97
+ RailsAdmin.config(Team).edit.fields.find{|f| f.name == :players}.associated_collection_cache_all.should == true
98
+ end
99
+
100
+ it "should default to false if associated collection count >= 100" do
101
+ @players = 100.times.map do
102
+ FactoryGirl.create :player
103
+ end
104
+ RailsAdmin.config(Team).edit.fields.find{|f| f.name == :players}.associated_collection_cache_all.should == false
105
+ end
106
+ end
107
+
108
+ describe '#searchable_columns' do
109
+ describe 'for belongs_to fields' do
110
+ it "should find label method on the opposite side for belongs_to associations by default" do
111
+ RailsAdmin.config(Team).fields.find{|f| f.name == :division}.searchable_columns.should == [{:column=>"divisions.name", :type=>:string}, {:column=>"teams.division_id", :type=>:integer}]
112
+ end
113
+
114
+ it "should search on opposite table for belongs_to" do
115
+ RailsAdmin.config(Team) do
116
+ field :division do
117
+ searchable :custom_id
118
+ end
119
+ end
120
+ RailsAdmin.config(Team).fields.find{|f| f.name == :division}.searchable_columns.should == [{:column=>"divisions.custom_id", :type=>:integer}]
121
+ end
122
+
123
+ it "should search on asked table with model name" do
124
+ RailsAdmin.config(Team) do
125
+ field :division do
126
+ searchable League => :name
127
+ end
128
+ end
129
+ RailsAdmin.config(Team).fields.find{|f| f.name == :division}.searchable_columns.should == [{:column=>"leagues.name", :type=>:string}]
130
+ end
131
+
132
+ it "should search on asked table with table name" do
133
+ RailsAdmin.config(Team) do
134
+ field :division do
135
+ searchable :leagues => :name
136
+ end
137
+ end
138
+ RailsAdmin.config(Team).fields.find{|f| f.name == :division}.searchable_columns.should == [{:column=>"leagues.name", :type=>:string}]
139
+ end
140
+ end
141
+
142
+ describe 'for basic type fields' do
143
+
144
+ it 'should use base table and find correct column type' do
145
+ RailsAdmin.config(FieldTest).fields.find{|f| f.name == :text_field}.searchable_columns.should == [{:column=>"field_tests.text_field", :type=>:text}]
146
+ RailsAdmin.config(FieldTest).fields.find{|f| f.name == :integer_field}.searchable_columns.should == [{:column=>"field_tests.integer_field", :type=>:integer}]
147
+ end
148
+
149
+ it 'should be customizable to another field on the same table' do
150
+ RailsAdmin.config(FieldTest) do
151
+ field :time_field do
152
+ searchable :date_field
153
+ end
154
+ end
155
+ RailsAdmin.config(FieldTest).fields.find{|f| f.name == :time_field}.searchable_columns.should == [{:column=>"field_tests.date_field", :type=>:date}]
156
+ end
157
+
158
+ it 'should be customizable to another field on another table with :table_name' do
159
+ RailsAdmin.config(FieldTest) do
160
+ field :string_field do
161
+ searchable :nested_field_tests => :title
162
+ end
163
+ end
164
+ RailsAdmin.config(FieldTest).fields.find{|f| f.name == :string_field}.searchable_columns.should == [{:column=>"nested_field_tests.title", :type=>:string}]
165
+ end
166
+
167
+ it 'should be customizable to another field on another model with ModelClass' do
168
+ RailsAdmin.config(FieldTest) do
169
+ field :string_field do
170
+ searchable NestedFieldTest => :title
171
+ end
172
+ end
173
+ RailsAdmin.config(FieldTest).fields.find{|f| f.name == :string_field}.searchable_columns.should == [{:column=>"nested_field_tests.title", :type=>:string}]
174
+ end
175
+ end
176
+
177
+ describe 'for mapped fields' do
178
+
179
+ it 'should find the underlying column on the base table' do
180
+ RailsAdmin.config(FieldTest).fields.find{|f| f.name == :paperclip_asset}.searchable_columns.should == [{:column=>"field_tests.paperclip_asset_file_name", :type=>:string}]
181
+ RailsAdmin.config(FieldTest).fields.find{|f| f.name == :dragonfly_asset}.searchable_columns.should == [{:column=>"field_tests.dragonfly_asset_name", :type=>:string}]
182
+ RailsAdmin.config(FieldTest).fields.find{|f| f.name == :carrierwave_asset}.searchable_columns.should == [{:column=>"field_tests.carrierwave_asset", :type=>:string}]
183
+ end
184
+ end
185
+ end
186
+
187
+
188
+ describe "#searchable and #sortable" do
189
+ it 'should be false if column is virtual, true otherwise' do
190
+ RailsAdmin.config League do
191
+ field :virtual_column
192
+ field :name
193
+ end
194
+ @league = FactoryGirl.create :league
195
+ RailsAdmin.config('League').export.fields.find{ |f| f.name == :virtual_column }.sortable.should == false
196
+ RailsAdmin.config('League').export.fields.find{ |f| f.name == :virtual_column }.searchable.should == false
197
+ RailsAdmin.config('League').export.fields.find{ |f| f.name == :name }.sortable.should == true
198
+ RailsAdmin.config('League').export.fields.find{ |f| f.name == :name }.searchable.should == true
199
+ end
200
+
201
+ context 'of a virtual field with children fields' do
202
+ it 'should target the first children field' do
203
+ RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :paperclip_asset }.searchable.should == :paperclip_asset_file_name
204
+ RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :paperclip_asset }.sortable.should == :paperclip_asset_file_name
205
+ RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :dragonfly_asset }.searchable.should == :dragonfly_asset_name
206
+ RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :dragonfly_asset }.sortable.should == :dragonfly_asset_name
207
+ RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :carrierwave_asset }.searchable.should == :carrierwave_asset
208
+ RailsAdmin.config(FieldTest).fields.find{ |f| f.name == :carrierwave_asset }.sortable.should == :carrierwave_asset
209
+ end
210
+ end
211
+ end
212
+
213
+ describe "#virtual?" do
214
+ it 'should be true if column has no properties, false otherwise' do
215
+ RailsAdmin.config League do
216
+ field :virtual_column
217
+ field :name
218
+ end
219
+ @league = FactoryGirl.create :league
220
+ RailsAdmin.config('League').export.fields.find{ |f| f.name == :virtual_column }.virtual?.should == true
221
+ RailsAdmin.config('League').export.fields.find{ |f| f.name == :name }.virtual?.should == false
222
+ end
223
+ end
224
+
225
+ describe "#default_search_operator" do
226
+ let(:abstract_model) { RailsAdmin::AbstractModel.new('Player') }
227
+ let(:model_config) { RailsAdmin.config(abstract_model) }
228
+ let(:queryable_fields) { model_config.list.fields.select(&:queryable?) }
229
+
230
+ context "when no search operator is specified for the field" do
231
+ it "uses 'default' search operator" do
232
+ queryable_fields.should have_at_least(1).field
233
+ queryable_fields.first.search_operator.should == RailsAdmin::Config.default_search_operator
234
+ end
235
+
236
+ it "uses config.default_search_operator if set" do
237
+ RailsAdmin.config do |config|
238
+ config.default_search_operator = 'starts_with'
239
+ end
240
+ queryable_fields.should have_at_least(1).field
241
+ queryable_fields.first.search_operator.should == RailsAdmin::Config.default_search_operator
242
+ end
243
+ end
244
+
245
+ context "when search operator is specified for the field" do
246
+ it "uses specified search operator" do
247
+ RailsAdmin.config Player do
248
+ list do
249
+ fields do
250
+ search_operator "starts_with"
251
+ end
252
+ end
253
+ end
254
+ queryable_fields.should have_at_least(1).field
255
+ queryable_fields.first.search_operator.should == "starts_with"
256
+ end
257
+
258
+ it "uses specified search operator even if config.default_search_operator set" do
259
+ RailsAdmin.config do |config|
260
+ config.default_search_operator = 'starts_with'
261
+
262
+ config.model Player do
263
+ list do
264
+ fields do
265
+ search_operator "ends_with"
266
+ end
267
+ end
268
+ end
269
+ end
270
+ queryable_fields.should have_at_least(1).field
271
+ queryable_fields.first.search_operator.should == "ends_with"
272
+ end
273
+ end
274
+ end
275
+
276
+ describe "#render" do
277
+ it "is configurable" do
278
+ RailsAdmin.config Team do
279
+ field :name do
280
+ render do
281
+ 'rendered'
282
+ end
283
+ end
284
+ end
285
+ RailsAdmin.config(Team).field(:name).render.should == 'rendered'
286
+ end
287
+ end
288
+
289
+ describe '#active' do
290
+ it 'is false by default' do
291
+ RailsAdmin.config(Team).field(:division).active?.should be_false
292
+ end
293
+ end
294
+
295
+ describe '#associated_collection' do
296
+ it 'returns [] when type is blank?' do
297
+ RailsAdmin.config(Comment).fields.find{|f|f.name == :commentable}.associated_collection('').should be_empty
298
+ end
299
+ end
300
+ end