activeadmin 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activeadmin might be problematic. Click here for more details.

Files changed (322) hide show
  1. data/.gitignore +5 -1
  2. data/.travis.yml +1 -1
  3. data/.yardopts +2 -3
  4. data/CHANGELOG.md +180 -36
  5. data/CONTRIBUTING.md +12 -2
  6. data/Gemfile +9 -3
  7. data/README.rdoc +38 -65
  8. data/Rakefile +1 -3
  9. data/activeadmin.gemspec +10 -11
  10. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +1 -1
  11. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +1 -1
  12. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +1 -1
  13. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +1 -1
  14. data/app/assets/javascripts/active_admin/components/jquery.aa.checkbox-toggler.js.coffee +2 -2
  15. data/app/assets/javascripts/active_admin/components/jquery.aa.dropdown-menu.js.coffee +2 -2
  16. data/app/assets/javascripts/active_admin/components/jquery.aa.popover.js.coffee +2 -2
  17. data/app/assets/javascripts/active_admin/components/jquery.aa.table-checkbox-toggler.js.coffee +2 -2
  18. data/app/assets/javascripts/active_admin/lib/namespace.js.coffee +2 -1
  19. data/app/assets/javascripts/active_admin/pages/application.js.coffee +6 -1
  20. data/app/assets/stylesheets/active_admin/_base.css.scss +29 -34
  21. data/app/assets/stylesheets/active_admin/_forms.css.scss +65 -62
  22. data/app/assets/stylesheets/active_admin/_header.css.scss +57 -45
  23. data/app/assets/stylesheets/active_admin/_typography.css.scss +9 -9
  24. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +1 -1
  25. data/app/assets/stylesheets/active_admin/components/_blank_slates.scss +5 -5
  26. data/app/assets/stylesheets/active_admin/components/_breadcrumbs.scss +2 -2
  27. data/app/assets/stylesheets/active_admin/components/_comments.css.scss +1 -1
  28. data/app/assets/stylesheets/active_admin/components/_date_picker.css.scss +20 -20
  29. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +16 -16
  30. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +25 -23
  31. data/app/assets/stylesheets/active_admin/components/_grid.scss +2 -2
  32. data/app/assets/stylesheets/active_admin/components/_index_list.scss +1 -1
  33. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -10
  34. data/app/assets/stylesheets/active_admin/components/_panels.scss +1 -1
  35. data/app/assets/stylesheets/active_admin/components/_popovers.css.scss +27 -27
  36. data/app/assets/stylesheets/active_admin/components/_scopes.scss +1 -1
  37. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +10 -10
  38. data/app/assets/stylesheets/active_admin/components/_tables.css.scss +9 -9
  39. data/app/assets/stylesheets/active_admin/mixins/_buttons.css.scss +3 -3
  40. data/app/assets/stylesheets/active_admin/mixins/_gradients.css.scss +4 -4
  41. data/app/assets/stylesheets/active_admin/mixins/_icons.css.scss +4 -7
  42. data/app/assets/stylesheets/active_admin/mixins/_reset.css.scss +5 -5
  43. data/app/assets/stylesheets/active_admin/mixins/_rounded.css.scss +3 -3
  44. data/app/assets/stylesheets/active_admin/mixins/_sections.css.scss +6 -6
  45. data/app/assets/stylesheets/active_admin/mixins/_shadows.css.scss +8 -8
  46. data/app/assets/stylesheets/active_admin/mixins/_typography.scss +1 -1
  47. data/app/assets/stylesheets/active_admin/mixins/_utilities.scss +1 -1
  48. data/app/assets/stylesheets/active_admin/mixins/_variables.css.scss +9 -1
  49. data/app/assets/stylesheets/active_admin/pages/_logged_out.scss +1 -1
  50. data/app/assets/stylesheets/active_admin/print.css.scss +2 -8
  51. data/app/assets/stylesheets/active_admin/structure/_footer.scss +5 -5
  52. data/app/assets/stylesheets/active_admin/structure/_main_structure.scss +13 -13
  53. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +14 -14
  54. data/app/views/active_admin/devise/passwords/edit.html.erb +1 -1
  55. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  56. data/app/views/active_admin/devise/shared/_links.erb +8 -1
  57. data/app/views/active_admin/resource/index.csv.erb +3 -3
  58. data/app/views/layouts/active_admin_logged_out.html.erb +5 -3
  59. data/config/locales/bg.yml +101 -0
  60. data/{lib/active_admin → config}/locales/ca.yml +24 -7
  61. data/{lib/active_admin → config}/locales/cs.yml +34 -12
  62. data/{lib/active_admin → config}/locales/da.yml +29 -7
  63. data/config/locales/de-CH.yml +117 -0
  64. data/{lib/active_admin → config}/locales/de.yml +19 -9
  65. data/config/locales/en-GB.yml +90 -0
  66. data/{lib/active_admin → config}/locales/en.yml +16 -6
  67. data/config/locales/es.yml +106 -0
  68. data/{lib/active_admin/locales/es.yml → config/locales/es_MX.yml} +14 -8
  69. data/{lib/active_admin → config}/locales/fr.yml +14 -6
  70. data/{lib/active_admin → config}/locales/he.yml +16 -6
  71. data/{lib/active_admin → config}/locales/hr.yml +14 -6
  72. data/{lib/active_admin → config}/locales/hu.yml +31 -6
  73. data/{lib/active_admin → config}/locales/it.yml +14 -6
  74. data/{lib/active_admin → config}/locales/ja.yml +32 -7
  75. data/{lib/active_admin → config}/locales/ko.yml +14 -6
  76. data/{lib/active_admin → config}/locales/lt.yml +15 -6
  77. data/{lib/active_admin → config}/locales/lv.yml +14 -6
  78. data/{lib/active_admin → config}/locales/nl.yml +14 -6
  79. data/{lib/active_admin → config}/locales/no-NB.yml +14 -6
  80. data/{lib/active_admin → config}/locales/pl.yml +14 -6
  81. data/{lib/active_admin → config}/locales/pt-BR.yml +14 -6
  82. data/{lib/active_admin → config}/locales/pt-PT.yml +14 -6
  83. data/{lib/active_admin → config}/locales/ro.yml +32 -7
  84. data/{lib/active_admin → config}/locales/ru.yml +30 -8
  85. data/{lib/active_admin → config}/locales/sv-SE.yml +14 -6
  86. data/{lib/active_admin → config}/locales/tr.yml +15 -6
  87. data/config/locales/uk.yml +100 -0
  88. data/{lib/active_admin → config}/locales/vi.yml +15 -6
  89. data/{lib/active_admin → config}/locales/zh-CN.yml +15 -6
  90. data/{lib/active_admin → config}/locales/zh-TW.yml +15 -6
  91. data/docs/0-installation.md +22 -18
  92. data/docs/1-general-configuration.md +1 -1
  93. data/docs/10-custom-pages.md +3 -3
  94. data/docs/11-decorators.md +18 -2
  95. data/docs/12-arbre-components.md +53 -54
  96. data/docs/13-authorization-adapter.md +31 -10
  97. data/docs/2-resource-customization.md +16 -1
  98. data/docs/3-index-pages.md +13 -1
  99. data/docs/3-index-pages/create-an-index.md +4 -4
  100. data/docs/3-index-pages/index-as-block.md +1 -1
  101. data/docs/3-index-pages/index-as-blog.md +1 -1
  102. data/docs/3-index-pages/index-as-grid.md +1 -1
  103. data/docs/4-csv-format.md +4 -4
  104. data/docs/5-forms.md +46 -3
  105. data/docs/{6-show-screens.md → 6-show-pages.md} +3 -3
  106. data/docs/8-custom-actions.md +3 -3
  107. data/docs/9-batch-actions.md +9 -1
  108. data/features/action_item.feature +6 -6
  109. data/features/authorization_cancan.feature +1 -1
  110. data/features/belongs_to.feature +3 -3
  111. data/features/breadcrumb.feature +2 -2
  112. data/features/comments/commenting.feature +7 -5
  113. data/features/dashboard.feature +0 -51
  114. data/features/favicon.feature +20 -0
  115. data/features/global_navigation.feature +0 -1
  116. data/features/index/batch_actions.feature +12 -11
  117. data/features/index/filters.feature +6 -6
  118. data/features/index/format_as_csv.feature +4 -5
  119. data/features/index/index_as_blog.feature +20 -1
  120. data/features/index/index_as_table.feature +1 -1
  121. data/features/index/index_blank_slate.feature +3 -3
  122. data/features/index/index_parameters.feature +4 -10
  123. data/features/index/index_scope_to.feature +24 -0
  124. data/features/index/index_scopes.feature +17 -5
  125. data/features/index/pagination.feature +15 -0
  126. data/features/registering_pages.feature +1 -1
  127. data/features/registering_resources.feature +2 -2
  128. data/features/show/default_content.feature +3 -3
  129. data/features/sidebar_sections.feature +3 -3
  130. data/features/specifying_actions.feature +1 -1
  131. data/features/step_definitions/additional_web_steps.rb +3 -16
  132. data/features/step_definitions/asset_steps.rb +5 -1
  133. data/features/step_definitions/attribute_steps.rb +4 -4
  134. data/features/step_definitions/batch_action_steps.rb +25 -74
  135. data/features/step_definitions/breadcrumb_steps.rb +1 -3
  136. data/features/step_definitions/comment_steps.rb +0 -1
  137. data/features/step_definitions/configuration_steps.rb +53 -69
  138. data/features/step_definitions/dashboard_steps.rb +2 -2
  139. data/features/step_definitions/factory_steps.rb +17 -33
  140. data/features/step_definitions/filter_steps.rb +2 -2
  141. data/features/step_definitions/format_steps.rb +10 -14
  142. data/features/step_definitions/index_scope_steps.rb +9 -25
  143. data/features/step_definitions/index_views_steps.rb +1 -1
  144. data/features/step_definitions/sidebar_steps.rb +2 -1
  145. data/features/step_definitions/site_title_steps.rb +1 -1
  146. data/features/step_definitions/table_steps.rb +6 -1
  147. data/features/step_definitions/user_steps.rb +23 -38
  148. data/features/step_definitions/web_steps.rb +18 -147
  149. data/features/support/env.rb +13 -34
  150. data/features/support/paths.rb +2 -0
  151. data/features/users/logging_in.feature +2 -2
  152. data/features/users/logging_out.feature +0 -12
  153. data/features/users/resetting_password.feature +1 -1
  154. data/lib/active_admin.rb +4 -17
  155. data/lib/active_admin/abstract_view_factory.rb +1 -1
  156. data/lib/active_admin/application.rb +19 -28
  157. data/lib/active_admin/asset_registration.rb +7 -25
  158. data/lib/active_admin/authorization_adapter.rb +9 -5
  159. data/lib/active_admin/base_controller.rb +2 -2
  160. data/lib/active_admin/base_controller/authorization.rb +25 -27
  161. data/lib/active_admin/batch_actions/resource_extension.rb +3 -3
  162. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +1 -1
  163. data/lib/active_admin/batch_actions/views/selection_cells.rb +1 -1
  164. data/lib/active_admin/callbacks.rb +1 -1
  165. data/lib/active_admin/cancan_adapter.rb +2 -2
  166. data/lib/active_admin/comments.rb +32 -38
  167. data/lib/active_admin/comments/comment.rb +6 -8
  168. data/lib/active_admin/comments/views.rb +0 -1
  169. data/lib/active_admin/comments/views/active_admin_comments.rb +27 -38
  170. data/lib/active_admin/csv_builder.rb +4 -6
  171. data/lib/active_admin/dependency_checker.rb +4 -0
  172. data/lib/active_admin/deprecation.rb +3 -3
  173. data/lib/active_admin/dsl.rb +5 -5
  174. data/lib/active_admin/engine.rb +1 -1
  175. data/lib/active_admin/filters.rb +2 -1
  176. data/lib/active_admin/filters/forms.rb +36 -43
  177. data/lib/active_admin/filters/formtastic_addons.rb +45 -0
  178. data/lib/active_admin/filters/resource_extension.rb +9 -1
  179. data/lib/active_admin/form_builder.rb +30 -19
  180. data/lib/active_admin/helpers/optional_display.rb +11 -13
  181. data/lib/active_admin/helpers/settings.rb +50 -8
  182. data/lib/active_admin/inputs/filter_base.rb +5 -18
  183. data/lib/active_admin/inputs/filter_base/search_method_select.rb +73 -0
  184. data/lib/active_admin/inputs/filter_boolean_input.rb +6 -14
  185. data/lib/active_admin/inputs/filter_check_boxes_input.rb +1 -1
  186. data/lib/active_admin/inputs/filter_numeric_input.rb +2 -47
  187. data/lib/active_admin/inputs/filter_select_input.rb +32 -10
  188. data/lib/active_admin/inputs/filter_string_input.rb +12 -14
  189. data/lib/active_admin/namespace.rb +8 -40
  190. data/lib/active_admin/page.rb +2 -2
  191. data/lib/active_admin/page_dsl.rb +1 -1
  192. data/lib/active_admin/reloader.rb +3 -3
  193. data/lib/active_admin/resource.rb +16 -23
  194. data/lib/active_admin/resource/belongs_to.rb +8 -5
  195. data/lib/active_admin/resource/menu.rb +10 -23
  196. data/lib/active_admin/resource/naming.rb +3 -3
  197. data/lib/active_admin/resource/page_presenters.rb +2 -2
  198. data/lib/active_admin/resource/routes.rb +74 -21
  199. data/lib/active_admin/resource/scope_to.rb +74 -0
  200. data/lib/active_admin/resource/scopes.rb +8 -4
  201. data/lib/active_admin/resource_collection.rb +20 -66
  202. data/lib/active_admin/resource_controller.rb +12 -16
  203. data/lib/active_admin/resource_controller/data_access.rb +19 -22
  204. data/lib/active_admin/resource_controller/resource_class_methods.rb +2 -2
  205. data/lib/active_admin/resource_controller/scoping.rb +4 -9
  206. data/lib/active_admin/resource_dsl.rb +5 -32
  207. data/lib/active_admin/router.rb +34 -47
  208. data/lib/active_admin/scope.rb +5 -3
  209. data/lib/active_admin/sidebar_section.rb +1 -1
  210. data/lib/active_admin/version.rb +1 -1
  211. data/lib/active_admin/view_factory.rb +1 -1
  212. data/lib/active_admin/view_helpers/auto_link_helper.rb +1 -1
  213. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +8 -8
  214. data/lib/active_admin/view_helpers/display_helper.rb +15 -6
  215. data/lib/active_admin/view_helpers/download_format_links_helper.rb +2 -2
  216. data/lib/active_admin/view_helpers/form_helper.rb +6 -1
  217. data/lib/active_admin/view_helpers/icon_helper.rb +1 -1
  218. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +5 -5
  219. data/lib/active_admin/view_helpers/title_helper.rb +1 -1
  220. data/lib/active_admin/views/components/action_list_popover.rb +6 -6
  221. data/lib/active_admin/views/components/attributes_table.rb +9 -12
  222. data/lib/active_admin/views/components/blank_slate.rb +4 -4
  223. data/lib/active_admin/views/components/columns.rb +1 -1
  224. data/lib/active_admin/views/components/index_list.rb +1 -1
  225. data/lib/active_admin/views/components/paginated_collection.rb +20 -12
  226. data/lib/active_admin/views/components/panel.rb +1 -1
  227. data/lib/active_admin/views/components/scopes.rb +2 -1
  228. data/lib/active_admin/views/components/sidebar_section.rb +1 -1
  229. data/lib/active_admin/views/components/status_tag.rb +1 -1
  230. data/lib/active_admin/views/header.rb +2 -2
  231. data/lib/active_admin/views/index_as_blog.rb +16 -3
  232. data/lib/active_admin/views/index_as_table.rb +2 -2
  233. data/lib/active_admin/views/pages/base.rb +8 -3
  234. data/lib/active_admin/views/pages/form.rb +2 -2
  235. data/lib/active_admin/views/pages/index.rb +19 -17
  236. data/lib/generators/active_admin/assets/templates/3.0/active_admin.js +1 -1
  237. data/lib/generators/active_admin/assets/templates/3.1/active_admin.css.scss +1 -13
  238. data/lib/generators/active_admin/devise/devise_generator.rb +22 -1
  239. data/lib/generators/active_admin/install/install_generator.rb +1 -5
  240. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +40 -19
  241. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +18 -18
  242. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +19 -0
  243. data/lib/generators/active_admin/resource/resource_generator.rb +1 -1
  244. data/lib/generators/active_admin/resource/templates/admin.rb +1 -1
  245. data/script/use_rails +1 -1
  246. data/spec/integration/memory_spec.rb +3 -2
  247. data/spec/javascripts/coffeescripts/jquery.aa.checkbox-toggler-spec.js.coffee +4 -4
  248. data/spec/javascripts/coffeescripts/jquery.aa.popover-spec.js.coffee +1 -1
  249. data/spec/javascripts/coffeescripts/jquery.aa.table-checkbox-toggler-spec.js.coffee +2 -2
  250. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +4 -4
  251. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +1 -1
  252. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +2 -2
  253. data/spec/spec_helper.rb +16 -6
  254. data/spec/spec_helper_without_rails.rb +2 -0
  255. data/spec/support/deferred_garbage_collection.rb +19 -0
  256. data/spec/support/jslint.yml +1 -1
  257. data/spec/support/rails_template.rb +29 -27
  258. data/spec/support/templates/admin/stores.rb +5 -1
  259. data/spec/unit/abstract_view_factory_spec.rb +1 -1
  260. data/spec/unit/action_builder_spec.rb +7 -7
  261. data/spec/unit/active_admin_spec.rb +0 -14
  262. data/spec/unit/application_spec.rb +16 -17
  263. data/spec/unit/asset_registration_spec.rb +21 -8
  264. data/spec/unit/authorization/authorization_adapter_spec.rb +3 -3
  265. data/spec/unit/authorization/controller_authorization_spec.rb +16 -24
  266. data/spec/unit/batch_actions/resource_spec.rb +11 -11
  267. data/spec/unit/belongs_to_spec.rb +1 -1
  268. data/spec/unit/cancan_adapter_spec.rb +11 -3
  269. data/spec/unit/comments_spec.rb +10 -28
  270. data/spec/unit/controller_filters_spec.rb +22 -24
  271. data/spec/unit/csv_builder_spec.rb +3 -3
  272. data/spec/unit/devise_spec.rb +10 -10
  273. data/spec/unit/filters/filter_form_builder_spec.rb +140 -45
  274. data/spec/unit/filters/resource_spec.rb +20 -19
  275. data/spec/unit/form_builder_spec.rb +122 -70
  276. data/spec/unit/menu_item_spec.rb +3 -3
  277. data/spec/unit/namespace/authorization_spec.rb +4 -8
  278. data/spec/unit/namespace/register_page_spec.rb +1 -1
  279. data/spec/unit/namespace/register_resource_spec.rb +12 -7
  280. data/spec/unit/namespace_spec.rb +4 -10
  281. data/spec/unit/page_spec.rb +1 -1
  282. data/spec/unit/resource/menu_spec.rb +1 -1
  283. data/spec/unit/resource/naming_spec.rb +9 -0
  284. data/spec/unit/resource/pagination_spec.rb +2 -2
  285. data/spec/unit/resource/routes_spec.rb +73 -0
  286. data/spec/unit/resource/scopes_spec.rb +1 -1
  287. data/spec/unit/resource_collection_spec.rb +95 -43
  288. data/spec/unit/resource_registration_spec.rb +3 -12
  289. data/spec/unit/resource_spec.rb +41 -48
  290. data/spec/unit/routing_spec.rb +10 -64
  291. data/spec/unit/scope_spec.rb +19 -0
  292. data/spec/unit/settings_spec.rb +88 -0
  293. data/spec/unit/view_factory_spec.rb +1 -0
  294. data/spec/unit/{breadcrumbs_spec.rb → view_helpers/breadcrumbs_spec.rb} +16 -7
  295. data/spec/unit/view_helpers/display_name_spec.rb +41 -0
  296. data/spec/unit/view_helpers/form_helper_spec.rb +36 -2
  297. data/spec/unit/views/components/attributes_table_spec.rb +17 -9
  298. data/spec/unit/views/components/batch_action_popover_spec.rb +4 -4
  299. data/spec/unit/views/components/index_list_spec.rb +2 -2
  300. data/spec/unit/views/components/paginated_collection_spec.rb +42 -0
  301. data/spec/unit/views/components/panel_spec.rb +8 -0
  302. data/spec/unit/views/components/site_title_spec.rb +2 -2
  303. data/spec/unit/views/components/table_for_spec.rb +4 -4
  304. data/spec/unit/views/pages/form_spec.rb +35 -0
  305. data/spec/unit/views/pages/layout_spec.rb +1 -1
  306. data/spec/unit/views/tabbed_navigation_spec.rb +10 -10
  307. data/tasks/parallel_tests.rake +1 -1
  308. data/tasks/test.rake +4 -1
  309. metadata +117 -106
  310. data/app/assets/stylesheets/active_admin/pages/_dashboard.scss +0 -5
  311. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  312. data/lib/active_admin/dashboards.rb +0 -68
  313. data/lib/active_admin/dashboards/dashboard_controller.rb +0 -50
  314. data/lib/active_admin/dashboards/section.rb +0 -34
  315. data/lib/active_admin/locales/bg.yml +0 -77
  316. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +0 -17
  317. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +0 -26
  318. data/spec/unit/base_controller_spec.rb +0 -6
  319. data/spec/unit/dashboard_controller_spec.rb +0 -76
  320. data/spec/unit/dashboard_section_spec.rb +0 -56
  321. data/spec/unit/dashboards_spec.rb +0 -59
  322. data/spec/unit/display_name_spec.rb +0 -29
