rails_admin-lbgraham 0.4.2

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 (416) hide show
  1. data/Gemfile +51 -0
  2. data/LICENSE.md +20 -0
  3. data/README.md +175 -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 +743 -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 +142 -0
  53. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +292 -0
  54. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +190 -0
  55. data/app/assets/javascripts/rails_admin/ra.nested-form-hooks.coffee +41 -0
  56. data/app/assets/javascripts/rails_admin/ra.remote-form.js +151 -0
  57. data/app/assets/javascripts/rails_admin/ra.widgets.coffee +210 -0
  58. data/app/assets/javascripts/rails_admin/rails_admin.js.erb +28 -0
  59. data/app/assets/javascripts/rails_admin/themes/cerulean/ui.js +0 -0
  60. data/app/assets/javascripts/rails_admin/themes/default/ui.js +12 -0
  61. data/app/assets/javascripts/rails_admin/ui.js.coffee +66 -0
  62. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  63. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  64. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  65. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  66. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  67. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  68. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.css.scss +733 -0
  69. data/app/assets/stylesheets/rails_admin/base/README.txt +2 -0
  70. data/app/assets/stylesheets/rails_admin/base/mixins.css.scss +1 -0
  71. data/app/assets/stylesheets/rails_admin/base/theming.css.scss +270 -0
  72. data/app/assets/stylesheets/rails_admin/base/variables.css.scss +1 -0
  73. data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +12 -0
  74. data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +13 -0
  75. data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +15 -0
  76. data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +82 -0
  77. data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +182 -0
  78. data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +69 -0
  79. data/app/assets/stylesheets/rails_admin/ra.calendar-additions.css.scss +25 -0
  80. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.css.scss +90 -0
  81. data/app/assets/stylesheets/rails_admin/ra.widgets.css.scss +8 -0
  82. data/app/assets/stylesheets/rails_admin/rails_admin.css +4 -0
  83. data/app/assets/stylesheets/rails_admin/themes/cerulean/mixins.css.scss +0 -0
  84. data/app/assets/stylesheets/rails_admin/themes/cerulean/theming.css.scss +97 -0
  85. data/app/assets/stylesheets/rails_admin/themes/cerulean/variables.css.scss +168 -0
  86. data/app/assets/stylesheets/rails_admin/themes/default/mixins.css.scss +8 -0
  87. data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +11 -0
  88. data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +12 -0
  89. data/app/controllers/rails_admin/application_controller.rb +84 -0
  90. data/app/controllers/rails_admin/main_controller.rb +153 -0
  91. data/app/helpers/rails_admin/application_helper.rb +147 -0
  92. data/app/helpers/rails_admin/form_builder.rb +117 -0
  93. data/app/helpers/rails_admin/main_helper.rb +36 -0
  94. data/app/views/kaminari/twitter-bootstrap/_gap.html.haml +2 -0
  95. data/app/views/kaminari/twitter-bootstrap/_next_page.html.haml +4 -0
  96. data/app/views/kaminari/twitter-bootstrap/_page.html.haml +4 -0
  97. data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +10 -0
  98. data/app/views/kaminari/twitter-bootstrap/_prev_page.html.haml +4 -0
  99. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +12 -0
  100. data/app/views/layouts/rails_admin/application.html.haml +27 -0
  101. data/app/views/layouts/rails_admin/pjax.html.haml +16 -0
  102. data/app/views/rails_admin/main/_dashboard_history.html.haml +20 -0
  103. data/app/views/rails_admin/main/_delete_notice.html.haml +19 -0
  104. data/app/views/rails_admin/main/_form_colorpicker.html.haml +1 -0
  105. data/app/views/rails_admin/main/_form_datetime.html.haml +1 -0
  106. data/app/views/rails_admin/main/_form_enumeration.html.haml +18 -0
  107. data/app/views/rails_admin/main/_form_field.html.haml +1 -0
  108. data/app/views/rails_admin/main/_form_file_upload.html.haml +13 -0
  109. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +47 -0
  110. data/app/views/rails_admin/main/_form_filtering_select.html.haml +37 -0
  111. data/app/views/rails_admin/main/_form_nested_many.html.haml +14 -0
  112. data/app/views/rails_admin/main/_form_nested_one.html.haml +10 -0
  113. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +10 -0
  114. data/app/views/rails_admin/main/_form_text.html.haml +31 -0
  115. data/app/views/rails_admin/main/_submit_buttons.html.haml +15 -0
  116. data/app/views/rails_admin/main/bulk_delete.html.haml +11 -0
  117. data/app/views/rails_admin/main/dashboard.html.haml +35 -0
  118. data/app/views/rails_admin/main/delete.html.haml +18 -0
  119. data/app/views/rails_admin/main/edit.html.haml +2 -0
  120. data/app/views/rails_admin/main/export.html.haml +75 -0
  121. data/app/views/rails_admin/main/history.html.haml +49 -0
  122. data/app/views/rails_admin/main/index.html.haml +140 -0
  123. data/app/views/rails_admin/main/new.html.haml +2 -0
  124. data/app/views/rails_admin/main/show.html.haml +16 -0
  125. data/config/initializers/active_record_extensions.rb +19 -0
  126. data/config/initializers/devise_patch.rb +9 -0
  127. data/config/initializers/haml.rb +2 -0
  128. data/config/initializers/mongoid_extensions.rb +4 -0
  129. data/config/locales/rails_admin.en.yml +130 -0
  130. data/config/routes.rb +12 -0
  131. data/lib/generators/rails_admin/install_generator.rb +85 -0
  132. data/lib/generators/rails_admin/templates/drop.rb +18 -0
  133. data/lib/generators/rails_admin/templates/initializer.erb +100 -0
  134. data/lib/generators/rails_admin/templates/migration.rb +18 -0
  135. data/lib/generators/rails_admin/uninstall_generator.rb +22 -0
  136. data/lib/generators/rails_admin/utils.rb +30 -0
  137. data/lib/rails_admin.rb +34 -0
  138. data/lib/rails_admin/abstract_model.rb +128 -0
  139. data/lib/rails_admin/adapters/active_record.rb +296 -0
  140. data/lib/rails_admin/adapters/active_record/abstract_object.rb +32 -0
  141. data/lib/rails_admin/adapters/mongoid.rb +430 -0
  142. data/lib/rails_admin/adapters/mongoid/abstract_object.rb +43 -0
  143. data/lib/rails_admin/adapters/mongoid/extension.rb +45 -0
  144. data/lib/rails_admin/config.rb +333 -0
  145. data/lib/rails_admin/config/actions.rb +121 -0
  146. data/lib/rails_admin/config/actions/base.rb +132 -0
  147. data/lib/rails_admin/config/actions/bulk_delete.rb +55 -0
  148. data/lib/rails_admin/config/actions/dashboard.rb +52 -0
  149. data/lib/rails_admin/config/actions/delete.rb +56 -0
  150. data/lib/rails_admin/config/actions/edit.rb +55 -0
  151. data/lib/rails_admin/config/actions/export.rb +40 -0
  152. data/lib/rails_admin/config/actions/history_index.rb +38 -0
  153. data/lib/rails_admin/config/actions/history_show.rb +38 -0
  154. data/lib/rails_admin/config/actions/index.rb +85 -0
  155. data/lib/rails_admin/config/actions/new.rb +65 -0
  156. data/lib/rails_admin/config/actions/show.rb +34 -0
  157. data/lib/rails_admin/config/actions/show_in_app.rb +27 -0
  158. data/lib/rails_admin/config/configurable.rb +92 -0
  159. data/lib/rails_admin/config/fields.rb +87 -0
  160. data/lib/rails_admin/config/fields/association.rb +107 -0
  161. data/lib/rails_admin/config/fields/base.rb +320 -0
  162. data/lib/rails_admin/config/fields/factories/association.rb +32 -0
  163. data/lib/rails_admin/config/fields/factories/carrierwave.rb +31 -0
  164. data/lib/rails_admin/config/fields/factories/devise.rb +27 -0
  165. data/lib/rails_admin/config/fields/factories/dragonfly.rb +27 -0
  166. data/lib/rails_admin/config/fields/factories/enum.rb +11 -0
  167. data/lib/rails_admin/config/fields/factories/paperclip.rb +26 -0
  168. data/lib/rails_admin/config/fields/factories/password.rb +17 -0
  169. data/lib/rails_admin/config/fields/group.rb +78 -0
  170. data/lib/rails_admin/config/fields/types.rb +27 -0
  171. data/lib/rails_admin/config/fields/types/all.rb +25 -0
  172. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +41 -0
  173. data/lib/rails_admin/config/fields/types/boolean.rb +38 -0
  174. data/lib/rails_admin/config/fields/types/bson_object_id.rb +45 -0
  175. data/lib/rails_admin/config/fields/types/carrierwave.rb +31 -0
  176. data/lib/rails_admin/config/fields/types/color.rb +37 -0
  177. data/lib/rails_admin/config/fields/types/date.rb +24 -0
  178. data/lib/rails_admin/config/fields/types/datetime.rb +164 -0
  179. data/lib/rails_admin/config/fields/types/decimal.rb +14 -0
  180. data/lib/rails_admin/config/fields/types/dragonfly.rb +41 -0
  181. data/lib/rails_admin/config/fields/types/enum.rb +39 -0
  182. data/lib/rails_admin/config/fields/types/file_upload.rb +65 -0
  183. data/lib/rails_admin/config/fields/types/float.rb +14 -0
  184. data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +14 -0
  185. data/lib/rails_admin/config/fields/types/has_many_association.rb +32 -0
  186. data/lib/rails_admin/config/fields/types/has_one_association.rb +39 -0
  187. data/lib/rails_admin/config/fields/types/hidden.rb +27 -0
  188. data/lib/rails_admin/config/fields/types/integer.rb +22 -0
  189. data/lib/rails_admin/config/fields/types/paperclip.rb +28 -0
  190. data/lib/rails_admin/config/fields/types/password.rb +39 -0
  191. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +80 -0
  192. data/lib/rails_admin/config/fields/types/serialized.rb +22 -0
  193. data/lib/rails_admin/config/fields/types/string.rb +43 -0
  194. data/lib/rails_admin/config/fields/types/text.rb +97 -0
  195. data/lib/rails_admin/config/fields/types/time.rb +36 -0
  196. data/lib/rails_admin/config/fields/types/timestamp.rb +18 -0
  197. data/lib/rails_admin/config/groupable.rb +18 -0
  198. data/lib/rails_admin/config/has_fields.rb +136 -0
  199. data/lib/rails_admin/config/has_groups.rb +23 -0
  200. data/lib/rails_admin/config/hideable.rb +28 -0
  201. data/lib/rails_admin/config/lazy_model.rb +21 -0
  202. data/lib/rails_admin/config/model.rb +109 -0
  203. data/lib/rails_admin/config/proxyable.rb +12 -0
  204. data/lib/rails_admin/config/proxyable/proxy.rb +43 -0
  205. data/lib/rails_admin/config/sections.rb +39 -0
  206. data/lib/rails_admin/config/sections/base.rb +46 -0
  207. data/lib/rails_admin/config/sections/create.rb +11 -0
  208. data/lib/rails_admin/config/sections/edit.rb +11 -0
  209. data/lib/rails_admin/config/sections/export.rb +11 -0
  210. data/lib/rails_admin/config/sections/list.rb +27 -0
  211. data/lib/rails_admin/config/sections/modal.rb +10 -0
  212. data/lib/rails_admin/config/sections/nested.rb +10 -0
  213. data/lib/rails_admin/config/sections/show.rb +10 -0
  214. data/lib/rails_admin/config/sections/update.rb +10 -0
  215. data/lib/rails_admin/engine.rb +27 -0
  216. data/lib/rails_admin/extension.rb +29 -0
  217. data/lib/rails_admin/extensions/cancan.rb +5 -0
  218. data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +59 -0
  219. data/lib/rails_admin/extensions/history.rb +5 -0
  220. data/lib/rails_admin/extensions/history/auditing_adapter.rb +37 -0
  221. data/lib/rails_admin/extensions/history/history.rb +36 -0
  222. data/lib/rails_admin/extensions/paper_trail.rb +5 -0
  223. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +93 -0
  224. data/lib/rails_admin/i18n_support.rb +43 -0
  225. data/lib/rails_admin/support/core_extensions.rb +44 -0
  226. data/lib/rails_admin/support/csv_converter.rb +105 -0
  227. data/lib/rails_admin/version.rb +18 -0
  228. data/lib/tasks/rails_admin.rake +48 -0
  229. data/spec/ci.sh +2 -0
  230. data/spec/controllers/rails_admin/application_controller_spec.rb +30 -0
  231. data/spec/controllers/rails_admin/main_controller_spec.rb +337 -0
  232. data/spec/dummy_app/Gemfile +48 -0
  233. data/spec/dummy_app/Rakefile +7 -0
  234. data/spec/dummy_app/app/active_record/abstract.rb +5 -0
  235. data/spec/dummy_app/app/active_record/another_field_test.rb +4 -0
  236. data/spec/dummy_app/app/active_record/ball.rb +9 -0
  237. data/spec/dummy_app/app/active_record/carrierwave_uploader.rb +53 -0
  238. data/spec/dummy_app/app/active_record/category.rb +5 -0
  239. data/spec/dummy_app/app/active_record/cms.rb +5 -0
  240. data/spec/dummy_app/app/active_record/cms/basic_page.rb +9 -0
  241. data/spec/dummy_app/app/active_record/cms/unscoped_page.rb +3 -0
  242. data/spec/dummy_app/app/active_record/comment.rb +5 -0
  243. data/spec/dummy_app/app/active_record/comment/confirmed.rb +3 -0
  244. data/spec/dummy_app/app/active_record/division.rb +15 -0
  245. data/spec/dummy_app/app/active_record/draft.rb +13 -0
  246. data/spec/dummy_app/app/active_record/fan.rb +7 -0
  247. data/spec/dummy_app/app/active_record/field_test.rb +19 -0
  248. data/spec/dummy_app/app/active_record/hardball.rb +2 -0
  249. data/spec/dummy_app/app/active_record/image.rb +6 -0
  250. data/spec/dummy_app/app/active_record/league.rb +12 -0
  251. data/spec/dummy_app/app/active_record/nested_field_test.rb +8 -0
  252. data/spec/dummy_app/app/active_record/player.rb +27 -0
  253. data/spec/dummy_app/app/active_record/team.rb +28 -0
  254. data/spec/dummy_app/app/active_record/user.rb +25 -0
  255. data/spec/dummy_app/app/assets/images/rails.png +0 -0
  256. data/spec/dummy_app/app/assets/javascripts/application.js +15 -0
  257. data/spec/dummy_app/app/assets/stylesheets/application.css +13 -0
  258. data/spec/dummy_app/app/controllers/application_controller.rb +3 -0
  259. data/spec/dummy_app/app/controllers/players_controller.rb +5 -0
  260. data/spec/dummy_app/app/locales/models.en.yml +20 -0
  261. data/spec/dummy_app/app/mongoid/another_field_test.rb +6 -0
  262. data/spec/dummy_app/app/mongoid/ball.rb +14 -0
  263. data/spec/dummy_app/app/mongoid/carrierwave_uploader.rb +53 -0
  264. data/spec/dummy_app/app/mongoid/category.rb +7 -0
  265. data/spec/dummy_app/app/mongoid/cms.rb +5 -0
  266. data/spec/dummy_app/app/mongoid/cms/basic_page.rb +12 -0
  267. data/spec/dummy_app/app/mongoid/cms/unscoped_page.rb +5 -0
  268. data/spec/dummy_app/app/mongoid/comment.rb +9 -0
  269. data/spec/dummy_app/app/mongoid/comment/confirmed.rb +3 -0
  270. data/spec/dummy_app/app/mongoid/division.rb +14 -0
  271. data/spec/dummy_app/app/mongoid/draft.rb +22 -0
  272. data/spec/dummy_app/app/mongoid/embed.rb +6 -0
  273. data/spec/dummy_app/app/mongoid/fan.rb +12 -0
  274. data/spec/dummy_app/app/mongoid/field_test.rb +57 -0
  275. data/spec/dummy_app/app/mongoid/hardball.rb +2 -0
  276. data/spec/dummy_app/app/mongoid/image.rb +9 -0
  277. data/spec/dummy_app/app/mongoid/league.rb +16 -0
  278. data/spec/dummy_app/app/mongoid/nested_field_test.rb +13 -0
  279. data/spec/dummy_app/app/mongoid/player.rb +41 -0
  280. data/spec/dummy_app/app/mongoid/team.rb +47 -0
  281. data/spec/dummy_app/app/mongoid/user.rb +61 -0
  282. data/spec/dummy_app/app/views/layouts/application.html.erb +14 -0
  283. data/spec/dummy_app/app/views/players/show.html.haml +1 -0
  284. data/spec/dummy_app/config.ru +4 -0
  285. data/spec/dummy_app/config/application.rb +69 -0
  286. data/spec/dummy_app/config/boot.rb +9 -0
  287. data/spec/dummy_app/config/database.yml +25 -0
  288. data/spec/dummy_app/config/environment.rb +5 -0
  289. data/spec/dummy_app/config/environments/development.rb +37 -0
  290. data/spec/dummy_app/config/environments/production.rb +67 -0
  291. data/spec/dummy_app/config/environments/test.rb +37 -0
  292. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  293. data/spec/dummy_app/config/initializers/devise.rb +216 -0
  294. data/spec/dummy_app/config/initializers/dragonfly.rb +11 -0
  295. data/spec/dummy_app/config/initializers/inflections.rb +15 -0
  296. data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
  297. data/spec/dummy_app/config/initializers/rails_admin.rb +8 -0
  298. data/spec/dummy_app/config/initializers/secret_token.rb +7 -0
  299. data/spec/dummy_app/config/initializers/session_patch.rb +16 -0
  300. data/spec/dummy_app/config/initializers/session_store.rb +8 -0
  301. data/spec/dummy_app/config/initializers/strong_parameters.rb +2 -0
  302. data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
  303. data/spec/dummy_app/config/locales/fr.yml +24 -0
  304. data/spec/dummy_app/config/mongoid.yml +22 -0
  305. data/spec/dummy_app/config/routes.rb +10 -0
  306. data/spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb +13 -0
  307. data/spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb +19 -0
  308. data/spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb +12 -0
  309. data/spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb +20 -0
  310. data/spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb +22 -0
  311. data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +49 -0
  312. data/spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb +16 -0
  313. data/spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb +12 -0
  314. data/spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb +11 -0
  315. data/spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb +9 -0
  316. data/spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb +9 -0
  317. data/spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb +16 -0
  318. data/spec/dummy_app/db/migrate/00000000000013_add_roles_to_user.rb +9 -0
  319. data/spec/dummy_app/db/migrate/00000000000014_add_color_to_team_migration.rb +9 -0
  320. data/spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb +15 -0
  321. data/spec/dummy_app/db/migrate/20110103205808_create_comments.rb +15 -0
  322. data/spec/dummy_app/db/migrate/20110123042530_rename_histories_to_rails_admin_histories.rb +9 -0
  323. data/spec/dummy_app/db/migrate/20110224184303_create_field_tests.rb +22 -0
  324. data/spec/dummy_app/db/migrate/20110328193014_create_cms_basic_pages.rb +14 -0
  325. data/spec/dummy_app/db/migrate/20110329183136_remove_league_id_from_teams.rb +9 -0
  326. data/spec/dummy_app/db/migrate/20110607152842_add_format_to_field_test.rb +9 -0
  327. data/spec/dummy_app/db/migrate/20110714095433_create_balls.rb +12 -0
  328. data/spec/dummy_app/db/migrate/20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb +6 -0
  329. data/spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb +19 -0
  330. data/spec/dummy_app/db/migrate/20110901142530_rename_league_id_foreign_key_on_divisions.rb +5 -0
  331. data/spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb +21 -0
  332. data/spec/dummy_app/db/migrate/20110901154834_change_length_for_rails_admin_histories.rb +9 -0
  333. data/spec/dummy_app/db/migrate/20111103174459_create_unscoped_pages.rb +9 -0
  334. data/spec/dummy_app/db/migrate/20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb +7 -0
  335. data/spec/dummy_app/db/migrate/20111115041025_add_type_to_balls.rb +5 -0
  336. data/spec/dummy_app/db/migrate/20111123092549_create_nested_field_tests.rb +10 -0
  337. data/spec/dummy_app/db/migrate/20111130075338_add_dragonfly_asset_name_to_field_tests.rb +5 -0
  338. data/spec/dummy_app/db/migrate/20111215083258_create_foo_bars.rb +8 -0
  339. data/spec/dummy_app/db/migrate/20120117151733_add_custom_field_to_teams.rb +5 -0
  340. data/spec/dummy_app/db/migrate/20120118122004_add_categories.rb +7 -0
  341. data/spec/dummy_app/db/migrate/20120319041705_drop_rel_tests.rb +15 -0
  342. data/spec/dummy_app/db/migrate/20120720075608_create_another_field_tests.rb +8 -0
  343. data/spec/dummy_app/db/migrate/20120928075608_create_images.rb +8 -0
  344. data/spec/dummy_app/db/seeds.rb +29 -0
  345. data/spec/dummy_app/doc/README_FOR_APP +2 -0
  346. data/spec/dummy_app/public/404.html +26 -0
  347. data/spec/dummy_app/public/422.html +26 -0
  348. data/spec/dummy_app/public/500.html +25 -0
  349. data/spec/dummy_app/public/favicon.ico +0 -0
  350. data/spec/dummy_app/public/robots.txt +5 -0
  351. data/spec/dummy_app/public/system/dragonfly/development/2011/11/24/10_36_27_888_Pensive_Parakeet.jpg +0 -0
  352. data/spec/dummy_app/public/system/dragonfly/development/2011/11/24/10_36_27_888_Pensive_Parakeet.jpg.meta +1 -0
  353. data/spec/dummy_app/public/system/dragonfly/development/2011/11/30/08_54_39_906_Costa_Rican_Frog.jpg +0 -0
  354. data/spec/dummy_app/public/system/dragonfly/development/2011/11/30/08_54_39_906_Costa_Rican_Frog.jpg.meta +1 -0
  355. data/spec/dummy_app/public/system/paperclip_assets/1/original/Boston City Flow.jpg +0 -0
  356. data/spec/dummy_app/public/system/paperclip_assets/1/thumb/Boston City Flow.jpg +0 -0
  357. data/spec/dummy_app/public/system/paperclip_assets/3/original/Costa Rican Frog.jpg +0 -0
  358. data/spec/dummy_app/public/system/paperclip_assets/3/thumb/Costa Rican Frog.jpg +0 -0
  359. data/spec/dummy_app/public/system/paperclip_assets/6/original/liste-electorale.pdf +0 -0
  360. data/spec/dummy_app/public/system/paperclip_assets/6/thumb/liste-electorale.pdf +148 -0
  361. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/3/Boston_City_Flow.jpg +0 -0
  362. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/3/thumb_Boston_City_Flow.jpg +0 -0
  363. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/4/Costa_Rican_Frog.jpg +0 -0
  364. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/4/thumb_Costa_Rican_Frog.jpg +0 -0
  365. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/6/Pensive_Parakeet.jpg +0 -0
  366. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/6/thumb_Pensive_Parakeet.jpg +0 -0
  367. data/spec/dummy_app/script/rails +6 -0
  368. data/spec/factories.rb +75 -0
  369. data/spec/helpers/rails_admin/application_helper_spec.rb +353 -0
  370. data/spec/helpers/rails_admin/form_builder_spec.rb +17 -0
  371. data/spec/integration/authorization/cancan_spec.rb +366 -0
  372. data/spec/integration/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +25 -0
  373. data/spec/integration/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +53 -0
  374. data/spec/integration/basic/create/rails_admin_basic_create_spec.rb +140 -0
  375. data/spec/integration/basic/create/rails_admin_namespaced_model_create_spec.rb +16 -0
  376. data/spec/integration/basic/delete/rails_admin_basic_delete_spec.rb +64 -0
  377. data/spec/integration/basic/destroy/rails_admin_basic_destroy_spec.rb +84 -0
  378. data/spec/integration/basic/edit/rails_admin_basic_edit_spec.rb +109 -0
  379. data/spec/integration/basic/export/rails_admin_basic_export_spec.rb +106 -0
  380. data/spec/integration/basic/list/rails_admin_basic_list_spec.rb +444 -0
  381. data/spec/integration/basic/new/rails_admin_basic_new_spec.rb +73 -0
  382. data/spec/integration/basic/new/rails_admin_namespaced_model_new_spec.rb +31 -0
  383. data/spec/integration/basic/show/rails_admin_basic_show_spec.rb +82 -0
  384. data/spec/integration/basic/update/rails_admin_basic_update_spec.rb +229 -0
  385. data/spec/integration/config/edit/rails_admin_config_edit_spec.rb +1026 -0
  386. data/spec/integration/config/list/rails_admin_config_list_spec.rb +441 -0
  387. data/spec/integration/config/show/rails_admin_config_show_spec.rb +331 -0
  388. data/spec/integration/history/rails_admin_history_spec.rb +88 -0
  389. data/spec/integration/rails_admin_spec.rb +150 -0
  390. data/spec/integration/relation_spec.rb +35 -0
  391. data/spec/orm/active_record.rb +42 -0
  392. data/spec/orm/mongoid.rb +21 -0
  393. data/spec/rails_admin/abstract_model_spec.rb +75 -0
  394. data/spec/rails_admin/active_record_extension_spec.rb +16 -0
  395. data/spec/rails_admin/adapters/active_record/abstract_object_spec.rb +132 -0
  396. data/spec/rails_admin/adapters/active_record_spec.rb +409 -0
  397. data/spec/rails_admin/adapters/mongoid/abstract_object_spec.rb +31 -0
  398. data/spec/rails_admin/adapters/mongoid_spec.rb +776 -0
  399. data/spec/rails_admin/config/actions/base_spec.rb +32 -0
  400. data/spec/rails_admin/config/actions_spec.rb +180 -0
  401. data/spec/rails_admin/config/fields/base_spec.rb +421 -0
  402. data/spec/rails_admin/config/fields/date_spec.rb +74 -0
  403. data/spec/rails_admin/config/fields/datetime_spec.rb +55 -0
  404. data/spec/rails_admin/config/fields/file_upload_spec.rb +21 -0
  405. data/spec/rails_admin/config/fields/time_spec.rb +39 -0
  406. data/spec/rails_admin/config/fields/timestamp_spec.rb +20 -0
  407. data/spec/rails_admin/config/fields/types/datetime_spec.rb +18 -0
  408. data/spec/rails_admin/config/fields_spec.rb +15 -0
  409. data/spec/rails_admin/config/has_fields_spec.rb +30 -0
  410. data/spec/rails_admin/config/lazy_model_spec.rb +29 -0
  411. data/spec/rails_admin/config/model_spec.rb +75 -0
  412. data/spec/rails_admin/config/sections_spec.rb +123 -0
  413. data/spec/rails_admin/config_spec.rb +277 -0
  414. data/spec/rails_admin/support/csv_converter_spec.rb +16 -0
  415. data/spec/spec_helper.rb +84 -0
  416. metadata +868 -0
