obitum-rails_admin 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. data/Gemfile +57 -0
  2. data/LICENSE.md +20 -0
  3. data/README.md +206 -0
  4. data/Rakefile +14 -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-ui-1.8.16.custom.js +5271 -0
  49. data/app/assets/javascripts/rails_admin/jquery.colorpicker.js +484 -0
  50. data/app/assets/javascripts/rails_admin/jquery.pjax.js +266 -0
  51. data/app/assets/javascripts/rails_admin/jquery.ui.timepicker.js +1219 -0
  52. data/app/assets/javascripts/rails_admin/jquery_nested_form.js +58 -0
  53. data/app/assets/javascripts/rails_admin/ra.datetimepicker.js +67 -0
  54. data/app/assets/javascripts/rails_admin/ra.filter-box.js +120 -0
  55. data/app/assets/javascripts/rails_admin/ra.filtering-multiselect.js +280 -0
  56. data/app/assets/javascripts/rails_admin/ra.filtering-select.js +181 -0
  57. data/app/assets/javascripts/rails_admin/ra.remote-form.js +148 -0
  58. data/app/assets/javascripts/rails_admin/rails_admin.js.erb +19 -0
  59. data/app/assets/javascripts/rails_admin/themes/default/ui.js +12 -0
  60. data/app/assets/javascripts/rails_admin/ui.js.coffee +33 -0
  61. data/app/assets/stylesheets/rails_admin/aristo/images/bg_fallback.png +0 -0
  62. data/app/assets/stylesheets/rails_admin/aristo/images/icon_sprite.png +0 -0
  63. data/app/assets/stylesheets/rails_admin/aristo/images/progress_bar.gif +0 -0
  64. data/app/assets/stylesheets/rails_admin/aristo/images/slider_handles.png +0 -0
  65. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_222222_256x240.png +0 -0
  66. data/app/assets/stylesheets/rails_admin/aristo/images/ui-icons_454545_256x240.png +0 -0
  67. data/app/assets/stylesheets/rails_admin/aristo/jquery-ui-1.8.7.custom.css.scss +733 -0
  68. data/app/assets/stylesheets/rails_admin/base/README +2 -0
  69. data/app/assets/stylesheets/rails_admin/base/mixins.css.scss +1 -0
  70. data/app/assets/stylesheets/rails_admin/base/theming.css.scss +145 -0
  71. data/app/assets/stylesheets/rails_admin/base/variables.css.scss +1 -0
  72. data/app/assets/stylesheets/rails_admin/custom/mixins.css.scss +12 -0
  73. data/app/assets/stylesheets/rails_admin/custom/theming.css.scss +13 -0
  74. data/app/assets/stylesheets/rails_admin/custom/variables.css.scss +15 -0
  75. data/app/assets/stylesheets/rails_admin/imports.css.scss.erb +41 -0
  76. data/app/assets/stylesheets/rails_admin/jquery.colorpicker.css.scss +180 -0
  77. data/app/assets/stylesheets/rails_admin/jquery.ui.timepicker.css.scss +53 -0
  78. data/app/assets/stylesheets/rails_admin/ra.calendar-additions.css.scss +25 -0
  79. data/app/assets/stylesheets/rails_admin/ra.filtering-multiselect.css.scss +85 -0
  80. data/app/assets/stylesheets/rails_admin/rails_admin.css +4 -0
  81. data/app/assets/stylesheets/rails_admin/themes/default/mixins.css.scss +8 -0
  82. data/app/assets/stylesheets/rails_admin/themes/default/theming.css.scss +11 -0
  83. data/app/assets/stylesheets/rails_admin/themes/default/variables.css.scss +12 -0
  84. data/app/controllers/rails_admin/application_controller.rb +87 -0
  85. data/app/controllers/rails_admin/main_controller.rb +148 -0
  86. data/app/helpers/rails_admin/application_helper.rb +97 -0
  87. data/app/helpers/rails_admin/form_builder.rb +106 -0
  88. data/app/helpers/rails_admin/main_helper.rb +36 -0
  89. data/app/views/kaminari/twitter-bootstrap/_gap.html.haml +2 -0
  90. data/app/views/kaminari/twitter-bootstrap/_next_page.html.haml +4 -0
  91. data/app/views/kaminari/twitter-bootstrap/_page.html.haml +4 -0
  92. data/app/views/kaminari/twitter-bootstrap/_paginator.html.haml +10 -0
  93. data/app/views/kaminari/twitter-bootstrap/_prev_page.html.haml +4 -0
  94. data/app/views/layouts/rails_admin/_navigation.html.haml +17 -0
  95. data/app/views/layouts/rails_admin/_secondary_navigation.html.haml +11 -0
  96. data/app/views/layouts/rails_admin/application.html.haml +39 -0
  97. data/app/views/rails_admin/main/_dashboard_history.html.haml +10 -0
  98. data/app/views/rails_admin/main/_delete_notice.html.haml +19 -0
  99. data/app/views/rails_admin/main/_form_colorpicker.html.haml +23 -0
  100. data/app/views/rails_admin/main/_form_datetime.html.haml +4 -0
  101. data/app/views/rails_admin/main/_form_enumeration.html.haml +4 -0
  102. data/app/views/rails_admin/main/_form_field.html.haml +1 -0
  103. data/app/views/rails_admin/main/_form_file_upload.html.haml +17 -0
  104. data/app/views/rails_admin/main/_form_filtering_multiselect.html.haml +57 -0
  105. data/app/views/rails_admin/main/_form_filtering_select.html.haml +46 -0
  106. data/app/views/rails_admin/main/_form_nested_many.html.haml +6 -0
  107. data/app/views/rails_admin/main/_form_nested_one.html.haml +6 -0
  108. data/app/views/rails_admin/main/_form_polymorphic_association.html.haml +34 -0
  109. data/app/views/rails_admin/main/_form_text.html.haml +9 -0
  110. data/app/views/rails_admin/main/_submit_buttons.html.haml +13 -0
  111. data/app/views/rails_admin/main/bulk_delete.html.haml +7 -0
  112. data/app/views/rails_admin/main/dashboard.html.haml +31 -0
  113. data/app/views/rails_admin/main/delete.html.haml +14 -0
  114. data/app/views/rails_admin/main/edit.html.haml +2 -0
  115. data/app/views/rails_admin/main/export.html.haml +71 -0
  116. data/app/views/rails_admin/main/history.html.haml +42 -0
  117. data/app/views/rails_admin/main/index.html.haml +123 -0
  118. data/app/views/rails_admin/main/new.html.haml +2 -0
  119. data/app/views/rails_admin/main/show.html.haml +14 -0
  120. data/config/initializers/active_record_extensions.rb +19 -0
  121. data/config/initializers/devise_patch.rb +9 -0
  122. data/config/initializers/haml.rb +3 -0
  123. data/config/locales/rails_admin.en.yml +129 -0
  124. data/config/routes.rb +12 -0
  125. data/lib/generators/rails_admin/install_generator.rb +84 -0
  126. data/lib/generators/rails_admin/templates/drop.rb +18 -0
  127. data/lib/generators/rails_admin/templates/initializer.erb +101 -0
  128. data/lib/generators/rails_admin/templates/migration.rb +18 -0
  129. data/lib/generators/rails_admin/uninstall_generator.rb +22 -0
  130. data/lib/generators/rails_admin/utils.rb +30 -0
  131. data/lib/rails_admin.rb +39 -0
  132. data/lib/rails_admin/abstract_model.rb +73 -0
  133. data/lib/rails_admin/abstract_object.rb +28 -0
  134. data/lib/rails_admin/adapters/active_record.rb +347 -0
  135. data/lib/rails_admin/config.rb +293 -0
  136. data/lib/rails_admin/config/actions.rb +121 -0
  137. data/lib/rails_admin/config/actions/base.rb +105 -0
  138. data/lib/rails_admin/config/actions/bulk_delete.rb +56 -0
  139. data/lib/rails_admin/config/actions/dashboard.rb +40 -0
  140. data/lib/rails_admin/config/actions/delete.rb +50 -0
  141. data/lib/rails_admin/config/actions/edit.rb +52 -0
  142. data/lib/rails_admin/config/actions/export.rb +37 -0
  143. data/lib/rails_admin/config/actions/history_index.rb +34 -0
  144. data/lib/rails_admin/config/actions/history_show.rb +34 -0
  145. data/lib/rails_admin/config/actions/index.rb +73 -0
  146. data/lib/rails_admin/config/actions/new.rb +60 -0
  147. data/lib/rails_admin/config/actions/show.rb +27 -0
  148. data/lib/rails_admin/config/actions/show_in_app.rb +23 -0
  149. data/lib/rails_admin/config/base.rb +111 -0
  150. data/lib/rails_admin/config/fields.rb +97 -0
  151. data/lib/rails_admin/config/fields/association.rb +115 -0
  152. data/lib/rails_admin/config/fields/base.rb +274 -0
  153. data/lib/rails_admin/config/fields/factories/carrierwave.rb +12 -0
  154. data/lib/rails_admin/config/fields/factories/devise.rb +30 -0
  155. data/lib/rails_admin/config/fields/factories/dragonfly.rb +21 -0
  156. data/lib/rails_admin/config/fields/factories/enum.rb +11 -0
  157. data/lib/rails_admin/config/fields/factories/paperclip.rb +27 -0
  158. data/lib/rails_admin/config/fields/factories/password.rb +17 -0
  159. data/lib/rails_admin/config/fields/group.rb +65 -0
  160. data/lib/rails_admin/config/fields/groupable.rb +25 -0
  161. data/lib/rails_admin/config/fields/types.rb +26 -0
  162. data/lib/rails_admin/config/fields/types/all.rb +23 -0
  163. data/lib/rails_admin/config/fields/types/belongs_to_association.rb +43 -0
  164. data/lib/rails_admin/config/fields/types/boolean.rb +29 -0
  165. data/lib/rails_admin/config/fields/types/carrierwave.rb +40 -0
  166. data/lib/rails_admin/config/fields/types/color.rb +37 -0
  167. data/lib/rails_admin/config/fields/types/date.rb +24 -0
  168. data/lib/rails_admin/config/fields/types/datetime.rb +165 -0
  169. data/lib/rails_admin/config/fields/types/decimal.rb +14 -0
  170. data/lib/rails_admin/config/fields/types/dragonfly.rb +59 -0
  171. data/lib/rails_admin/config/fields/types/enum.rb +35 -0
  172. data/lib/rails_admin/config/fields/types/file_upload.rb +65 -0
  173. data/lib/rails_admin/config/fields/types/float.rb +14 -0
  174. data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +14 -0
  175. data/lib/rails_admin/config/fields/types/has_many_association.rb +37 -0
  176. data/lib/rails_admin/config/fields/types/has_one_association.rb +35 -0
  177. data/lib/rails_admin/config/fields/types/hidden.rb +19 -0
  178. data/lib/rails_admin/config/fields/types/integer.rb +20 -0
  179. data/lib/rails_admin/config/fields/types/paperclip.rb +46 -0
  180. data/lib/rails_admin/config/fields/types/password.rb +42 -0
  181. data/lib/rails_admin/config/fields/types/polymorphic_association.rb +76 -0
  182. data/lib/rails_admin/config/fields/types/string.rb +43 -0
  183. data/lib/rails_admin/config/fields/types/text.rb +38 -0
  184. data/lib/rails_admin/config/fields/types/time.rb +36 -0
  185. data/lib/rails_admin/config/fields/types/timestamp.rb +18 -0
  186. data/lib/rails_admin/config/has_fields.rb +135 -0
  187. data/lib/rails_admin/config/has_groups.rb +23 -0
  188. data/lib/rails_admin/config/hideable.rb +28 -0
  189. data/lib/rails_admin/config/model.rb +82 -0
  190. data/lib/rails_admin/config/proxy.rb +40 -0
  191. data/lib/rails_admin/config/sections.rb +38 -0
  192. data/lib/rails_admin/config/sections/base.rb +19 -0
  193. data/lib/rails_admin/config/sections/create.rb +11 -0
  194. data/lib/rails_admin/config/sections/edit.rb +11 -0
  195. data/lib/rails_admin/config/sections/export.rb +11 -0
  196. data/lib/rails_admin/config/sections/list.rb +27 -0
  197. data/lib/rails_admin/config/sections/nested.rb +10 -0
  198. data/lib/rails_admin/config/sections/show.rb +10 -0
  199. data/lib/rails_admin/config/sections/update.rb +10 -0
  200. data/lib/rails_admin/engine.rb +21 -0
  201. data/lib/rails_admin/extension.rb +29 -0
  202. data/lib/rails_admin/extensions/cancan.rb +5 -0
  203. data/lib/rails_admin/extensions/cancan/authorization_adapter.rb +59 -0
  204. data/lib/rails_admin/extensions/history.rb +5 -0
  205. data/lib/rails_admin/extensions/history/auditing_adapter.rb +37 -0
  206. data/lib/rails_admin/extensions/history/history.rb +68 -0
  207. data/lib/rails_admin/extensions/paper_trail.rb +5 -0
  208. data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +92 -0
  209. data/lib/rails_admin/generic_support.rb +18 -0
  210. data/lib/rails_admin/i18n_support.rb +43 -0
  211. data/lib/rails_admin/support/core_extensions.rb +44 -0
  212. data/lib/rails_admin/support/csv_converter.rb +109 -0
  213. data/lib/rails_admin/version.rb +6 -0
  214. data/lib/tasks/prepare_ci_env.rake +27 -0
  215. data/lib/tasks/rails_admin.rake +18 -0
  216. data/spec/ci.sh +2 -0
  217. data/spec/controllers/application_controller_spec.rb +30 -0
  218. data/spec/controllers/main_controller_spec.rb +114 -0
  219. data/spec/database_helpers.rb +15 -0
  220. data/spec/dummy_app/Gemfile +53 -0
  221. data/spec/dummy_app/Rakefile +7 -0
  222. data/spec/dummy_app/app/controllers/application_controller.rb +3 -0
  223. data/spec/dummy_app/app/controllers/players_controller.rb +5 -0
  224. data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
  225. data/spec/dummy_app/app/locales/models.en.yml +16 -0
  226. data/spec/dummy_app/app/models/abstract.rb +5 -0
  227. data/spec/dummy_app/app/models/ball.rb +8 -0
  228. data/spec/dummy_app/app/models/category.rb +3 -0
  229. data/spec/dummy_app/app/models/cms.rb +5 -0
  230. data/spec/dummy_app/app/models/cms/basic_page.rb +7 -0
  231. data/spec/dummy_app/app/models/cms/unscoped_page.rb +3 -0
  232. data/spec/dummy_app/app/models/comment.rb +3 -0
  233. data/spec/dummy_app/app/models/division.rb +8 -0
  234. data/spec/dummy_app/app/models/draft.rb +11 -0
  235. data/spec/dummy_app/app/models/fan.rb +5 -0
  236. data/spec/dummy_app/app/models/field_test.rb +20 -0
  237. data/spec/dummy_app/app/models/hardball.rb +2 -0
  238. data/spec/dummy_app/app/models/league.rb +10 -0
  239. data/spec/dummy_app/app/models/nested_field_test.rb +3 -0
  240. data/spec/dummy_app/app/models/player.rb +23 -0
  241. data/spec/dummy_app/app/models/rel_test.rb +6 -0
  242. data/spec/dummy_app/app/models/team.rb +25 -0
  243. data/spec/dummy_app/app/models/user.rb +21 -0
  244. data/spec/dummy_app/app/uploaders/carrierwave_uploader.rb +53 -0
  245. data/spec/dummy_app/app/views/layouts/application.html.erb +13 -0
  246. data/spec/dummy_app/app/views/players/show.html.haml +1 -0
  247. data/spec/dummy_app/config.ru +4 -0
  248. data/spec/dummy_app/config/application.rb +47 -0
  249. data/spec/dummy_app/config/boot.rb +6 -0
  250. data/spec/dummy_app/config/database.yml +22 -0
  251. data/spec/dummy_app/config/environment.rb +5 -0
  252. data/spec/dummy_app/config/environments/development.rb +27 -0
  253. data/spec/dummy_app/config/environments/production.rb +51 -0
  254. data/spec/dummy_app/config/environments/test.rb +39 -0
  255. data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
  256. data/spec/dummy_app/config/initializers/devise.rb +142 -0
  257. data/spec/dummy_app/config/initializers/inflections.rb +10 -0
  258. data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
  259. data/spec/dummy_app/config/initializers/quiet_assets.rb +10 -0
  260. data/spec/dummy_app/config/initializers/rails_admin.rb +11 -0
  261. data/spec/dummy_app/config/initializers/secret_token.rb +7 -0
  262. data/spec/dummy_app/config/initializers/session_store.rb +8 -0
  263. data/spec/dummy_app/config/routes.rb +10 -0
  264. data/spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb +13 -0
  265. data/spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb +19 -0
  266. data/spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb +12 -0
  267. data/spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb +20 -0
  268. data/spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb +22 -0
  269. data/spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb +19 -0
  270. data/spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb +16 -0
  271. data/spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb +12 -0
  272. data/spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb +11 -0
  273. data/spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb +9 -0
  274. data/spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb +9 -0
  275. data/spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb +16 -0
  276. data/spec/dummy_app/db/migrate/00000000000013_add_roles_to_user.rb +9 -0
  277. data/spec/dummy_app/db/migrate/00000000000014_add_color_to_team_migration.rb +9 -0
  278. data/spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb +15 -0
  279. data/spec/dummy_app/db/migrate/20110103205808_create_comments.rb +15 -0
  280. data/spec/dummy_app/db/migrate/20110123042530_rename_histories_to_rails_admin_histories.rb +9 -0
  281. data/spec/dummy_app/db/migrate/20110224184303_create_field_tests.rb +22 -0
  282. data/spec/dummy_app/db/migrate/20110328193014_create_cms_basic_pages.rb +14 -0
  283. data/spec/dummy_app/db/migrate/20110329183136_remove_league_id_from_teams.rb +9 -0
  284. data/spec/dummy_app/db/migrate/20110607152842_add_format_to_field_test.rb +9 -0
  285. data/spec/dummy_app/db/migrate/20110714095433_create_balls.rb +12 -0
  286. data/spec/dummy_app/db/migrate/20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb +6 -0
  287. data/spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb +19 -0
  288. data/spec/dummy_app/db/migrate/20110901142530_rename_league_id_foreign_key_on_divisions.rb +5 -0
  289. data/spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb +21 -0
  290. data/spec/dummy_app/db/migrate/20110901154834_change_length_for_rails_admin_histories.rb +9 -0
  291. data/spec/dummy_app/db/migrate/20111103174459_create_unscoped_pages.rb +9 -0
  292. data/spec/dummy_app/db/migrate/20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb +7 -0
  293. data/spec/dummy_app/db/migrate/20111115041025_add_type_to_balls.rb +5 -0
  294. data/spec/dummy_app/db/migrate/20111123092549_create_nested_field_tests.rb +10 -0
  295. data/spec/dummy_app/db/migrate/20111130075338_add_dragonfly_asset_name_to_field_tests.rb +5 -0
  296. data/spec/dummy_app/db/migrate/20111215083258_create_foo_bars.rb +8 -0
  297. data/spec/dummy_app/db/migrate/20120117151733_add_custom_field_to_teams.rb +5 -0
  298. data/spec/dummy_app/db/migrate/20120118122004_add_categories.rb +7 -0
  299. data/spec/dummy_app/db/seeds.rb +18 -0
  300. data/spec/dummy_app/foo/Gemfile +17 -0
  301. data/spec/dummy_app/foo/MIT-LICENSE +20 -0
  302. data/spec/dummy_app/foo/README.rdoc +3 -0
  303. data/spec/dummy_app/foo/Rakefile +39 -0
  304. data/spec/dummy_app/foo/app/assets/javascripts/foo/application.js +9 -0
  305. data/spec/dummy_app/foo/app/assets/stylesheets/foo/application.css +7 -0
  306. data/spec/dummy_app/foo/app/controllers/foo/application_controller.rb +4 -0
  307. data/spec/dummy_app/foo/app/helpers/foo/application_helper.rb +4 -0
  308. data/spec/dummy_app/foo/app/models/foo/bar.rb +4 -0
  309. data/spec/dummy_app/foo/app/views/layouts/foo/application.html.erb +14 -0
  310. data/spec/dummy_app/foo/config/routes.rb +2 -0
  311. data/spec/dummy_app/foo/foo.gemspec +23 -0
  312. data/spec/dummy_app/foo/lib/foo.rb +4 -0
  313. data/spec/dummy_app/foo/lib/foo/engine.rb +5 -0
  314. data/spec/dummy_app/foo/lib/foo/version.rb +3 -0
  315. data/spec/dummy_app/foo/lib/tasks/foo_tasks.rake +4 -0
  316. data/spec/dummy_app/foo/script/rails +6 -0
  317. data/spec/dummy_app/foo/test/dummy/Rakefile +7 -0
  318. data/spec/dummy_app/foo/test/dummy/app/assets/javascripts/application.js +9 -0
  319. data/spec/dummy_app/foo/test/dummy/app/assets/stylesheets/application.css +7 -0
  320. data/spec/dummy_app/foo/test/dummy/app/controllers/application_controller.rb +3 -0
  321. data/spec/dummy_app/foo/test/dummy/app/helpers/application_helper.rb +2 -0
  322. data/spec/dummy_app/foo/test/dummy/app/views/layouts/application.html.erb +14 -0
  323. data/spec/dummy_app/foo/test/dummy/config.ru +4 -0
  324. data/spec/dummy_app/foo/test/dummy/config/application.rb +45 -0
  325. data/spec/dummy_app/foo/test/dummy/config/boot.rb +10 -0
  326. data/spec/dummy_app/foo/test/dummy/config/database.yml +25 -0
  327. data/spec/dummy_app/foo/test/dummy/config/environment.rb +5 -0
  328. data/spec/dummy_app/foo/test/dummy/config/environments/development.rb +30 -0
  329. data/spec/dummy_app/foo/test/dummy/config/environments/production.rb +60 -0
  330. data/spec/dummy_app/foo/test/dummy/config/environments/test.rb +39 -0
  331. data/spec/dummy_app/foo/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  332. data/spec/dummy_app/foo/test/dummy/config/initializers/inflections.rb +10 -0
  333. data/spec/dummy_app/foo/test/dummy/config/initializers/mime_types.rb +5 -0
  334. data/spec/dummy_app/foo/test/dummy/config/initializers/secret_token.rb +7 -0
  335. data/spec/dummy_app/foo/test/dummy/config/initializers/session_store.rb +8 -0
  336. data/spec/dummy_app/foo/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  337. data/spec/dummy_app/foo/test/dummy/config/locales/en.yml +5 -0
  338. data/spec/dummy_app/foo/test/dummy/config/routes.rb +4 -0
  339. data/spec/dummy_app/foo/test/dummy/db/schema.rb +21 -0
  340. data/spec/dummy_app/foo/test/dummy/public/404.html +26 -0
  341. data/spec/dummy_app/foo/test/dummy/public/422.html +26 -0
  342. data/spec/dummy_app/foo/test/dummy/public/500.html +26 -0
  343. data/spec/dummy_app/foo/test/dummy/public/favicon.ico +0 -0
  344. data/spec/dummy_app/foo/test/dummy/script/rails +6 -0
  345. data/spec/dummy_app/foo/test/fixtures/foo/bars.yml +11 -0
  346. data/spec/dummy_app/foo/test/foo_test.rb +7 -0
  347. data/spec/dummy_app/foo/test/integration/navigation_test.rb +10 -0
  348. data/spec/dummy_app/foo/test/test_helper.rb +10 -0
  349. data/spec/dummy_app/foo/test/unit/foo/bar_test.rb +9 -0
  350. data/spec/dummy_app/public/404.html +0 -0
  351. data/spec/dummy_app/public/favicon.ico +0 -0
  352. data/spec/dummy_app/public/system/dragonfly/development/2011/11/24/10_36_27_888_Pensive_Parakeet.jpg +0 -0
  353. data/spec/dummy_app/public/system/dragonfly/development/2011/11/24/10_36_27_888_Pensive_Parakeet.jpg.meta +1 -0
  354. data/spec/dummy_app/public/system/dragonfly/development/2011/11/30/08_54_39_906_Costa_Rican_Frog.jpg +0 -0
  355. data/spec/dummy_app/public/system/dragonfly/development/2011/11/30/08_54_39_906_Costa_Rican_Frog.jpg.meta +1 -0
  356. data/spec/dummy_app/public/system/paperclip_assets/1/original/Boston City Flow.jpg +0 -0
  357. data/spec/dummy_app/public/system/paperclip_assets/1/thumb/Boston City Flow.jpg +0 -0
  358. data/spec/dummy_app/public/system/paperclip_assets/3/original/Costa Rican Frog.jpg +0 -0
  359. data/spec/dummy_app/public/system/paperclip_assets/3/thumb/Costa Rican Frog.jpg +0 -0
  360. data/spec/dummy_app/public/system/paperclip_assets/6/original/liste-electorale.pdf +0 -0
  361. data/spec/dummy_app/public/system/paperclip_assets/6/thumb/liste-electorale.pdf +148 -0
  362. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/3/Boston_City_Flow.jpg +0 -0
  363. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/3/thumb_Boston_City_Flow.jpg +0 -0
  364. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/4/Costa_Rican_Frog.jpg +0 -0
  365. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/4/thumb_Costa_Rican_Frog.jpg +0 -0
  366. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/6/Pensive_Parakeet.jpg +0 -0
  367. data/spec/dummy_app/public/uploads/field_test/carrierwave_asset/6/thumb_Pensive_Parakeet.jpg +0 -0
  368. data/spec/dummy_app/script/rails +6 -0
  369. data/spec/factories.rb +66 -0
  370. data/spec/generator_helpers.rb +30 -0
  371. data/spec/generators/install_generator_spec.rb +85 -0
  372. data/spec/generators/uninstall_generator_spec.rb +35 -0
  373. data/spec/helpers/application_helper_spec.rb +212 -0
  374. data/spec/lib/abstract_object_spec.rb +119 -0
  375. data/spec/lib/custom_field.rb +7 -0
  376. data/spec/lib/rails_admin_spec.rb +301 -0
  377. data/spec/requests/actions.rb +161 -0
  378. data/spec/requests/authorization/cancan_spec.rb +350 -0
  379. data/spec/requests/basic/bulk_action/rails_admin_basic_bulk_action_spec.rb +25 -0
  380. data/spec/requests/basic/bulk_destroy/rails_admin_basic_bulk_destroy_spec.rb +57 -0
  381. data/spec/requests/basic/create/rails_admin_basic_create_spec.rb +143 -0
  382. data/spec/requests/basic/create/rails_admin_namespaced_model_create_spec.rb +39 -0
  383. data/spec/requests/basic/delete/rails_admin_basic_delete_spec.rb +27 -0
  384. data/spec/requests/basic/destroy/rails_admin_basic_destroy_spec.rb +56 -0
  385. data/spec/requests/basic/edit/rails_admin_basic_edit_spec.rb +109 -0
  386. data/spec/requests/basic/export/rails_admin_basic_export_spec.rb +87 -0
  387. data/spec/requests/basic/list/rails_admin_basic_list_spec.rb +417 -0
  388. data/spec/requests/basic/new/rails_admin_basic_new_spec.rb +74 -0
  389. data/spec/requests/basic/new/rails_admin_namespaced_model_new_spec.rb +31 -0
  390. data/spec/requests/basic/show/rails_admin_basic_show_spec.rb +92 -0
  391. data/spec/requests/basic/update/rails_admin_basic_update_spec.rb +191 -0
  392. data/spec/requests/config/edit/rails_admin_config_edit_spec.rb +913 -0
  393. data/spec/requests/config/list/rails_admin_config_list_spec.rb +509 -0
  394. data/spec/requests/config/navigation/rails_admin_config_navigation_spec.rb +107 -0
  395. data/spec/requests/config/rails_admin_config_spec.rb +227 -0
  396. data/spec/requests/config/show/rails_admin_config_show_spec.rb +282 -0
  397. data/spec/requests/history/rails_admin_history_spec.rb +66 -0
  398. data/spec/requests/rails_admin_spec.rb +146 -0
  399. data/spec/requests/relation_spec.rb +26 -0
  400. data/spec/spec_helper.rb +91 -0
  401. metadata +967 -0