@@ -145,4 +145,4 @@ Feature: Registering Pages
145
145
  And I follow "Status"
146
146
  And I follow "Check"
147
147
  Then I should see the content "Chocolate lØves You Too!"
148
- And I should see the Active Admin layout
148
+ And I should see the Active Admin layout
@@ -8,7 +8,7 @@ Feature: Registering Resources
8
8
 
9
9
  Scenario: Registering a resource with the defaults
10
10
  Given a configuration of:
11
- """
11
+ """
12
12
  ActiveAdmin.register Post
13
13
  """
14
14
  When I go to the dashboard
@@ -21,7 +21,7 @@ Feature: Registering Resources
21
21
 
22
22
  Scenario: Registering a resource with another name
23
23
  Given a configuration of:
24
- """
24
+ """
25
25
  ActiveAdmin.register Post, :as => "My Post"
26
26
  """
27
27
  When I go to the dashboard
@@ -13,7 +13,7 @@ Feature: Show - Default Content
13
13
  Then I should see the attribute "Title" with "Hello World"
14
14
  And I should see the attribute "Body" with "Empty"
15
15
  And I should see the attribute "Created At" with a nicely formatted datetime
16
- And I should see the attribute "Author" with "jane_doe"
16
+ And I should see the attribute "Author" with "Jane Doe"
17
17
  And I should see an action item button "Delete Post"