@@ -0,0 +1,441 @@
1
+ require 'spec_helper'
2
+
3
+ describe "RailsAdmin Config DSL List Section" do
4
+
5
+ subject { page }
6
+
7
+ describe "css hooks" do
8
+ it "is present" do
9
+ RailsAdmin.config Team do
10
+ list do
11
+ field :name
12
+ end
13
+ end
14
+ FactoryGirl.create :team
15
+ visit index_path(:model_name => "team")
16
+ should have_selector("th.header.string_type.name_field")
17
+ should have_selector("td.string_type.name_field")
18
+ end
19
+ end
20
+
21
+
22
+ describe "number of items per page" do
23
+
24
+ before(:each) do
25
+ 2.times.each do
26
+ FactoryGirl.create :league
27
+ FactoryGirl.create :player
28
+ end
29
+ end
30
+
31
+ it "is configurable per model" do
32
+ RailsAdmin.config League do
33
+ list do
34
+ items_per_page 1
35
+ end
36
+ end
37
+ visit index_path(:model_name => "league")
38
+ should have_selector("tbody tr", :count => 1)
39
+ visit index_path(:model_name => "player")
40
+ should have_selector("tbody tr", :count => 2)
41
+ end
42
+ end
43
+
44
+ describe "items' fields" do
45
+
46
+ it "shows all by default" do
47
+ visit index_path(:model_name => "fan")
48
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
49
+ to match_array ["Id", "Created at", "Updated at", "His Name", "Teams"]
50
+ end
51
+
52
+ it "hides some fields on demand with a block" do
53
+ RailsAdmin.config Fan do
54
+ list do
55
+ exclude_fields_if do
56
+ type == :datetime
57
+ end
58
+ end
59
+ end
60
+ visit index_path(:model_name => "fan")
61
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
62
+ to match_array ["Id", "His Name", "Teams"]
63
+ end
64
+
65
+ it "hides some fields on demand with fields list" do
66
+ RailsAdmin.config Fan do
67
+ list do
68
+ exclude_fields :created_at, :updated_at
69
+ end
70
+ end
71
+ visit index_path(:model_name => "fan")
72
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
73
+ to match_array ["Id", "His Name", "Teams"]
74
+ end
75
+
76
+ it "adds some fields on demand with a block" do
77
+ RailsAdmin.config Fan do
78
+ list do
79
+ include_fields_if do
80
+ type != :datetime
81
+ end
82
+ end
83
+ end
84
+ visit index_path(:model_name => "fan")
85
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
86
+ to match_array ["Id", "His Name", "Teams"]
87
+ end
88
+
89
+ it "shows some fields on demand with fields list, respect ordering and configure them" do
90
+ RailsAdmin.config Fan do
91
+ list do
92
+ fields :name, PK_COLUMN do
93
+ label do
94
+ "Modified #{label}"
95
+ end
96
+ end
97
+ end
98
+ end
99
+ visit index_path(:model_name => "fan")
100
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
101
+ to match_array ["Modified Id", "Modified His Name"]
102
+ end
103
+
104
+ it "shows all fields if asked" do
105
+ RailsAdmin.config Fan do
106
+ list do
107
+ include_all_fields
108
+ field PK_COLUMN
109
+ field :name
110
+ end
111
+ end
112
+ visit index_path(:model_name => "fan")
113
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
114
+ to match_array ["Id", "Created at", "Updated at", "His Name", "Teams"]
115
+ end
116
+
117
+ it "appears in order defined" do
118
+ RailsAdmin.config Fan do
119
+ list do
120
+ field :updated_at
121
+ field :name
122
+ field PK_COLUMN
123
+ field :created_at
124
+ end
125
+ end
126
+ visit index_path(:model_name => "fan")
127
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
128
+ to eq(["Updated at", "His Name", "Id", "Created at"])
129
+ end
130
+
131
+ it "only lists the defined fields if some fields are defined" do
132
+ RailsAdmin.config Fan do
133
+ list do
134
+ field PK_COLUMN
135
+ field :name
136
+ end
137
+ end
138
+ visit index_path(:model_name => "fan")
139
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
140
+ to eq(["Id", "His Name"])
141
+ should have_no_selector("th:nth-child(4).header")
142
+ end
143
+
144
+ it "delegates the label option to the ActiveModel API" do
145
+ RailsAdmin.config Fan do
146
+ list do
147
+ field :name
148
+ end
149
+ end
150
+ visit index_path(:model_name => "fan")
151
+ expect(find("th:nth-child(2)")).to have_content("His Name")
152
+ end
153
+
154
+ it "is renameable" do
155
+ RailsAdmin.config Fan do
156
+ list do
157
+ field PK_COLUMN do
158
+ label "Identifier"
159
+ end
160
+ field :name
161
+ end
162
+ end
163
+ visit index_path(:model_name => "fan")
164
+ expect(find("th:nth-child(2)")).to have_content("Identifier")
165
+ expect(find("th:nth-child(3)")).to have_content("His Name")
166
+ end
167
+
168
+ it "is renameable by type" do
169
+ RailsAdmin.config Fan do
170
+ list do
171
+ fields_of_type :datetime do
172
+ label { "#{label} (datetime)" }
173
+ end
174
+ end
175
+ end
176
+ visit index_path(:model_name => "fan")
177
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
178
+ to match_array ["Id", "Created at (datetime)", "Updated at (datetime)", "His Name", "Teams"]
179
+ end
180
+
181
+ it "is globally renameable by type" do
182
+ RailsAdmin.config Fan do
183
+ list do
184
+ fields_of_type :datetime do
185
+ label { "#{label} (datetime)" }
186
+ end
187
+ end
188
+ end
189
+ visit index_path(:model_name => "fan")
190
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
191
+ to match_array ["Id", "Created at (datetime)", "Updated at (datetime)", "His Name", "Teams"]
192
+ end
193
+
194
+ it "is sortable by default" do
195
+ visit index_path(:model_name => "fan")
196
+ should have_selector("th:nth-child(2).header")
197
+ should have_selector("th:nth-child(3).header")
198
+ should have_selector("th:nth-child(4).header")
199
+ should have_selector("th:nth-child(5).header")
200
+ end
201
+
202
+ it "has option to disable sortability" do
203
+ RailsAdmin.config Fan do
204
+ list do
205
+ field PK_COLUMN do
206
+ sortable false
207
+ end
208
+ field :name
209
+ end
210
+ end
211
+ visit index_path(:model_name => "fan")
212
+ should have_no_selector("th:nth-child(2).header")
213
+ should have_selector("th:nth-child(3).header")
214
+ end
215
+
216
+ it "has option to disable sortability by type" do
217
+ RailsAdmin.config Fan do
218
+ list do
219
+ fields_of_type :datetime do
220
+ sortable false
221
+ end
222
+ field PK_COLUMN
223
+ field :name
224
+ field :created_at
225
+ field :updated_at
226
+ end
227
+ end
228
+ visit index_path(:model_name => "fan")
229
+ should have_selector("th:nth-child(2).header")
230
+ should have_selector("th:nth-child(3).header")
231
+ should have_no_selector("th:nth-child(4).header")
232
+ should have_no_selector("th:nth-child(5).header")
233
+ end
234
+
235
+ it "has option to disable sortability by type globally" do
236
+ RailsAdmin.config Fan do
237
+ list do
238
+ fields_of_type :datetime do
239
+ sortable false
240
+ end
241
+ field PK_COLUMN
242
+ field :name
243
+ field :created_at
244
+ field :updated_at
245
+ end
246
+ end
247
+ visit index_path(:model_name => "fan")
248
+ should have_selector("th:nth-child(2).header")
249
+ should have_selector("th:nth-child(3).header")
250
+ should have_no_selector("th:nth-child(4).header")
251
+ should have_no_selector("th:nth-child(5).header")
252
+ end
253
+
254
+ it "has option to hide fields by type" do
255
+ RailsAdmin.config Fan do
256
+ list do
257
+ fields_of_type :datetime do
258
+ hide
259
+ end
260
+ end
261
+ end
262
+ visit index_path(:model_name => "fan")
263
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
264
+ to match_array ["Id", "His Name", "Teams"]
265
+ end
266
+
267
+ it "has option to hide fields by type globally" do
268
+ RailsAdmin.config Fan do
269
+ list do
270
+ fields_of_type :datetime do
271
+ hide
272
+ end
273
+ end
274
+ end
275
+ visit index_path(:model_name => "fan")
276
+ expect(all("th").map(&:text).delete_if{|t| /^\n*$/ =~ t }).
277
+ to match_array ["Id", "His Name", "Teams"]
278
+ end
279
+
280
+ it "has option to customize column width" do
281
+ RailsAdmin.config Fan do
282
+ list do
283
+ field PK_COLUMN do
284
+ column_width 200
285
+ end
286
+ field :name
287
+ field :created_at
288
+ field :updated_at
289
+ end
290
+ end
291
+ @fans = 2.times.map { FactoryGirl.create :fan }
292
+ visit index_path(:model_name => "fan")
293
+ # NOTE: Capybara really doesn't want us to look at invisible text. This test
294
+ # could break at any moment.
295
+ expect(find('style').native.text).to include("#list th.#{PK_COLUMN}_field")
296
+ expect(find('style').native.text).to include("#list td.#{PK_COLUMN}_field")
297
+ end
298
+
299
+ it "has option to customize output formatting" do
300
+ RailsAdmin.config Fan do
301
+ list do
302
+ field PK_COLUMN
303
+ field :name do
304
+ formatted_value do
305
+ value.to_s.upcase
306
+ end
307
+ end
308
+ field :created_at
309
+ field :updated_at
310
+ end
311
+ end
312
+ @fans = 2.times.map { FactoryGirl.create :fan }
313
+ visit index_path(:model_name => "fan")
314
+ expect(find('tbody tr:nth-child(1) td:nth-child(3)')).to have_content(@fans[1].name.upcase)
315
+ expect(find('tbody tr:nth-child(2) td:nth-child(3)')).to have_content(@fans[0].name.upcase)
316
+ end
317
+
318
+ it "has a simple option to customize output formatting of date fields" do
319
+ RailsAdmin.config Fan do
320
+ list do
321
+ field PK_COLUMN
322
+ field :name
323
+ field :created_at do
324
+ date_format :short
325
+ end
326
+ field :updated_at
327
+ end
328
+ end
329
+ @fans = 2.times.map { FactoryGirl.create :fan }
330
+ visit index_path(:model_name => "fan")
331
+ should have_selector("tbody tr:nth-child(1) td:nth-child(4)", :text => /\d{2} \w{3} \d{1,2}:\d{1,2}/)
332
+ end
333
+
334
+ it "has option to customize output formatting of date fields" do
335
+ RailsAdmin.config Fan do
336
+ list do
337
+ field PK_COLUMN
338
+ field :name
339
+ field :created_at do
340
+ strftime_format "%Y-%m-%d"
341
+ end
342
+ field :updated_at
343
+ end
344
+ end
345
+ @fans = 2.times.map { FactoryGirl.create :fan }
346
+ visit index_path(:model_name => "fan")
347
+ should have_selector("tbody tr:nth-child(1) td:nth-child(4)", :text => /\d{4}-\d{2}-\d{2}/)
348
+ end
349
+
350
+ it "allows addition of virtual fields (object methods)" do
351
+ RailsAdmin.config Team do
352
+ list do
353
+ field PK_COLUMN
354
+ field :name
355
+ field :player_names_truncated
356
+ end
357
+ end
358
+ @team = FactoryGirl.create :team
359
+ @players = 2.times.map { FactoryGirl.create :player, :team => @team }
360
+ visit index_path(:model_name => "team")
361
+ expect(find('tbody tr:nth-child(1) td:nth-child(4)')).to have_content(@players.collect(&:name).join(", "))
362
+ end
363
+ end
364
+
365
+ # sort_by and sort_reverse options
366
+ describe "default sorting" do
367
+ let(:today){ Date.today }
368
+ let(:players) do
369
+ [{ :name => "Jackie Robinson", :created_at => today, :team_id => rand(99999), :number => 42 },
370
+ { :name => "Deibinson Romero", :created_at => (today - 2.days), :team_id => rand(99999), :number => 13 },
371
+ { :name => "Sandy Koufax", :created_at => (today - 1.days), :team_id => rand(99999), :number => 32 }]
372
+ end
373
+ let(:leagues) do
374
+ [{ :name => 'American', :created_at => (today - 1.day) },
375
+ { :name => 'Florida State', :created_at => (today - 2.days)},
376
+ { :name => 'National', :created_at => today }]
377
+ end
378
+ let(:player_names_by_date){ players.sort_by{|p| p[:created_at]}.map{|p| p[:name]} }
379
+ let(:league_names_by_date){ leagues.sort_by{|l| l[:created_at]}.map{|l| l[:name]} }
380
+
381
+ before(:each) { @players = players.map{|h| Player.create(h) }}
382
+
383
+ context "should be configurable" do
384
+ it "per model" do
385
+ RailsAdmin.config Player do
386
+ list do
387
+ sort_by :created_at
388
+ sort_reverse true
389
+ field :name
390
+ end
391
+ end
392
+ visit index_path(:model_name => "player")
393
+ player_names_by_date.reverse.each_with_index do |name, i|
394
+ expect(find("tbody tr:nth-child(#{i + 1})")).to have_content(name)
395
+ end
396
+ end
397
+ end
398
+
399
+ it "has reverse direction by default" do
400
+ RailsAdmin.config Player do
401
+ list do
402
+ sort_by :created_at
403
+ field :name
404
+ end
405
+ end
406
+ visit index_path(:model_name => "player")
407
+ player_names_by_date.reverse.each_with_index do |name, i|
408
+ expect(find("tbody tr:nth-child(#{i + 1})")).to have_content(name)
409
+ end
410
+ end
411
+
412
+ it "allows change default direction" do
413
+ RailsAdmin.config Player do
414
+ list do
415
+ sort_by :created_at
416
+ sort_reverse false
417
+ field :name
418
+ end
419
+ end
420
+ visit index_path(:model_name => "player")
421
+ player_names_by_date.each_with_index do |name, i|
422
+ expect(find("tbody tr:nth-child(#{i + 1})")).to have_content(name)
423
+ end
424
+ end
425
+ end
426
+
427
+ describe "embedded model", :mongoid => true do
428
+ it "does not show link to individual object's page" do
429
+ RailsAdmin.config FieldTest do
430
+ list do
431
+ field :embeds
432
+ end
433
+ end
434
+ @record = FactoryGirl.create :field_test
435
+ 2.times.each{|i| @record.embeds.create :name => "embed #{i}"}
436
+ visit index_path(:model_name => "field_test")
437
+ should_not have_link('embed 0')
438
+ should_not have_link('embed 1')
439
+ end
440
+ end
441
+ end
@@ -0,0 +1,331 @@
1
+ require 'spec_helper'
2
+
3
+ describe "RailsAdmin Config DSL Show Section" do
4
+ subject { page }
5
+ let(:team) { FactoryGirl.create :team }
6
+
7
+ def do_request
8
+ # tests were done with compact_show_view being false
9
+ RailsAdmin.config do |c|
10
+ c.compact_show_view = false
11
+ end
12
+
13
+ visit show_path(:model_name => "team", :id => team.id)
14
+ end
15
+
16
+ describe "JSON show view" do
17
+ before do
18
+ @player = FactoryGirl.create :player
19
+ visit uri
20
+ end
21
+
22
+ let(:uri) { show_path(:model_name => 'player', :id => @player.id, :format => :json) }
23
+ let(:body) { page.body }
24
+
25
+ it "creates a JSON uri" do
26
+ expect(uri).to eq("/admin/player/#{@player.id}.json")
27
+ end
28
+
29
+ it "contains the JSONified object" do
30
+ expect(body).to include(@player.to_json)
31
+ end
32
+ end
33
+
34
+ describe "compact_show_view" do
35
+
36
+ it "hides empty fields in show view by default" do
37
+ @player = FactoryGirl.create :player
38
+ visit show_path(:model_name => "league", :id => @player.id)
39
+ should_not have_css(".born_on_field")
40
+ end
41
+
42
+
43
+ it "is disactivable" do
44
+ RailsAdmin.config do |c|
45
+ c.compact_show_view = false
46
+ end
47
+
48
+ @player = FactoryGirl.create :player
49
+ visit show_path(:model_name => "player", :id => @player.id)
50
+ should have_css(".born_on_field")
51
+ end
52
+ end
53
+
54
+ describe "css hooks" do
55
+ it "is present" do
56
+ do_request
57
+
58
+ should have_selector("dt .name_field.string_type")
59
+ end
60
+ end
61
+
62
+ describe "field groupings" do
63
+ it "is hideable" do
64
+ RailsAdmin.config Team do
65
+ show do
66
+ group :default do
67
+ hide
68
+ end
69
+ end
70
+ end
71
+
72
+ do_request
73
+
74
+ should_not have_selector("h4", :text => "Basic info")
75
+
76
+ %w[division name logo_url manager
77
+ ballpark mascot founded wins
78
+ losses win_percentage revenue
79
+ ].each do |field|
80
+ should_not have_selector(".#{field}_field")
81
+ end
82
+ end
83
+
84
+ it "hides association groupings by the name of the association" do
85
+ RailsAdmin.config Team do
86
+ show do
87
+ group :players do
88
+ hide
89
+ end
90
+ end
91
+ end
92
+
93
+ do_request
94
+
95
+ should_not have_selector("h4", :text => "Players")
96
+ end
97
+
98
+ it "is renameable" do
99
+ RailsAdmin.config Team do
100
+ show do
101
+ group :default do
102
+ label "Renamed group"
103
+ end
104
+ end
105
+ end
106
+
107
+ do_request
108
+
109
+ should have_selector("h4", :text => "Renamed group")
110
+ end
111
+
112
+ it "has accessor for its fields" do
113
+ RailsAdmin.config Team do
114
+ show do
115
+ group :default do
116
+ field :name
117
+ field :logo_url
118
+ end
119
+ group :belongs_to_associations do
120
+ label "Belong's to associations"
121
+ field :division
122
+ end
123
+ end
124
+ end
125
+
126
+ do_request
127
+
128
+ should have_selector("h4", :text => "Basic info")
129
+ should have_selector("h4", :text => "Belong's to associations")
130
+
131
+ should have_selector(".name_field")
132
+ should have_selector(".logo_url_field")
133
+ should have_selector(".division_field")
134
+ end
135
+
136
+ it "has accessor for its fields by type" do
137
+ RailsAdmin.config Team do
138
+ show do
139
+ group :default do
140
+ field :name
141
+ field :logo_url
142
+ end
143
+ group :other do
144
+ field :division
145
+ field :manager
146
+ field :ballpark
147
+ fields_of_type :string do
148
+ label { "#{label} (STRING)" }
149
+ end
150
+ end
151
+ end
152
+ end
153
+
154
+ do_request
155
+
156
+ should have_selector(".label", :text => "Name")
157
+ should have_selector(".label", :text => "Logo url")
158
+ should have_selector(".label", :text => "Division")
159
+ should have_selector(".label", :text => "Manager (STRING)")
160
+ should have_selector(".label", :text => "Ballpark (STRING)")
161
+ end
162
+ end
163
+
164
+ describe "items' fields" do
165
+
166
+ it "shows all by default" do
167
+ do_request
168
+
169
+ %w[division name logo_url manager
170
+ ballpark mascot founded wins
171
+ losses win_percentage revenue players fans
172
+ ].each do |field|
173
+ should have_selector(".#{field}_field")
174
+ end
175
+ end
176
+
177
+ it "only shows the defined fields and appear in order defined" do
178
+ RailsAdmin.config Team do
179
+ show do
180
+ field :manager
181
+ field :division
182
+ field :name
183
+ end
184
+ end
185
+
186
+ do_request
187
+
188
+ should have_selector(".manager_field")
189
+ should have_selector(".division_field")
190
+ should have_selector(".name_field")
191
+ end
192
+
193
+
194
+ it "delegates the label option to the ActiveModel API" do
195
+ RailsAdmin.config Team do
196
+ show do
197
+ field :manager
198
+ field :fans
199
+ end
200
+ end
201
+
202
+ do_request
203
+
204
+ should have_selector(".label", :text => "Team Manager")
205
+ should have_selector(".label", :text => "Some Fans")
206
+ end
207
+
208
+ it "is renameable" do
209
+ RailsAdmin.config Team do
210
+ show do
211
+ field :manager do
212
+ label "Renamed field"
213
+ end
214
+ field :division
215
+ field :name
216
+ end
217
+ end
218
+
219
+ do_request
220
+
221
+ should have_selector(".label", :text => "Renamed field")
222
+ should have_selector(".label", :text => "Division")
223
+ should have_selector(".label", :text => "Name")
224
+ end
225
+
226
+ it "is renameable by type" do
227
+ RailsAdmin.config Team do
228
+ show do
229
+ fields_of_type :string do
230
+ label { "#{label} (STRING)" }
231
+ end
232
+ end
233
+ end
234
+
235
+ do_request
236
+
237
+ ["Division", "Name (STRING)", "Logo url (STRING)", "Manager (STRING)",
238
+ "Ballpark (STRING)", "Mascot (STRING)", "Founded", "Wins", "Losses",
239
+ "Win percentage", "Revenue", "Players", "Fans"
240
+ ].each do |text|
241
+ should have_selector(".label", :text => text)
242
+ end
243
+ end
244
+
245
+ it "is globally renameable by type" do
246
+ RailsAdmin.config Team do
247
+ show do
248
+ fields_of_type :string do
249
+ label { "#{label} (STRING)" }
250
+ end
251
+ end
252
+ end
253
+
254
+ do_request
255
+
256
+ ["Division", "Name (STRING)", "Logo url (STRING)", "Manager (STRING)",
257
+ "Ballpark (STRING)", "Mascot (STRING)", "Founded", "Wins", "Losses",
258
+ "Win percentage", "Revenue", "Players", "Fans"
259
+ ].each do |text|
260
+ should have_selector(".label", :text => text)
261
+ end
262
+ end
263
+
264
+ it "is hideable" do
265
+ RailsAdmin.config Team do
266
+ show do
267
+ field :manager do
268
+ hide
269
+ end
270
+ field :division
271
+ field :name
272
+ end
273
+ end
274
+
275
+ do_request
276
+
277
+ should have_selector(".division_field")
278
+ should have_selector(".name_field")
279
+ end
280
+
281
+ it "is hideable by type" do
282
+ RailsAdmin.config Team do
283
+ show do
284
+ fields_of_type :string do
285
+ hide
286
+ end
287
+ end
288
+ end
289
+
290
+ do_request
291
+
292
+ %w[Name Logo\ url Manager Ballpark Mascot].each do |text|
293
+ should_not have_selector(".label", :text => text)
294
+ end
295
+
296
+ %w[Division Founded Wins Losses Win\ percentage Revenue Players Fans].each do |text|
297
+ should have_selector(".label", :text => text)
298
+ end
299
+ end
300
+
301
+ it "is globally hideable by type" do
302
+ RailsAdmin.config Team do
303
+ show do
304
+ fields_of_type :string do
305
+ hide
306
+ end
307
+ end
308
+ end
309
+
310
+ do_request
311
+
312
+ %w[Name Logo\ url Manager Ballpark Mascot].each do |text|
313
+ should_not have_selector(".label", :text => text)
314
+ end
315
+
316
+ %w[Division Founded Wins Losses Win\ percentage Revenue Players Fans].each do |text|
317
+ should have_selector(".label", :text => text)
318
+ end
319
+ end
320
+ end
321
+
322
+ describe "embedded model", :mongoid => true do
323
+ it "does not show link to individual object's page" do
324
+ @record = FactoryGirl.create :field_test
325
+ 2.times.each{|i| @record.embeds.create :name => "embed #{i}"}
326
+ visit show_path(:model_name => "field_test", :id => @record.id)
327
+ should_not have_link('embed 0')
328
+ should_not have_link('embed 1')
329
+ end
330
+ end
331
+ end