rails_admin-lbgraham 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
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