18
18
  And I should see an action item button "Edit Post"
19
19
 
@@ -23,8 +23,8 @@ Feature: Show - Default Content
23
23
  ActiveAdmin.register Post
24
24
  ActiveAdmin.register User
25
25
  """
26
- Then I should see the attribute "Author" with "jane_doe"
27
- And I should see a link to "jane_doe"
26
+ Then I should see the attribute "Author" with "Jane Doe"
27
+ And I should see a link to "Jane Doe"
28
28
 
29
29
  Scenario: Customizing the attributes table with a set of attributes
30
30
  Given a show configuration of:
@@ -17,7 +17,7 @@ Feature: Sidebar Sections
17
17
  """
18
18
  When I am on the index page for posts
19
19
  Then I should see a sidebar titled "Help"
20
- Then I should see /Need help/ within the "Help" sidebar
20
+ Then I should see "Need help" within the "Help" sidebar
21
21
 
22
22
  When I follow "View"
23
23
  Then I should see a sidebar titled "Help"
@@ -41,7 +41,7 @@ Feature: Sidebar Sections
41
41
  """
42
42
  When I am on the index page for posts
43
43
  Then I should see a sidebar titled "Help"
44
- Then I should see /Need help/ within the "Help" sidebar
44
+ Then I should see "Need help" within the "Help" sidebar
45
45
 
46
46
  When I follow "View"
47
47
  Then I should not see a sidebar titled "Help"
@@ -138,7 +138,7 @@ Feature: Sidebar Sections
138
138
 
139
139
  When I follow "View"
140
140
  Then I should see a sidebar titled "Help"
141
- Then I should see /Need help/ within the "Help" sidebar
141
+ Then I should see "Need help" within the "Help" sidebar
142
142
 
143
143
  When I follow "Edit Post"
144
144
  Then I should not see a sidebar titled "Help"
@@ -46,7 +46,7 @@ Feature: Specifying Actions
46
46
  action_item(:only => :show) do
47
47
  link_to('Review', review_admin_post_path)
48
48
  end
49
-
49
+
50
50
  member_action :review do
51
51
  @post = Post.find(params[:id])
52
52
  end
@@ -15,7 +15,7 @@ Then /^I should not see a sortable table header with "([^"]*)"$/ do |content|
15
15
  end
16
16
 
17
17
  Then /^I should not see a sortable table header$/ do
18
- step "I should not see \"th.sortable\""
18
+ step %{I should not see "th.sortable"}
19
19
  end
20
20
 
21
21
  Then /^the table "([^"]*)" should have (\d+) rows/ do |selector, count|
@@ -34,20 +34,7 @@ Then /^there should be (\d+) "([^"]*)" tags$/ do |count, tag|
34
34
  end
35
35
 
36
36
  Then /^I should see a link to "([^"]*)"$/ do |link|
37
- if page.respond_to? :should
38
- page.should have_xpath('//a', :text => link)
39
- else
40
- assert page.has_xpath?('//a', :text => link)
41
- end
42
- end
43
-
44
- Then /^I should see a link to \/([^\/]*)\/$/ do |regexp|
45
- regexp = Regexp.new(regexp)
46
- if page.respond_to? :should
47
- page.should have_xpath('//a', :text => regexp)
48
- else
49
- assert page.has_xpath?('//a', :text => regexp)
50
- end
37
+ page.should have_xpath('//a', :text => link)
51
38
  end
52
39
 
53
40
  Then /^an "([^"]*)" exception should be raised when I follow "([^"]*)"$/ do |error, link|
@@ -57,7 +44,7 @@ Then /^an "([^"]*)" exception should be raised when I follow "([^"]*)"$/ do |err
57
44
  end
58
45
 
59
46
  Then /^I should be in the resource section for (.+)$/ do |resource_name|
60
- current_url.should include(resource_name.gsub(' ', '').underscore.pluralize)
47
+ current_url.should include resource_name.gsub(' ', '').underscore.pluralize
61
48
  end
62
49
 
63
50
  Then /^I should wait and see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector|
@@ -1,5 +1,5 @@
1
1
  Then /^I should see the css file "([^"]*)"$/ do |path|
2
- step %{I should see the css file "#{path}" of media "screen"}
2
+ step %{I should see the css file "#{path}" of media "screen"}
3
3
  end
4
4
 
5
5
  Then /^I should see the css file "([^"]*)" of media "([^"]*)"$/ do |path, media|
@@ -9,3 +9,7 @@ end
9
9
  Then /^I should see the js file "([^"]*)"$/ do |path|
10
10
  page.should have_xpath("//script[contains(@src, /javascripts/#{path})]")
11
11
  end
12
+
13
+ Then /^I should see the favicon "([^"]*)"$/ do |path|
14
+ page.should have_xpath("//link[contains(@href, \"#{path}\")]")
15
+ end
@@ -1,11 +1,11 @@
1
1
  Then /^I should see the attribute "([^"]*)" with "([^"]*)"$/ do |title, value|
2
- page.should have_css('.attributes_table th', :text => title)
3
- page.should have_css('.attributes_table td', :text => value)
2
+ elems = all ".attributes_table th:contains('#{title}') ~ td:contains('#{value}')"
3
+ elems.first.should_not be_nil, 'attribute missing'
4
4
  end
5
5
 
6
6
  Then /^I should see the attribute "([^"]*)" with a nicely formatted datetime$/ do |title|
7
- th = page.find('.attributes_table th', :text => title)
8
- page.find(:xpath, th.path.gsub(/th$/, 'td')).text.should =~ /\w+ \d{1,2}, \d{4} \d{2}:\d{2}/
7
+ text = all(".attributes_table th:contains('#{title}') ~ td").first.text
8
+ text.should match /\w+ \d{1,2}, \d{4} \d{2}:\d{2}/
9
9
  end
10
10
 
11
11
  Then /^I should not see the attribute "([^"]*)"$/ do |title|
@@ -1,104 +1,55 @@
1
- Then /^I (should|should not) see the batch action "([^"]*)"$/ do |maybe, title|
2
- %{Then I #{maybe} see the batch action :#{title.gsub(' ','').gsub(" Selected", "").underscore} "#{title}"}
3
- end
4
-
5
1
  Then /^I (should|should not) be asked to confirm "([^"]*)" for "([^"]*)"$/ do |maybe, confirmation, title|
6
- within "#batch_actions_popover" do
7
- unless maybe == "should not"
8
- link = page.find "a.batch_action", :text => title
9
- link["data-confirm"].should match( confirmation )
10
- else
11
- page.should_not have_css("a.batch_action", :text => title)
12
- end
13
- end
2
+ selector = "#batch_actions_popover a.batch_action:contains('#{title}')"
3
+ selector << "[data-confirm='#{confirmation}']" if maybe == 'should'
4
+ page.send maybe.sub(' ', '_'), have_css(selector)
14
5
  end
15
6
 
16
7
  Then /^I (should|should not) see the batch action :([^\s]*) "([^"]*)"$/ do |maybe, sym, title|
17
- within "#batch_actions_selector" do
18
- unless maybe == "should not"
19
- link = page.find "a.batch_action", :text => title
20
- link["data-action"].should match( sym )
21
- link[:href].should match( "#" )
22
- else
23
- page.should_not have_css("a.batch_action", :text => title)
24
- end
25
- end
8
+ selector = "#batch_actions_selector a.batch_action:contains('#{title}')"
9
+ selector << "[href='#'][data-action='#{sym}']" if maybe == 'should'
10
+ page.send maybe.sub(' ', '_'), have_css(selector)
26
11
  end
27
12
 
28
13
  Then /^the (\d+)(?:st|nd|rd|th) batch action should be "([^"]*)"$/ do |index, title|
29
- within "#batch_actions_selector" do
30
- page.all( "a.batch_action" )[index.to_i - 1].text.should match( title )
31
- end
14
+ page.all("#batch_actions_selector a.batch_action")[index.to_i - 1].text.should match title
32
15
  end
33
16
 
34
17
  When /^I check the (\d+)(?:st|nd|rd|th) record$/ do |index|
35
- page.all( "table.index_table input[type=checkbox]" )[index.to_i].set( true )
36
- end
37
-
38
- When /^I uncheck the (\d+)(?:st|nd|rd|th) record$/ do |index|
39
- page.all( "table.index_table input[type='checkbox']" )[index.to_i].set( false )
18
+ page.all("table.index_table input[type=checkbox]")[index.to_i].set true
40
19
  end
41
20
 
42
21
  When /^I toggle the collection selection$/ do
43
- toggle_box = page.find( "#collection_selection_toggle_all" )
44
- toggle_box.click
45
- end
46
-
47
- Then /^I should see (\d+) record(?:s)? selected$/ do |count|
48
- within "table.index_table" do
49
- unless count.to_i == 0
50
- page.should have_xpath(".//input[@type='checkbox' and @checked='checked']", :count => count)
51
- else
52
- page.should have_no_xpath(".//input[@type='checkbox' and @checked='checked']")
53
- end
54
- end
22
+ page.find("#collection_selection_toggle_all").click
55
23
  end
56
24
 
57
25
  Then /^I should see that the batch action button is disabled$/ do
58
- page.should have_css("#batch_actions_selector .dropdown_menu_button.disabled")
59
- end
60
-
61
- Then /^I (should|should not) see the batch action button$/ do |maybe|
62
- if maybe == "should not"
63
- page.should_not have_css("div.table_tools #batch_actions_selector .dropdown_menu_button")
64
- else
65
- page.should have_css("div.table_tools #batch_actions_selector .dropdown_menu_button")
66
- end
26
+ page.should have_css "#batch_actions_selector .dropdown_menu_button.disabled"
67
27
  end
68
28
 
69
- Then "I should not see the batch actions selector" do
70
- page.should_not have_css("div.table_tools #batch_actions_selector")
29
+ Then /^I (should|should not) see the batch action (button|selector)$/ do |maybe, type|
30
+ selector = "div.table_tools #batch_actions_selector"
31
+ selector << ' .dropdown_menu_button' if maybe == 'should' && type == 'button'
32
+ page.send maybe.sub(' ', '_'), have_css(selector)
71
33
  end
72
34
 
73
35
  Then /^I should see the batch action popover exists$/ do
74
- page.should have_css("#batch_actions_selector")
36
+ page.should have_css "#batch_actions_selector"
75
37
  end
76
38
 
77
39
  Given /^I submit the batch action form with "([^"]*)"$/ do |action|
78
- page.find(:css, "#batch_action").set(action)
79
-
80
- within("#main_content") do
81
- @params = page.all("input").reduce({}) do |acc, input|
82
- param_key = input['name']
83
- param_value = input['value']
84
-
85
- if param_key == 'collection_selection[]'
86
- # the collection_selection should be sent as an array containing only IDs of checked rows
87
- acc[param_key] ||= Array.new
88
- acc[param_key] << param_value if input.checked?
89
- else
90
- # other inputs, just send the value normally
91
- acc.store(param_key, param_value)
92
- end
93
- acc
40
+ page.find("#batch_action").set action
41
+ form = page.find "#collection_selection"
42
+ params = page.all("#main_content input").each_with_object({}) do |input, obj|
43
+ key, value = input['name'], input['value']
44
+ if key == 'collection_selection[]'
45
+ (obj[key] ||= []).push value if input.checked?
46
+ else
47
+ obj[key] = value
94
48
  end
95
49
  end
96
-
97
- form = page.find("#collection_selection")
98
-
99
- page.driver.submit(form['method'].to_sym, form['action'], @params)
50
+ page.driver.submit form['method'], form['action'], params
100
51
  end
101
52
 
102
53
  Then /^I should not see checkboxes in the table$/ do
103
- page.should_not have_css( ".paginated_collection table input[type=checkbox]" )
54
+ page.should_not have_css ".paginated_collection table input[type=checkbox]"
104
55
  end
@@ -1,5 +1,3 @@
1
1
  Then /^I should see a link to "([^"]*)" in the breadcrumb$/ do |text|
2
- within ".breadcrumb" do
3
- page.should have_css("a", :text => text)
4
- end
2
+ page.should have_css('.breadcrumb > a', :text => text)
5
3
  end
@@ -7,7 +7,6 @@ When /^I add a comment "([^"]*)"$/ do |comment|
7
7
  step %{I press "Add Comment"}
8
8
  end
9
9
 
10
-
11
10
  Given /^a tag with the name "([^"]*)" exists$/ do |tag_name|
12
11
  Tag.create(:name => tag_name)
13
12
  end
@@ -1,109 +1,93 @@
1
1
  module ActiveAdminReloading
2
-
3
- def load_active_admin_configuration(configuration_content)
2
+ def load_aa_config(config_content)
4
3
  ActiveAdmin::Event.dispatch ActiveAdmin::Application::BeforeLoadEvent, ActiveAdmin.application
5
- eval(configuration_content)
6
- ActiveAdmin::Event.dispatch ActiveAdmin::Application::AfterLoadEvent, ActiveAdmin.application
4
+ eval(config_content)
5
+ ActiveAdmin::Event.dispatch ActiveAdmin::Application::AfterLoadEvent, ActiveAdmin.application
7
6
  Rails.application.reload_routes!
8
- ActiveAdmin.application.namespaces.values.each{|n| n.reset_menu! }
7
+ ActiveAdmin.application.namespaces.values.each &:reset_menu!
9
8
  end
10
-
11
9
  end
12
10
 
13
11
  module ActiveAdminContentsRollback
14
-
15
- def self.recorded_files
12
+ def files
16
13
  @files ||= {}
17
14
  end
18
15
 
19
16
  # Records the contents of a file the first time we are
20
17
  # about to change it
21
- def self.record(filename)
22
- contents = File.read(filename) rescue nil
23
- recorded_files[filename] = contents unless recorded_files.has_key?(filename)
18
+ def record(filename)
19
+ contents = File.read(filename) rescue nil
20
+ files[filename] = contents unless files.has_key? filename
24
21
  end
25
22
 
26
23
  # Rolls the recorded files back to their original states
27
- def self.rollback!
28
- recorded_files.each do |filename, contents|
29
- # contents will be nil if the file didin't exist
30
- if contents.present?
31
- File.open(filename, "w") {|f| f << contents }
32
- else
33
- File.delete(filename)
24
+ def rollback!
25
+ files.each{ |file, contents| rollback_file(file, contents) }
26
+ @files = {}
27
+ end
34
28
 
35
- # Delete parent directories
36
- begin
37
- dir = File.dirname(filename)
38
- until dir == Rails.root
39
- Dir.rmdir(dir)
40
- dir = dir.split('/')[0..-2].join('/')
41
- end
42
- rescue Errno::ENOTEMPTY
43
- # Directory not empty
29
+ # If the file originally had content, override the stuff on disk.
30
+ # Else, remove the file and its parent folder structure until Rails.root OR other files exist.
31
+ def rollback_file(file, contents)
32
+ if contents.present?
33
+ File.open(file,'w') { |f| f << contents }
34
+ else
35
+ File.delete(file)
36
+ begin
37
+ dir = File.dirname(file)
38
+ until dir == Rails.root
39
+ Dir.rmdir(dir) # delete current folder
40
+ dir = dir.split('/')[0..-2].join('/') # select parent folder
44
41
  end
45
-
42
+ rescue Errno::ENOTEMPTY # Directory not empty
46
43
  end
47
44
  end
48
-
49
- @files = {}
50
45
  end
51
-
52
46
  end
53
47
 
54
48
  World(ActiveAdminReloading)
49
+ World(ActiveAdminContentsRollback)
55
50
 
56
51
  After do
57
- ActiveAdminContentsRollback.rollback!
52
+ rollback!
58
53
  end
59
54
 
60
- Given /^a configuration of:$/ do |configuration_content|
61
- load_active_admin_configuration(configuration_content)
62
- end
63
-
64
- Given /^an index configuration of:$/ do |configuration_content|
65
- load_active_admin_configuration(configuration_content)
66
-
67
- step 'I am logged in'
68
- step "I am on the index page for posts"
69
- end
70
-
71
- Given /^a show configuration of:$/ do |configuration_content|
72
- resource = configuration_content.match(/ActiveAdmin\.register (\w+)/)[1]
73
- load_active_admin_configuration(configuration_content)
55
+ Given /^a(?:n? (index|show))? configuration of:$/ do |action, config_content|
56
+ load_aa_config(config_content)
74
57
 
75
- case resource
76
- when "Post"
58
+ case action
59
+ when 'index'
77
60
  step 'I am logged in'
78
- step "I am on the index page for posts"
79
- step 'I follow "View"'
80
- when "Tag"
81
- step 'I am logged in'
82
- Tag.create!
83
- visit admin_tag_path(Tag.last)
84
- else
85
- raise "#{resource} is not supported"
61
+ step 'I am on the index page for posts'
62
+ when 'show'
63
+ case resource = config_content.match(/ActiveAdmin\.register (\w+)/)[1]
64
+ when 'Post'
65
+ step 'I am logged in'
66
+ step 'I am on the index page for posts'
67
+ step 'I follow "View"'
68
+ when 'Tag'
69
+ step 'I am logged in'
70
+ Tag.create!
71
+ visit admin_tag_path Tag.last
72
+ else
73
+ raise "#{resource} is not supported"
74
+ end
86
75
  end
87
76
  end
88
77
 
89
78
  Given /^"([^"]*)" contains:$/ do |filename, contents|
90
- require 'fileutils'
91
- filepath = Rails.root + filename
92
- FileUtils.mkdir_p File.dirname(filepath)
93
- ActiveAdminContentsRollback.record(filepath)
79
+ path = Rails.root + filename
80
+ FileUtils.mkdir_p File.dirname path
81
+ record path
94
82
 
95
- File.open(filepath, 'w+'){|f| f << contents }
83
+ File.open(path,'w+'){ |f| f << contents }
96
84
  end
97
85
 
98
86
  Given /^I add "([^"]*)" to the "([^"]*)" model$/ do |code, model_name|
99
- filename = File.join(Rails.root, "app", "models", "#{model_name}.rb")
100
- ActiveAdminContentsRollback.record(filename)
101
-
102
- # Update the file
103
- contents = File.read(filename)
104
- File.open(filename, "w+") do |f|
105
- f << contents.gsub(/^(class .+)$/, "\\1\n #{code}\n")
106
- end
87
+ path = File.join Rails.root, "app", "models", "#{model_name}.rb"
88
+ record path
107
89
 
90
+ str = File.read(path).gsub /^(class .+)$/, "\\1\n #{code}\n"
91
+ File.open(path, 'w+') { |f| f << str }
108
92
  ActiveSupport::Dependencies.clear
109
93
  end