@@ -0,0 +1,350 @@
1
+ require 'spec_helper'
2
+
3
+ class Ability
4
+ include CanCan::Ability
5
+ def initialize(user)
6
+ can :access, :rails_admin if user.roles.include? :admin
7
+ unless user.roles.include? :test_exception
8
+ can :dashboard
9
+ can :manage, Player if user.roles.include? :manage_player
10
+ can :read, Player, :retired => false if user.roles.include? :read_player
11
+ can :create, Player, :suspended => true if user.roles.include? :create_player
12
+ can :update, Player, :retired => false if user.roles.include? :update_player
13
+ can :destroy, Player, :retired => false if user.roles.include? :destroy_player
14
+ can :history, Player, :retired => false if user.roles.include? :history_player
15
+ can :show_in_app, Player, :retired => false if user.roles.include? :show_in_app_player
16
+ else
17
+ can :dashboard
18
+ can :access, :rails_admin
19
+ can :manage, :all
20
+ can :show_in_app, :all
21
+ cannot [:update, :destroy], Player, :retired => true
22
+ end
23
+ end
24
+ end
25
+
26
+ class AdminAbility
27
+ include CanCan::Ability
28
+ def initialize(user)
29
+ can :access, :rails_admin if user.roles.include? :admin
30
+ can :show_in_app, :all
31
+ can :manage, :all
32
+ end
33
+ end
34
+
35
+ describe "RailsAdmin CanCan Authorization" do
36
+
37
+ subject { page }
38
+
39
+ before(:each) do
40
+ RailsAdmin.config{|c| c.authorize_with(:cancan); c.audit_with(:history, User) }
41
+ @user = FactoryGirl.create :user
42
+ login_as @user
43
+ end
44
+
45
+ describe "with no roles" do
46
+ before(:each) do
47
+ @user.update_attribute(:roles, [])
48
+ end
49
+
50
+ it "GET /admin should raise CanCan::AccessDenied" do
51
+ visit dashboard_path
52
+ should have_content('CanCan::AccessDenied')
53
+ end
54
+
55
+ it "GET /admin/player should raise CanCan::AccessDenied" do
56
+ visit index_path(:model_name => "player")
57
+ should have_content('CanCan::AccessDenied')
58
+ end
59
+ end
60
+
61
+ describe "with read player role" do
62
+ before(:each) do
63
+ @user.update_attribute(:roles, [:admin, :read_player])
64
+ end
65
+
66
+ it "GET /admin should show Player but not League" do
67
+ visit dashboard_path
68
+ body.should have_content("Player")
69
+ body.should_not have_content("League")
70
+ body.should_not have_content("Add new")
71
+ end
72
+
73
+ it "GET /admin/player should render successfully but not list retired players and not show new, edit, or delete actions" do
74
+ @players = [
75
+ FactoryGirl.create(:player, :retired => false),
76
+ FactoryGirl.create(:player, :retired => true),
77
+ ]
78
+
79
+ visit index_path(:model_name => "player")
80
+
81
+ should have_content(@players[0].name)
82
+ should_not have_content(@players[1].name)
83
+ should_not have_content("Add new")
84
+ should have_css('.show_member_link')
85
+ should_not have_css('.edit_member_link')
86
+ should_not have_css('.delete_member_link')
87
+ should_not have_css('.history_show_member_link')
88
+ should_not have_css('.show_in_app_member_link')
89
+ end
90
+
91
+ it "GET /admin/team should raise CanCan::AccessDenied" do
92
+ visit index_path(:model_name => "team")
93
+ should have_content('CanCan::AccessDenied')
94
+ end
95
+
96
+ it "GET /admin/player/new should raise CanCan::AccessDenied" do
97
+ visit new_path(:model_name => "player")
98
+ should have_content('CanCan::AccessDenied')
99
+ end
100
+
101
+ end
102
+
103
+ describe "with create and read player role" do
104
+ before(:each) do
105
+ @user.update_attribute(:roles, [:admin, :read_player, :create_player])
106
+ end
107
+
108
+ it "GET /admin/player/new should render and create record upon submission" do
109
+ visit new_path(:model_name => "player")
110
+
111
+ should_not have_content("Save and edit")
112
+ should_not have_content("Delete")
113
+
114
+ should have_content("Save and add another")
115
+ fill_in "player[name]", :with => "Jackie Robinson"
116
+ fill_in "player[number]", :with => "42"
117
+ fill_in "player[position]", :with => "Second baseman"
118
+ click_button "Save"
119
+ should_not have_content("Edit")
120
+
121
+ @player = RailsAdmin::AbstractModel.new("Player").first
122
+ @player.name.should eql("Jackie Robinson")
123
+ @player.number.should eql(42)
124
+ @player.position.should eql("Second baseman")
125
+ @player.should be_suspended # suspended is inherited behavior based on permission
126
+ end
127
+
128
+ it "GET /admin/player/1/edit should raise access denied" do
129
+ @player = FactoryGirl.create :player
130
+ visit edit_path(:model_name => "player", :id => @player.id)
131
+ should have_content('CanCan::AccessDenied')
132
+ end
133
+
134
+ end
135
+
136
+ describe "with update and read player role" do
137
+ before(:each) do
138
+ @user.update_attribute(:roles, [:admin, :read_player, :update_player])
139
+ end
140
+
141
+ it "GET /admin/player/1/edit should render and update record upon submission" do
142
+ @player = FactoryGirl.create :player
143
+ visit edit_path(:model_name => "player", :id => @player.id)
144
+
145
+ should have_content("Save and edit")
146
+ should_not have_content("Save and add another")
147
+ should_not have_content("Add new")
148
+ should_not have_content("Delete")
149
+ should_not have_content("History")
150
+ should_not have_content("Show in app")
151
+ fill_in "player[name]", :with => "Jackie Robinson"
152
+ click_button "Save"
153
+ @player.reload
154
+ @player.name.should eql("Jackie Robinson")
155
+ end
156
+
157
+ it "GET /admin/player/1/edit with retired player should raise access denied" do
158
+ @player = FactoryGirl.create :player, :retired => true
159
+ visit edit_path(:model_name => "player", :id => @player.id)
160
+ should have_content('CanCan::AccessDenied')
161
+ end
162
+
163
+ it "GET /admin/player/1/delete should raise access denied" do
164
+ @player = FactoryGirl.create :player
165
+ visit delete_path(:model_name => "player", :id => @player.id)
166
+ should have_content('CanCan::AccessDenied')
167
+ end
168
+
169
+ end
170
+
171
+ describe "with history role" do
172
+ it 'shows links to history action' do
173
+
174
+ @user.update_attribute(:roles, [:admin, :read_player, :history_player])
175
+ @player = FactoryGirl.create :player
176
+
177
+ visit index_path(:model_name => "player")
178
+ should have_css('.show_member_link')
179
+ should_not have_css('.edit_member_link')
180
+ should_not have_css('.delete_member_link')
181
+ should have_css('.history_show_member_link')
182
+
183
+ visit show_path(:model_name => 'player', :id => @player.id)
184
+ should have_content("Show")
185
+ should_not have_content("Edit")
186
+ should_not have_content("Delete")
187
+ should have_content("History")
188
+
189
+ end
190
+ end
191
+
192
+ describe "with show in app role" do
193
+ it 'shows links to show in app action' do
194
+
195
+ @user.update_attribute(:roles, [:admin, :read_player, :show_in_app_player])
196
+ @player = FactoryGirl.create :player
197
+
198
+ visit index_path(:model_name => "player")
199
+ should have_css('.show_member_link')
200
+ should_not have_css('.edit_member_link')
201
+ should_not have_css('.delete_member_link')
202
+ should_not have_css('.history_show_member_link')
203
+ should have_css('.show_in_app_member_link')
204
+
205
+ visit show_path(:model_name => 'player', :id => @player.id)
206
+ should have_content("Show")
207
+ should_not have_content("Edit")
208
+ should_not have_content("Delete")
209
+ should_not have_content("History")
210
+ should have_content("Show in app")
211
+
212
+ end
213
+ end
214
+
215
+ describe "with all roles" do
216
+ it 'shows links to all actions' do
217
+
218
+ @user.update_attribute(:roles, [:admin, :manage_player])
219
+ @player = FactoryGirl.create :player
220
+
221
+ visit index_path(:model_name => "player")
222
+ should have_css('.show_member_link')
223
+ should have_css('.edit_member_link')
224
+ should have_css('.delete_member_link')
225
+ should have_css('.history_show_member_link')
226
+ should have_css('.show_in_app_member_link')
227
+
228
+ visit show_path(:model_name => 'player', :id => @player.id)
229
+ should have_content("Show")
230
+ should have_content("Edit")
231
+ should have_content("Delete")
232
+ should have_content("History")
233
+ should have_content("Show in app")
234
+
235
+ end
236
+ end
237
+
238
+ describe "with destroy and read player role" do
239
+ before(:each) do
240
+ @user.update_attribute(:roles, [:admin, :read_player, :destroy_player])
241
+ end
242
+
243
+ it "GET /admin/player/1/delete should render and destroy record upon submission" do
244
+ @player = FactoryGirl.create :player
245
+ player_id = @player.id
246
+ visit delete_path(:model_name => "player", :id => player_id)
247
+
248
+ click_button "Yes, I'm sure"
249
+
250
+ Player.exists?(player_id).should be_false
251
+ end
252
+
253
+ it "GET /admin/player/1/delete with retired player should raise access denied" do
254
+ @player = FactoryGirl.create :player, :retired => true
255
+ visit delete_path(:model_name => "player", :id => @player.id)
256
+ should have_content('CanCan::AccessDenied')
257
+ end
258
+
259
+ it "GET /admin/player/bulk_delete should render records which are authorized to" do
260
+ active_player = FactoryGirl.create :player, :retired => false
261
+ retired_player = FactoryGirl.create :player, :retired => true
262
+
263
+ page.driver.post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id)))
264
+
265
+ should have_content(active_player.name)
266
+ should_not have_content(retired_player.name)
267
+ end
268
+
269
+ it "POST /admin/player/bulk_destroy should destroy records which are authorized to" do
270
+ active_player = FactoryGirl.create :player, :retired => false
271
+ retired_player = FactoryGirl.create :player, :retired => true
272
+
273
+ page.driver.delete(bulk_delete_path(:model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id)))
274
+ Player.exists?(active_player.id).should be_false
275
+ Player.exists?(retired_player.id).should be_true
276
+ end
277
+ end
278
+
279
+ describe "with exception role" do
280
+ it "GET /admin/player/bulk_delete should render records which are authorized to" do
281
+ @user.update_attribute(:roles, [:admin, :test_exception])
282
+ active_player = FactoryGirl.create :player, :retired => false
283
+ retired_player = FactoryGirl.create :player, :retired => true
284
+
285
+ page.driver.post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id)))
286
+
287
+ should have_content(active_player.name)
288
+ should_not have_content(retired_player.name)
289
+ end
290
+
291
+ it "POST /admin/player/bulk_destroy should destroy records which are authorized to" do
292
+ @user.update_attribute(:roles, [:admin, :test_exception])
293
+ active_player = FactoryGirl.create :player, :retired => false
294
+ retired_player = FactoryGirl.create :player, :retired => true
295
+
296
+ page.driver.delete(bulk_delete_path(:model_name => "player", :bulk_ids => [active_player, retired_player].map(&:id)))
297
+ Player.exists?(active_player.id).should be_false
298
+ Player.exists?(retired_player.id).should be_true
299
+ end
300
+ end
301
+
302
+ describe "with a custom admin ability" do
303
+ before(:each) do
304
+ RailsAdmin.config{|c| c.authorize_with :cancan, AdminAbility }
305
+ @user = FactoryGirl.create :user
306
+ login_as @user
307
+ end
308
+
309
+ describe "with admin role only" do
310
+ before(:each) do
311
+ @user.update_attribute(:roles, [:admin])
312
+ end
313
+
314
+ it "GET /admin/team should render successfully" do
315
+ visit index_path(:model_name => "team")
316
+ page.status_code.should == 200
317
+ end
318
+
319
+ it "GET /admin/player/new should render successfully" do
320
+ visit new_path(:model_name => "player")
321
+ page.status_code.should == 200
322
+ end
323
+
324
+ it "GET /admin/player/1/edit should render successfully" do
325
+ @player = FactoryGirl.create :player
326
+ visit edit_path(:model_name => "player", :id => @player.id)
327
+ page.status_code.should == 200
328
+ end
329
+
330
+ it "GET /admin/player/1/edit with retired player should render successfully" do
331
+ @player = FactoryGirl.create :player, :retired => true
332
+ visit edit_path(:model_name => "player", :id => @player.id)
333
+ page.status_code.should == 200
334
+ end
335
+
336
+ it "GET /admin/player/1/delete should render successfully" do
337
+ @player = FactoryGirl.create :player
338
+ visit delete_path(:model_name => "player", :id => @player.id)
339
+ page.status_code.should == 200
340
+ end
341
+
342
+ it "GET /admin/player/1/delete with retired player should render successfully" do
343
+ @player = FactoryGirl.create :player, :retired => true
344
+ visit delete_path(:model_name => "player", :id => @player.id)
345
+ page.status_code.should == 200
346
+ end
347
+ end
348
+ end
349
+
350
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe "RailsAdmin Basic Bulk Action" do
4
+
5
+ subject { page }
6
+
7
+ before(:each) do
8
+ @players = 2.times.map { FactoryGirl.create :player }
9
+ end
10
+
11
+ describe "bulk_delete" do
12
+ it 'should show names of to-be-deleted players' do
13
+ page.driver.post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => @players.map(&:id)))
14
+ @players.each { |player| should have_content(player.name) }
15
+ end
16
+ end
17
+
18
+ describe "bulk_export" do
19
+ it 'should show form for export' do
20
+ visit index_path(:model_name => "player")
21
+ click_link "Export found Players"
22
+ @players.each { |player| should have_content("Select fields to export") }
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,57 @@
1
+ require 'spec_helper'
2
+ require 'rails_admin/extensions/history/history'
3
+
4
+ describe "RailsAdmin Basic Bulk Destroy" do
5
+ subject { page }
6
+
7
+ describe "successful bulk delete of records" do
8
+ before(:each) do
9
+ RailsAdmin::History.destroy_all
10
+ RailsAdmin.config { |c| c.audit_with :history }
11
+ @players = 3.times.map { FactoryGirl.create(:player) }
12
+ @delete_ids = @players[0..1].map(&:id)
13
+ page.driver.post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => @delete_ids))
14
+
15
+ click_button "Yes, I'm sure"
16
+ end
17
+
18
+ it "should not contain deleted records" do
19
+ RailsAdmin::AbstractModel.new("Player").count.should == 1
20
+ end
21
+
22
+ it "history count should be equal to number of deleted records" do
23
+ RailsAdmin::History.count.should == @delete_ids.count
24
+ end
25
+
26
+ it "history items should be for proper table" do
27
+ RailsAdmin::History.all.each do |history|
28
+ history.table.should == "Player"
29
+ end
30
+ end
31
+
32
+ it "history items should be for proper items" do
33
+ RailsAdmin::History.all.each do |history|
34
+ @delete_ids.should include(history.item)
35
+ end
36
+ end
37
+
38
+ it "displays a flash notice stating the number of records destroyed" do
39
+ # 2 Players because @delete_ids.count == 2:
40
+ page.should have_selector(".alert-message", :text => "2 Players successfully deleted")
41
+ end
42
+ end
43
+
44
+ describe "cancelled bulk_deletion" do
45
+ before(:each) do
46
+ RailsAdmin::History.destroy_all
47
+ @players = 3.times.map { FactoryGirl.create(:player) }
48
+ @delete_ids = @players[0..1].map(&:id)
49
+ page.driver.post(bulk_action_path(:bulk_action => 'bulk_delete', :model_name => "player", :bulk_ids => @delete_ids))
50
+ click_button "Cancel"
51
+ end
52
+
53
+ it "should not delete records" do
54
+ RailsAdmin::AbstractModel.new("Player").count.should == 3
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,143 @@
1
+ require 'spec_helper'
2
+
3
+ describe "RailsAdmin Basic Create" do
4
+ subject { page }
5
+
6
+ describe "create" do
7
+ before(:each) do
8
+ visit new_path(:model_name => "player")
9
+
10
+ fill_in "player[name]", :with => "Jackie Robinson"
11
+ fill_in "player[number]", :with => "42"
12
+ fill_in "player[position]", :with => "Second baseman"
13
+ click_button "Save"
14
+
15
+ @player = RailsAdmin::AbstractModel.new("Player").first
16
+ end
17
+
18
+ it "should create an object with correct attributes" do
19
+ @player.name.should eql("Jackie Robinson")
20
+ @player.number.should eql(42)
21
+ @player.position.should eql("Second baseman")
22
+ end
23
+ end
24
+
25
+ describe "create and edit" do
26
+ before(:each) do
27
+ visit new_path(:model_name => "player")
28
+
29
+ fill_in "player[name]", :with => "Jackie Robinson"
30
+ fill_in "player[number]", :with => "42"
31
+ fill_in "player[position]", :with => "Second baseman"
32
+ click_button "Save and edit"
33
+
34
+ @player = RailsAdmin::AbstractModel.new("Player").first
35
+ end
36
+
37
+ it "should create an object with correct attributes" do
38
+ @player.name.should eql("Jackie Robinson")
39
+ @player.number.should eql(42)
40
+ @player.position.should eql("Second baseman")
41
+ end
42
+ end
43
+
44
+ describe "create and add another" do
45
+ before(:each) do
46
+ visit new_path(:model_name => "player")
47
+
48
+ fill_in "player[name]", :with => "Jackie Robinson"
49
+ fill_in "player[number]", :with => "42"
50
+ fill_in "player[position]", :with => "Second baseman"
51
+ click_button "Save and add another"
52
+
53
+ @player = RailsAdmin::AbstractModel.new("Player").first
54
+ end
55
+
56
+ it "should create an object with correct attributes" do
57
+ @player.name.should eql("Jackie Robinson")
58
+ @player.number.should eql(42)
59
+ @player.position.should eql("Second baseman")
60
+ end
61
+ end
62
+
63
+ describe "create with has-one association" do
64
+ before(:each) do
65
+ @draft = FactoryGirl.create :draft
66
+
67
+ page.driver.post new_path(:model_name => "player", :player => {:name => "Jackie Robinson", :number => 42, :position => 'Second baseman', :draft_id => @draft.id})
68
+
69
+ @player = RailsAdmin::AbstractModel.new("Player").all.last # first is created by FactoryGirl
70
+ end
71
+
72
+ it "should create an object with correct associations" do
73
+ @draft.reload
74
+ @player.draft.should eql(@draft)
75
+ end
76
+ end
77
+
78
+ describe "create with has-many association" do
79
+ before(:each) do
80
+ @divisions = 3.times.map { Division.create!(:name => "div #{Time.now.to_f}", :league => League.create!(:name => "league #{Time.now.to_f}")) }
81
+ page.driver.post new_path(:model_name => "league", :league => {:name => "National League", :division_ids =>[@divisions[0].id]})
82
+ @league = RailsAdmin::AbstractModel.new("League").all.last
83
+ end
84
+
85
+ it "should create an object with correct associations" do
86
+ @divisions[0].reload
87
+ @league.divisions.should include(@divisions[0])
88
+ @league.divisions.should_not include(@divisions[1])
89
+ @league.divisions.should_not include(@divisions[2])
90
+ end
91
+ end
92
+
93
+ describe "create with has-and-belongs-to-many association" do
94
+ before(:each) do
95
+ @teams = 3.times.map { FactoryGirl.create :team }
96
+ page.driver.post new_path(:model_name => "fan", :fan => {:name => "John Doe", :team_ids => [@teams[0].id] })
97
+ @fan = RailsAdmin::AbstractModel.new("Fan").first
98
+ end
99
+
100
+ it "should create an object with correct associations" do
101
+ @teams[0].reload
102
+ @fan.teams.should include(@teams[0])
103
+ @fan.teams.should_not include(@teams[1])
104
+ @fan.teams.should_not include(@teams[2])
105
+ end
106
+ end
107
+
108
+ describe "create with uniqueness constraint violated", :given => "a player exists" do
109
+ before(:each) do
110
+ @team = FactoryGirl.create :team
111
+ @player = FactoryGirl.create :player, :team => @team
112
+
113
+ page.driver.post new_path(:model_name => "player", :player => {:name => @player.name, :number => @player.number.to_s, :position => @player.position, :team_id => @team.id})
114
+ end
115
+
116
+ it "should show an error message" do
117
+ should have_content("There is already a player with that number on this team")
118
+ end
119
+ end
120
+
121
+ describe "create with invalid object" do
122
+ before(:each) do
123
+ page.driver.post(new_path(:model_name => "player", :id => 1), :params => {:player => {}})
124
+ end
125
+
126
+ it "should show an error message" do
127
+ should have_content("Player failed to be created")
128
+ should have_selector "form", :action => "/admin/players"
129
+ end
130
+ end
131
+
132
+ describe "create with object with errors on base" do
133
+ before(:each) do
134
+ visit new_path(:model_name => "player")
135
+ fill_in "player[name]", :with => "Jackie Robinson on steroids"
136
+ click_button "Save and add another"
137
+ end
138
+
139
+ it "should show error base error message in flash" do
140
+ should have_content("Player failed to be created. Player is cheating")
141
+ end
142
+ end
143
+ end