yousty-activeadmin 1.0.4.pre → 1.0.5.pre

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 (467) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +261 -211
  3. data/CONTRIBUTING.md +73 -39
  4. data/Gemfile +38 -20
  5. data/Guardfile +1 -0
  6. data/LICENSE +1 -1
  7. data/README.md +48 -24
  8. data/Rakefile +12 -4
  9. data/activeadmin.gemspec +21 -26
  10. data/app/assets/javascripts/active_admin/application.js.coffee +34 -5
  11. data/app/assets/javascripts/active_admin/base.js.coffee +11 -2
  12. data/app/assets/javascripts/active_admin/ext/jquery-ui.js.coffee +6 -0
  13. data/app/assets/javascripts/active_admin/ext/jquery.js.coffee +7 -0
  14. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +39 -0
  15. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +3 -4
  16. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +51 -55
  17. data/app/assets/javascripts/active_admin/lib/flash.js.coffee +19 -0
  18. data/app/assets/javascripts/active_admin/lib/has_many.js.coffee +79 -0
  19. data/app/assets/javascripts/active_admin/lib/modal_dialog.js.coffee +37 -0
  20. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +27 -0
  21. data/app/assets/javascripts/active_admin/lib/popover.js.coffee +29 -58
  22. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +2 -3
  23. data/app/assets/stylesheets/active_admin/{_base.css.scss → _base.scss} +3 -0
  24. data/app/assets/stylesheets/active_admin/{_forms.css.scss → _forms.scss} +51 -15
  25. data/app/assets/stylesheets/active_admin/{_header.css.scss → _header.scss} +9 -5
  26. data/app/assets/stylesheets/active_admin/{_mixins.css.scss → _mixins.scss} +0 -0
  27. data/app/assets/stylesheets/active_admin/{_typography.css.scss → _typography.scss} +0 -0
  28. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +11 -0
  29. data/app/assets/stylesheets/active_admin/components/_buttons.scss +1 -1
  30. data/app/assets/stylesheets/active_admin/components/{_comments.css.scss → _comments.scss} +0 -0
  31. data/app/assets/stylesheets/active_admin/components/{_date_picker.css.scss → _date_picker.scss} +40 -12
  32. data/app/assets/stylesheets/active_admin/components/_dropdown_menu.scss +3 -1
  33. data/app/assets/stylesheets/active_admin/components/_flash_messages.scss +37 -0
  34. data/app/assets/stylesheets/active_admin/components/_modal_dialog.scss +34 -0
  35. data/app/assets/stylesheets/active_admin/components/_pagination.scss +10 -0
  36. data/app/assets/stylesheets/active_admin/components/{_popovers.css.scss → _popovers.scss} +0 -0
  37. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +4 -0
  38. data/app/assets/stylesheets/active_admin/components/_table_tools.scss +67 -0
  39. data/app/assets/stylesheets/active_admin/components/{_tables.css.scss → _tables.scss} +1 -0
  40. data/app/assets/stylesheets/active_admin/components/_tabs.scss +65 -0
  41. data/app/assets/stylesheets/active_admin/components/_unsupported_browser.scss +16 -0
  42. data/app/assets/stylesheets/active_admin/mixins/{_all.css.scss → _all.scss} +0 -0
  43. data/app/assets/stylesheets/active_admin/mixins/{_buttons.css.scss → _buttons.scss} +0 -0
  44. data/app/assets/stylesheets/active_admin/mixins/{_gradients.css.scss → _gradients.scss} +1 -1
  45. data/app/assets/stylesheets/active_admin/mixins/{_icons.css.scss → _icons.scss} +1 -2
  46. data/app/assets/stylesheets/active_admin/mixins/{_reset.css.scss → _reset.scss} +0 -0
  47. data/app/assets/stylesheets/active_admin/mixins/{_rounded.css.scss → _rounded.scss} +0 -0
  48. data/app/assets/stylesheets/active_admin/mixins/{_sections.css.scss → _sections.scss} +7 -1
  49. data/app/assets/stylesheets/active_admin/mixins/{_shadows.css.scss → _shadows.scss} +0 -0
  50. data/app/assets/stylesheets/active_admin/mixins/{_variables.css.scss → _variables.scss} +10 -8
  51. data/app/assets/stylesheets/active_admin/{print.css.scss → print.scss} +4 -0
  52. data/app/assets/stylesheets/active_admin/structure/_title_bar.scss +10 -7
  53. data/app/views/active_admin/devise/confirmations/new.html.erb +15 -0
  54. data/app/views/active_admin/devise/mailer/reset_password_instructions.html.erb +1 -1
  55. data/app/views/active_admin/devise/mailer/unlock_instructions.html.erb +1 -1
  56. data/app/views/active_admin/devise/passwords/edit.html.erb +9 -10
  57. data/app/views/active_admin/devise/passwords/new.html.erb +5 -4
  58. data/app/views/active_admin/devise/registrations/new.html.erb +22 -0
  59. data/app/views/active_admin/devise/sessions/new.html.erb +8 -8
  60. data/app/views/active_admin/devise/shared/_links.erb +1 -1
  61. data/app/views/active_admin/devise/unlocks/new.html.erb +5 -4
  62. data/app/views/layouts/active_admin_logged_out.html.erb +3 -5
  63. data/config/locales/ar.yml +120 -0
  64. data/config/locales/bg.yml +26 -6
  65. data/config/locales/bs.yml +122 -0
  66. data/config/locales/ca.yml +10 -1
  67. data/config/locales/cs.yml +7 -2
  68. data/config/locales/da.yml +7 -3
  69. data/config/locales/de-CH.yml +14 -31
  70. data/config/locales/de.yml +33 -33
  71. data/config/locales/el.yml +127 -0
  72. data/config/locales/en-GB.yml +11 -4
  73. data/config/locales/en.yml +21 -4
  74. data/config/locales/{es_MX.yml → es-MX.yml} +14 -24
  75. data/config/locales/es.yml +32 -25
  76. data/config/locales/fa.yml +120 -0
  77. data/config/locales/fi.yml +9 -5
  78. data/config/locales/fr.yml +28 -12
  79. data/config/locales/he.yml +7 -3
  80. data/config/locales/hr.yml +42 -11
  81. data/config/locales/hu.yml +10 -3
  82. data/config/locales/it.yml +31 -3
  83. data/config/locales/ja.yml +17 -4
  84. data/config/locales/ko.yml +7 -1
  85. data/config/locales/lt.yml +42 -11
  86. data/config/locales/lv.yml +7 -3
  87. data/config/locales/{no-NB.yml → nb.yml} +46 -15
  88. data/config/locales/nl.yml +36 -5
  89. data/config/locales/pl.yml +13 -8
  90. data/config/locales/pt-BR.yml +36 -5
  91. data/config/locales/pt-PT.yml +8 -4
  92. data/config/locales/ro.yml +7 -3
  93. data/config/locales/ru.yml +26 -5
  94. data/config/locales/sv-SE.yml +9 -5
  95. data/config/locales/tr.yml +10 -3
  96. data/config/locales/uk.yml +36 -12
  97. data/config/locales/vi.yml +7 -3
  98. data/config/locales/zh-CN.yml +26 -10
  99. data/config/locales/zh-TW.yml +19 -13
  100. data/docs/0-installation.md +14 -6
  101. data/docs/1-general-configuration.md +8 -5
  102. data/docs/10-custom-pages.md +68 -70
  103. data/docs/11-decorators.md +48 -59
  104. data/docs/12-arbre-components.md +79 -73
  105. data/docs/13-authorization-adapter.md +128 -107
  106. data/docs/14-gotchas.md +90 -0
  107. data/docs/2-resource-customization.md +82 -15
  108. data/docs/3-index-pages.md +71 -12
  109. data/docs/3-index-pages/custom-index.md +31 -0
  110. data/docs/3-index-pages/index-as-table.md +45 -2
  111. data/docs/4-csv-format.md +1 -1
  112. data/docs/5-forms.md +78 -29
  113. data/docs/6-show-pages.md +31 -3
  114. data/docs/7-sidebars.md +46 -25
  115. data/docs/8-custom-actions.md +98 -77
  116. data/docs/9-batch-actions.md +211 -133
  117. data/docs/README.md +24 -0
  118. data/features/action_item.feature +3 -3
  119. data/features/authorization_pundit.feature +37 -0
  120. data/features/belongs_to.feature +3 -0
  121. data/features/breadcrumb.feature +48 -0
  122. data/features/comments/commenting.feature +44 -13
  123. data/features/development_reloading.feature +3 -4
  124. data/features/edit_page.feature +9 -19
  125. data/features/favicon.feature +3 -3
  126. data/features/i18n.feature +5 -0
  127. data/features/index/batch_actions.feature +41 -0
  128. data/features/index/filters.feature +23 -0
  129. data/features/index/format_as_csv.feature +90 -4
  130. data/features/index/index_as_blog.feature +4 -4
  131. data/features/index/index_as_table.feature +102 -6
  132. data/features/index/index_blank_slate.feature +22 -0
  133. data/features/index/index_scope_to.feature +16 -16
  134. data/features/index/page_title.feature +11 -0
  135. data/features/index/pagination.feature +1 -1
  136. data/features/index/switch_index_view.feature +14 -14
  137. data/features/new_page.feature +10 -20
  138. data/features/registering_pages.feature +1 -1
  139. data/features/renamed_resource.feature +32 -0
  140. data/features/show/page_title.feature +11 -0
  141. data/features/show/tabs.feature +27 -0
  142. data/features/sidebar_sections.feature +12 -0
  143. data/features/specifying_actions.feature +3 -3
  144. data/features/step_definitions/action_item_steps.rb +2 -2
  145. data/features/step_definitions/action_link_steps.rb +14 -1
  146. data/features/step_definitions/additional_web_steps.rb +17 -18
  147. data/features/step_definitions/asset_steps.rb +3 -3
  148. data/features/step_definitions/attribute_steps.rb +8 -3
  149. data/features/step_definitions/batch_action_steps.rb +26 -9
  150. data/features/step_definitions/blog_steps.rb +3 -0
  151. data/features/step_definitions/breadcrumb_steps.rb +1 -1
  152. data/features/step_definitions/comment_steps.rb +1 -1
  153. data/features/step_definitions/configuration_steps.rb +1 -1
  154. data/features/step_definitions/dashboard_steps.rb +2 -2
  155. data/features/step_definitions/factory_steps.rb +6 -6
  156. data/features/step_definitions/filter_steps.rb +25 -3
  157. data/features/step_definitions/flash_steps.rb +3 -3
  158. data/features/step_definitions/format_steps.rb +17 -10
  159. data/features/step_definitions/index_scope_steps.rb +5 -5
  160. data/features/step_definitions/layout_steps.rb +1 -1
  161. data/features/step_definitions/member_link_steps.rb +2 -2
  162. data/features/step_definitions/menu_steps.rb +3 -3
  163. data/features/step_definitions/pagination_steps.rb +2 -3
  164. data/features/step_definitions/sidebar_steps.rb +8 -3
  165. data/features/step_definitions/site_title_steps.rb +6 -4
  166. data/features/step_definitions/symbol_leak_steps.rb +1 -1
  167. data/features/step_definitions/tab_steps.rb +5 -0
  168. data/features/step_definitions/table_steps.rb +4 -4
  169. data/features/step_definitions/user_steps.rb +15 -9
  170. data/features/step_definitions/web_steps.rb +10 -11
  171. data/features/sti_resource.feature +2 -10
  172. data/features/strong_parameters.feature +73 -0
  173. data/features/support/env.rb +35 -2
  174. data/features/support/paths.rb +2 -2
  175. data/features/support/selectors.rb +1 -1
  176. data/features/users/resetting_password.feature +7 -7
  177. data/lib/active_admin.rb +18 -13
  178. data/lib/active_admin/abstract_view_factory.rb +7 -17
  179. data/lib/active_admin/application.rb +50 -25
  180. data/lib/active_admin/asset_registration.rb +2 -2
  181. data/lib/active_admin/authorization_adapter.rb +2 -2
  182. data/lib/active_admin/base_controller.rb +2 -3
  183. data/lib/active_admin/base_controller/authorization.rb +13 -31
  184. data/lib/active_admin/batch_actions.rb +1 -1
  185. data/lib/active_admin/batch_actions/controller.rb +13 -7
  186. data/lib/active_admin/batch_actions/resource_extension.rb +43 -17
  187. data/lib/active_admin/batch_actions/views/batch_action_form.rb +7 -4
  188. data/lib/active_admin/batch_actions/views/batch_action_popover.rb +3 -3
  189. data/lib/active_admin/batch_actions/views/batch_action_selector.rb +8 -17
  190. data/lib/active_admin/batch_actions/views/selection_cells.rb +4 -4
  191. data/lib/active_admin/callbacks.rb +25 -24
  192. data/lib/active_admin/cancan_adapter.rb +7 -11
  193. data/lib/active_admin/csv_builder.rb +92 -15
  194. data/lib/active_admin/dependency.rb +93 -0
  195. data/lib/active_admin/deprecation.rb +6 -7
  196. data/lib/active_admin/devise.rb +26 -14
  197. data/lib/active_admin/dsl.rb +18 -11
  198. data/lib/active_admin/engine.rb +7 -2
  199. data/lib/active_admin/error.rb +59 -0
  200. data/lib/active_admin/filters/dsl.rb +2 -2
  201. data/lib/active_admin/filters/forms.rb +19 -30
  202. data/lib/active_admin/filters/formtastic_addons.rb +20 -11
  203. data/lib/active_admin/filters/resource_extension.rb +16 -9
  204. data/lib/active_admin/form_builder.rb +94 -105
  205. data/lib/active_admin/helpers/collection.rb +7 -13
  206. data/lib/active_admin/helpers/i18n.rb +7 -0
  207. data/lib/active_admin/helpers/optional_display.rb +5 -5
  208. data/lib/active_admin/helpers/scope_chain.rb +1 -1
  209. data/lib/active_admin/helpers/settings.rb +16 -9
  210. data/lib/active_admin/iconic.rb +17 -15
  211. data/lib/active_admin/iconic/icons.rb +136 -136
  212. data/lib/active_admin/inputs.rb +11 -7
  213. data/lib/active_admin/inputs/datepicker_input.rb +1 -1
  214. data/lib/active_admin/inputs/filters/base.rb +42 -0
  215. data/lib/active_admin/inputs/filters/base/search_method_select.rb +75 -0
  216. data/lib/active_admin/inputs/filters/boolean_input.rb +24 -0
  217. data/lib/active_admin/inputs/filters/check_boxes_input.rb +50 -0
  218. data/lib/active_admin/inputs/filters/date_range_input.rb +36 -0
  219. data/lib/active_admin/inputs/filters/numeric_input.rb +12 -0
  220. data/lib/active_admin/inputs/filters/select_input.rb +54 -0
  221. data/lib/active_admin/inputs/filters/string_input.rb +26 -0
  222. data/lib/active_admin/menu.rb +3 -3
  223. data/lib/active_admin/menu_collection.rb +1 -4
  224. data/lib/active_admin/namespace.rb +52 -29
  225. data/lib/active_admin/order_clause.rb +26 -0
  226. data/lib/active_admin/orm/active_record.rb +2 -0
  227. data/lib/active_admin/orm/active_record/comments.rb +48 -51
  228. data/lib/active_admin/orm/active_record/comments/comment.rb +16 -10
  229. data/lib/active_admin/orm/active_record/comments/namespace_helper.rb +1 -1
  230. data/lib/active_admin/orm/active_record/comments/resource_helper.rb +1 -1
  231. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +15 -13
  232. data/lib/active_admin/page.rb +5 -1
  233. data/lib/active_admin/page_dsl.rb +1 -1
  234. data/lib/active_admin/page_presenter.rb +2 -2
  235. data/lib/active_admin/pundit_adapter.rb +68 -0
  236. data/lib/active_admin/resource.rb +12 -3
  237. data/lib/active_admin/resource/action_items.rb +15 -8
  238. data/lib/active_admin/resource/belongs_to.rb +7 -3
  239. data/lib/active_admin/resource/controllers.rb +1 -0
  240. data/lib/active_admin/resource/includes.rb +12 -0
  241. data/lib/active_admin/resource/menu.rb +5 -5
  242. data/lib/active_admin/resource/naming.rb +25 -47
  243. data/lib/active_admin/resource/page_presenters.rb +1 -1
  244. data/lib/active_admin/resource/routes.rb +26 -10
  245. data/lib/active_admin/resource/scope_to.rb +7 -7
  246. data/lib/active_admin/resource/sidebars.rb +1 -0
  247. data/lib/active_admin/resource_collection.rb +44 -16
  248. data/lib/active_admin/resource_controller.rb +6 -5
  249. data/lib/active_admin/resource_controller/data_access.rb +87 -82
  250. data/lib/active_admin/resource_controller/decorators.rb +91 -9
  251. data/lib/active_admin/resource_controller/streaming.rb +37 -0
  252. data/lib/active_admin/resource_dsl.rb +54 -10
  253. data/lib/active_admin/router.rb +7 -7
  254. data/lib/active_admin/scope.rb +6 -6
  255. data/lib/active_admin/sidebar_section.rb +10 -2
  256. data/lib/active_admin/version.rb +1 -1
  257. data/lib/active_admin/view_factory.rb +17 -16
  258. data/lib/active_admin/view_helpers.rb +0 -1
  259. data/lib/active_admin/view_helpers/auto_link_helper.rb +23 -12
  260. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +13 -6
  261. data/lib/active_admin/view_helpers/display_helper.rb +30 -17
  262. data/lib/active_admin/view_helpers/download_format_links_helper.rb +21 -24
  263. data/lib/active_admin/view_helpers/fields_for.rb +2 -2
  264. data/lib/active_admin/view_helpers/flash_helper.rb +4 -3
  265. data/lib/active_admin/view_helpers/form_helper.rb +5 -9
  266. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +6 -6
  267. data/lib/active_admin/views/action_items.rb +2 -2
  268. data/lib/active_admin/views/components/action_list_popover.rb +1 -1
  269. data/lib/active_admin/views/components/active_admin_form.rb +123 -0
  270. data/lib/active_admin/views/components/attributes_table.rb +22 -13
  271. data/lib/active_admin/views/components/blank_slate.rb +1 -1
  272. data/lib/active_admin/views/components/columns.rb +13 -7
  273. data/lib/active_admin/views/components/dropdown_menu.rb +6 -6
  274. data/lib/active_admin/views/components/index_list.rb +7 -7
  275. data/lib/active_admin/views/components/paginated_collection.rb +33 -17
  276. data/lib/active_admin/views/components/panel.rb +8 -2
  277. data/lib/active_admin/views/components/popover.rb +1 -1
  278. data/lib/active_admin/views/components/scopes.rb +1 -1
  279. data/lib/active_admin/views/components/sidebar_section.rb +3 -2
  280. data/lib/active_admin/views/components/site_title.rb +2 -2
  281. data/lib/active_admin/views/components/status_tag.rb +34 -11
  282. data/lib/active_admin/views/components/table_for.rb +67 -22
  283. data/lib/active_admin/views/components/tabs.rb +28 -0
  284. data/lib/active_admin/views/components/unsupported_browser.rb +11 -0
  285. data/lib/active_admin/views/footer.rb +3 -3
  286. data/lib/active_admin/views/header.rb +3 -3
  287. data/lib/active_admin/views/index_as_blog.rb +6 -6
  288. data/lib/active_admin/views/index_as_grid.rb +2 -2
  289. data/lib/active_admin/views/index_as_table.rb +127 -40
  290. data/lib/active_admin/views/pages/base.rb +22 -18
  291. data/lib/active_admin/views/pages/form.rb +16 -6
  292. data/lib/active_admin/views/pages/index.rb +36 -20
  293. data/lib/active_admin/views/pages/layout.rb +1 -1
  294. data/lib/active_admin/views/pages/show.rb +4 -4
  295. data/lib/active_admin/views/tabbed_navigation.rb +7 -3
  296. data/lib/active_admin/views/title_bar.rb +10 -8
  297. data/lib/generators/active_admin/assets/assets_generator.rb +1 -3
  298. data/lib/generators/active_admin/devise/devise_generator.rb +20 -28
  299. data/lib/generators/active_admin/install/install_generator.rb +8 -9
  300. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +20 -22
  301. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +12 -9
  302. data/lib/generators/active_admin/install/templates/dashboard.rb +4 -4
  303. data/lib/generators/active_admin/install/templates/migrations/create_active_admin_comments.rb +3 -3
  304. data/lib/generators/active_admin/page/USAGE +8 -0
  305. data/lib/generators/active_admin/page/page_generator.rb +12 -0
  306. data/lib/generators/active_admin/page/templates/page.rb +5 -0
  307. data/lib/generators/active_admin/resource/resource_generator.rb +2 -4
  308. data/lib/generators/active_admin/resource/templates/admin.rb +15 -0
  309. data/lib/ransack_ext.rb +4 -4
  310. data/script/local +2 -2
  311. data/script/travis_cache +107 -0
  312. data/spec/javascripts/coffeescripts/jquery.aa.flash.js.coffee +25 -0
  313. data/spec/javascripts/fixtures/flashes.html +2 -0
  314. data/spec/rails_helper.rb +154 -0
  315. data/spec/{integration → requests}/default_namespace_spec.rb +6 -6
  316. data/spec/{integration → requests}/javascript_spec.rb +5 -5
  317. data/spec/requests/memory_spec.rb +23 -0
  318. data/spec/requests/stylesheets_spec.rb +18 -0
  319. data/spec/spec_helper.rb +12 -170
  320. data/spec/support/detect_rails_version.rb +31 -39
  321. data/spec/support/rails_template.rb +61 -34
  322. data/spec/support/rails_template_with_data.rb +14 -14
  323. data/spec/support/templates/admin/stores.rb +3 -5
  324. data/spec/support/templates/policies/active_admin/comment_policy.rb +9 -0
  325. data/spec/support/templates/policies/active_admin/page_policy.rb +18 -0
  326. data/spec/support/templates/policies/admin_user_policy.rb +11 -0
  327. data/spec/support/templates/policies/application_policy.rb +45 -0
  328. data/spec/support/templates/policies/category_policy.rb +7 -0
  329. data/spec/support/templates/policies/post_policy.rb +15 -0
  330. data/spec/support/templates/policies/store_policy.rb +11 -0
  331. data/spec/support/templates/policies/user_policy.rb +11 -0
  332. data/spec/support/templates/post_decorator.rb +4 -46
  333. data/spec/unit/abstract_view_factory_spec.rb +11 -11
  334. data/spec/unit/action_builder_spec.rb +24 -18
  335. data/spec/unit/active_admin_spec.rb +2 -2
  336. data/spec/unit/application_spec.rb +30 -31
  337. data/spec/unit/asset_registration_spec.rb +11 -11
  338. data/spec/unit/authorization/authorization_adapter_spec.rb +7 -7
  339. data/spec/unit/authorization/controller_authorization_spec.rb +11 -11
  340. data/spec/unit/authorization/index_overriding_spec.rb +22 -0
  341. data/spec/unit/auto_link_spec.rb +42 -5
  342. data/spec/unit/batch_actions/resource_spec.rb +15 -14
  343. data/spec/unit/batch_actions/settings_spec.rb +18 -18
  344. data/spec/unit/belongs_to_spec.rb +26 -17
  345. data/spec/unit/cancan_adapter_spec.rb +4 -4
  346. data/spec/unit/comments_spec.rb +99 -39
  347. data/spec/unit/component_spec.rb +3 -3
  348. data/spec/unit/config_shared_examples.rb +8 -8
  349. data/spec/unit/controller_filters_spec.rb +26 -14
  350. data/spec/unit/csv_builder_spec.rb +152 -24
  351. data/spec/unit/dependency_spec.rb +135 -0
  352. data/spec/unit/devise_spec.rb +17 -37
  353. data/spec/unit/dsl_spec.rb +70 -9
  354. data/spec/unit/event_spec.rb +9 -9
  355. data/spec/unit/filters/filter_form_builder_spec.rb +167 -157
  356. data/spec/unit/filters/resource_spec.rb +35 -33
  357. data/spec/unit/form_builder_spec.rb +383 -145
  358. data/spec/unit/generators/install_spec.rb +5 -5
  359. data/spec/unit/helpers/collection_spec.rb +18 -18
  360. data/spec/unit/helpers/scope_chain_spec.rb +5 -5
  361. data/spec/unit/helpers/settings_spec.rb +4 -4
  362. data/spec/unit/i18n_spec.rb +12 -0
  363. data/spec/unit/menu_collection_spec.rb +14 -14
  364. data/spec/unit/menu_item_spec.rb +42 -42
  365. data/spec/unit/menu_spec.rb +20 -20
  366. data/spec/unit/namespace/authorization_spec.rb +5 -5
  367. data/spec/unit/namespace/register_page_spec.rb +9 -9
  368. data/spec/unit/namespace/register_resource_spec.rb +26 -28
  369. data/spec/unit/namespace_spec.rb +20 -20
  370. data/spec/unit/order_clause_spec.rb +81 -0
  371. data/spec/unit/page_controller_spec.rb +1 -1
  372. data/spec/unit/page_spec.rb +18 -12
  373. data/spec/unit/pretty_format_spec.rb +42 -14
  374. data/spec/unit/pundit_adapter_spec.rb +98 -0
  375. data/spec/unit/resource/action_items_spec.rb +13 -10
  376. data/spec/unit/resource/includes_spec.rb +21 -0
  377. data/spec/unit/resource/menu_spec.rb +1 -1
  378. data/spec/unit/resource/naming_spec.rb +23 -23
  379. data/spec/unit/resource/page_presenters_spec.rb +8 -8
  380. data/spec/unit/resource/pagination_spec.rb +6 -6
  381. data/spec/unit/resource/routes_spec.rb +10 -10
  382. data/spec/unit/resource/scopes_spec.rb +14 -7
  383. data/spec/unit/resource/sidebars_spec.rb +6 -6
  384. data/spec/unit/resource_collection_spec.rb +66 -68
  385. data/spec/unit/resource_controller/data_access_spec.rb +39 -21
  386. data/spec/unit/resource_controller/decorators_spec.rb +83 -0
  387. data/spec/unit/resource_controller/sidebars_spec.rb +7 -8
  388. data/spec/unit/resource_controller_spec.rb +66 -62
  389. data/spec/unit/resource_registration_spec.rb +12 -12
  390. data/spec/unit/resource_spec.rb +75 -40
  391. data/spec/unit/routing_spec.rb +39 -31
  392. data/spec/unit/scope_spec.rb +112 -30
  393. data/spec/unit/settings_spec.rb +51 -21
  394. data/spec/unit/view_factory_spec.rb +2 -2
  395. data/spec/unit/view_helpers/breadcrumbs_spec.rb +137 -69
  396. data/spec/unit/view_helpers/display_name_spec.rb +49 -21
  397. data/spec/unit/view_helpers/download_format_links_helper_spec.rb +5 -5
  398. data/spec/unit/view_helpers/fields_for_spec.rb +18 -18
  399. data/spec/unit/view_helpers/flash_helper_spec.rb +25 -0
  400. data/spec/unit/view_helpers/form_helper_spec.rb +9 -22
  401. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +59 -21
  402. data/spec/unit/views/components/action_list_popover_spec.rb +16 -6
  403. data/spec/unit/views/components/attributes_table_spec.rb +94 -52
  404. data/spec/unit/views/components/batch_action_popover_spec.rb +20 -6
  405. data/spec/unit/views/components/blank_slate_spec.rb +14 -4
  406. data/spec/unit/views/components/columns_spec.rb +52 -22
  407. data/spec/unit/views/components/index_list_spec.rb +11 -8
  408. data/spec/unit/views/components/index_table_for_spec.rb +46 -0
  409. data/spec/unit/views/components/paginated_collection_spec.rb +68 -59
  410. data/spec/unit/views/components/panel_spec.rb +32 -21
  411. data/spec/unit/views/components/popover_spec.rb +7 -7
  412. data/spec/unit/views/components/sidebar_section_spec.rb +18 -8
  413. data/spec/unit/views/components/site_title_spec.rb +8 -8
  414. data/spec/unit/views/components/status_tag_spec.rb +178 -38
  415. data/spec/unit/views/components/table_for_spec.rb +227 -44
  416. data/spec/unit/views/components/tabs_spec.rb +39 -0
  417. data/spec/unit/views/components/unsupported_browser_spec.rb +47 -0
  418. data/spec/unit/views/pages/form_spec.rb +17 -10
  419. data/spec/unit/views/pages/index_spec.rb +60 -0
  420. data/spec/unit/views/pages/layout_spec.rb +17 -21
  421. data/spec/unit/views/pages/show_spec.rb +16 -3
  422. data/spec/unit/views/tabbed_navigation_spec.rb +61 -52
  423. data/tasks/docs.rake +1 -1
  424. data/tasks/parallel_tests.rake +8 -2
  425. data/tasks/test.rake +8 -4
  426. data/tasks/yard.rake +7 -5
  427. metadata +180 -101
  428. data/app/assets/images/active_admin/admin_notes_icon.png +0 -0
  429. data/app/assets/images/active_admin/datepicker/datepicker-header-bg.png +0 -0
  430. data/app/assets/images/active_admin/datepicker/datepicker-next-link-icon.png +0 -0
  431. data/app/assets/images/active_admin/datepicker/datepicker-nipple.png +0 -0
  432. data/app/assets/images/active_admin/datepicker/datepicker-prev-link-icon.png +0 -0
  433. data/app/assets/images/active_admin/index_list_icons/block_icon.svg +0 -10
  434. data/app/assets/images/active_admin/index_list_icons/blog_icon.svg +0 -4
  435. data/app/assets/images/active_admin/index_list_icons/grid_icon.svg +0 -13
  436. data/app/assets/images/active_admin/index_list_icons/table_icon.svg +0 -3
  437. data/app/assets/images/active_admin/loading.gif +0 -0
  438. data/app/assets/javascripts/active_admin/components/application.js.coffee +0 -23
  439. data/app/assets/javascripts/active_admin/components/batch_actions.js.coffee +0 -26
  440. data/app/assets/javascripts/active_admin/components/has_many.js.coffee +0 -41
  441. data/app/assets/stylesheets/active_admin/components/_batch_actions.css.scss +0 -11
  442. data/app/assets/stylesheets/active_admin/components/_flash_messages.css.scss +0 -39
  443. data/app/assets/stylesheets/active_admin/components/_table_tools.css.scss +0 -95
  444. data/app/views/active_admin/dashboard/index.html.arb +0 -1
  445. data/app/views/active_admin/resource/index.csv.erb +0 -17
  446. data/docs/3-index-pages/create-an-index.md +0 -29
  447. data/lib/active_admin/inputs/filter_base.rb +0 -33
  448. data/lib/active_admin/inputs/filter_base/search_method_select.rb +0 -73
  449. data/lib/active_admin/inputs/filter_boolean_input.rb +0 -32
  450. data/lib/active_admin/inputs/filter_check_boxes_input.rb +0 -51
  451. data/lib/active_admin/inputs/filter_date_range_input.rb +0 -34
  452. data/lib/active_admin/inputs/filter_numeric_input.rb +0 -10
  453. data/lib/active_admin/inputs/filter_select_input.rb +0 -61
  454. data/lib/active_admin/inputs/filter_string_input.rb +0 -24
  455. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +0 -7
  456. data/spec/integration/memory_spec.rb +0 -29
  457. data/spec/integration/stylesheets_spec.rb +0 -41
  458. data/spec/javascripts/compiled/jquery.aa.checkbox-toggler-spec.js +0 -60
  459. data/spec/javascripts/compiled/jquery.aa.popover-spec.js +0 -106
  460. data/spec/javascripts/compiled/jquery.aa.table-checkbox-toggler-spec.js +0 -37
  461. data/spec/javascripts/helpers/vendor/jasmine-fixture-0.0.5.js +0 -108
  462. data/spec/javascripts/helpers/vendor/jasmine-jquery.js +0 -288
  463. data/spec/javascripts/helpers/vendor/sinon-1.2.0.js +0 -2915
  464. data/spec/javascripts/support/jquery-ui-1.8.16.custom.min.js +0 -34
  465. data/spec/javascripts/support/jquery.min.js +0 -4
  466. data/spec/spec_helper_without_rails.rb +0 -16
  467. data/tasks/js.rake +0 -32
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Scope do
4
4
 
@@ -7,41 +7,123 @@ describe ActiveAdmin::Scope do
7
7
 
8
8
  context "when just a scope method" do
9
9
  let(:scope) { ActiveAdmin::Scope.new :published }
10
- its(:name) { should == "Published"}
11
- its(:id) { should == "published"}
12
- its(:scope_method) { should == :published }
10
+
11
+ describe '#name' do
12
+ subject { super().name }
13
+ it { is_expected.to eq("Published")}
14
+ end
15
+
16
+ describe '#id' do
17
+ subject { super().id }
18
+ it { is_expected.to eq("published")}
19
+ end
20
+
21
+ describe '#scope_method' do
22
+ subject { super().scope_method }
23
+ it { is_expected.to eq(:published) }
24
+ end
13
25
  end
14
26
 
15
27
  context "when scope method is :all" do
16
28
  let(:scope) { ActiveAdmin::Scope.new :all }
17
- its(:name) { should == "All"}
18
- its(:id) { should == "all"}
29
+
30
+ describe '#name' do
31
+ subject { super().name }
32
+ it { is_expected.to eq("All")}
33
+ end
34
+
35
+ describe '#id' do
36
+ subject { super().id }
37
+ it { is_expected.to eq("all")}
38
+ end
19
39
  # :all does not return a chain but an array of active record
20
40
  # instances. We set the scope_method to nil then.
21
- its(:scope_method) { should == nil }
22
- its(:scope_block) { should == nil }
41
+
42
+ describe '#scope_method' do
43
+ subject { super().scope_method }
44
+ it { is_expected.to eq(nil) }
45
+ end
46
+
47
+ describe '#scope_block' do
48
+ subject { super().scope_block }
49
+ it { is_expected.to eq(nil) }
50
+ end
23
51
  end
24
52
 
25
53
  context 'when a name and scope method is :all' do
26
54
  let(:scope) { ActiveAdmin::Scope.new 'Tous', :all }
27
- its(:name) { should eq 'Tous' }
28
- its(:scope_method) { should be_nil }
29
- its(:scope_block) { should be_nil }
55
+
56
+ describe '#name' do
57
+ subject { super().name }
58
+ it { is_expected.to eq 'Tous' }
59
+ end
60
+
61
+ describe '#scope_method' do
62
+ subject { super().scope_method }
63
+ it { is_expected.to be_nil }
64
+ end
65
+
66
+ describe '#scope_block' do
67
+ subject { super().scope_block }
68
+ it { is_expected.to be_nil }
69
+ end
30
70
  end
31
71
 
32
72
  context "when a name and scope method" do
33
73
  let(:scope) { ActiveAdmin::Scope.new "With API Access", :with_api_access }
34
- its(:name) { should == "With API Access"}
35
- its(:id) { should == "with_api_access"}
36
- its(:scope_method) { should == :with_api_access }
74
+
75
+ describe '#name' do
76
+ subject { super().name }
77
+ it { is_expected.to eq("With API Access")}
78
+ end
79
+
80
+ describe '#id' do
81
+ subject { super().id }
82
+ it { is_expected.to eq("with_api_access")}
83
+ end
84
+
85
+ describe '#scope_method' do
86
+ subject { super().scope_method }
87
+ it { is_expected.to eq(:with_api_access) }
88
+ end
37
89
  end
38
90
 
39
91
  context "when a name and scope block" do
40
92
  let(:scope) { ActiveAdmin::Scope.new("My Scope"){|s| s } }
41
- its(:name) { should == "My Scope"}
42
- its(:id) { should == "my_scope"}
43
- its(:scope_method) { should == nil }
44
- its(:scope_block) { should be_a(Proc)}
93
+
94
+ describe '#name' do
95
+ subject { super().name }
96
+ it { is_expected.to eq("My Scope")}
97
+ end
98
+
99
+ describe '#id' do
100
+ subject { super().id }
101
+ it { is_expected.to eq("my_scope")}
102
+ end
103
+
104
+ describe '#scope_method' do
105
+ subject { super().scope_method }
106
+ it { is_expected.to eq(nil) }
107
+ end
108
+
109
+ describe '#scope_block' do
110
+ subject { super().scope_block }
111
+ it { is_expected.to be_a(Proc)}
112
+ end
113
+ end
114
+
115
+ context "when a name has a space and lowercase" do
116
+ let(:scope) { ActiveAdmin::Scope.new("my scope") }
117
+
118
+ describe '#name' do
119
+ subject { super().name }
120
+ it { is_expected.to eq("my scope")}
121
+ end
122
+
123
+ describe '#id' do
124
+ subject { super().id }
125
+ it { is_expected.to eq("my_scope")}
126
+ end
45
127
  end
46
128
 
47
129
  context "with a proc as the label" do
@@ -52,7 +134,7 @@ describe ActiveAdmin::Scope do
52
134
 
53
135
  it "should properly render the proc" do
54
136
  scope = ActiveAdmin::Scope.new proc{ Date.today.strftime '%A' }, :foobar
55
- scope.name.should eq Date.today.strftime '%A'
137
+ expect(scope.name).to eq Date.today.strftime '%A'
56
138
  end
57
139
  end
58
140
 
@@ -62,12 +144,12 @@ describe ActiveAdmin::Scope do
62
144
 
63
145
  it "should return true by default" do
64
146
  scope = ActiveAdmin::Scope.new(:default)
65
- scope.display_if_block.call.should == true
147
+ expect(scope.display_if_block.call).to eq true
66
148
  end
67
149
 
68
150
  it "should return the :if block if set" do
69
- scope = ActiveAdmin::Scope.new(:with_block, nil, :if => proc{ false })
70
- scope.display_if_block.call.should == false
151
+ scope = ActiveAdmin::Scope.new(:with_block, nil, if: proc{ false })
152
+ expect(scope.display_if_block.call).to eq false
71
153
  end
72
154
 
73
155
  end
@@ -75,18 +157,18 @@ describe ActiveAdmin::Scope do
75
157
  describe "#default" do
76
158
 
77
159
  it "should accept a boolean" do
78
- scope = ActiveAdmin::Scope.new(:method, nil, :default => true)
79
- scope.default_block.should == true
160
+ scope = ActiveAdmin::Scope.new(:method, nil, default: true)
161
+ expect(scope.default_block).to eq true
80
162
  end
81
163
 
82
164
  it "should default to a false #default_block" do
83
165
  scope = ActiveAdmin::Scope.new(:method, nil)
84
- scope.default_block.call.should == false
166
+ expect(scope.default_block.call).to eq false
85
167
  end
86
168
 
87
169
  it "should store the :default proc" do
88
- scope = ActiveAdmin::Scope.new(:with_block, nil, :default => proc{ true })
89
- scope.default_block.call.should == true
170
+ scope = ActiveAdmin::Scope.new(:with_block, nil, default: proc{ true })
171
+ expect(scope.default_block.call).to eq true
90
172
  end
91
173
 
92
174
  end
@@ -94,13 +176,13 @@ describe ActiveAdmin::Scope do
94
176
  describe "show_count" do
95
177
 
96
178
  it "should allow setting of show_count to prevent showing counts" do
97
- scope = ActiveAdmin::Scope.new(:default, nil, :show_count => false)
98
- scope.show_count.should == false
179
+ scope = ActiveAdmin::Scope.new(:default, nil, show_count: false)
180
+ expect(scope.show_count).to eq false
99
181
  end
100
182
 
101
183
  it "should set show_count to true if not passed in" do
102
184
  scope = ActiveAdmin::Scope.new(:default)
103
- scope.show_count.should == true
185
+ expect(scope.show_count).to eq true
104
186
  end
105
187
 
106
188
  end
@@ -1,23 +1,23 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe ActiveAdmin::Settings do
4
4
 
5
5
  subject{ Class.new{ include ActiveAdmin::Settings } }
6
6
 
7
- it{ should respond_to :setting }
8
- it{ should respond_to :deprecated_setting }
9
- it{ should respond_to :default_settings }
7
+ it{ is_expected.to respond_to :setting }
8
+ it{ is_expected.to respond_to :deprecated_setting }
9
+ it{ is_expected.to respond_to :default_settings }
10
10
 
11
11
  describe "class API" do
12
12
  it "should create settings" do
13
13
  subject.setting :foo, 'bar'
14
- subject.default_settings[:foo].should eq 'bar'
14
+ expect(subject.default_settings[:foo]).to eq 'bar'
15
15
  end
16
16
 
17
17
  it "should create deprecated settings" do
18
- ActiveAdmin::Deprecation.should_receive(:deprecate).twice
18
+ expect(ActiveAdmin::Deprecation).to receive(:deprecate).twice
19
19
  subject.deprecated_setting :baz, 32
20
- subject.default_settings[:baz].should eq 32
20
+ expect(subject.default_settings[:baz]).to eq 32
21
21
  end
22
22
  end
23
23
 
@@ -30,16 +30,16 @@ describe ActiveAdmin::Settings do
30
30
  let(:instance) { subject.new }
31
31
 
32
32
  it "should have access to a default value" do
33
- instance.foo.should eq 'bar'
33
+ expect(instance.foo).to eq 'bar'
34
34
  instance.foo = 'qqq'
35
- instance.foo.should eq 'qqq'
35
+ expect(instance.foo).to eq 'qqq'
36
36
  end
37
37
 
38
38
  it "should have access to a deprecated value" do
39
- ActiveAdmin::Deprecation.should_receive(:warn).exactly(3).times
40
- instance.baz.should eq 32
39
+ expect(ActiveAdmin::Deprecation).to receive(:warn).exactly(3).times
40
+ expect(instance.baz).to eq 32
41
41
  instance.baz = [45]
42
- instance.baz.should eq [45]
42
+ expect(instance.baz).to eq [45]
43
43
  end
44
44
  end
45
45
 
@@ -55,9 +55,9 @@ describe ActiveAdmin::Settings::Inheritance do
55
55
  end
56
56
  end
57
57
 
58
- it{ should respond_to :settings_inherited_by }
59
- it{ should respond_to :inheritable_setting }
60
- it{ should respond_to :deprecated_inheritable_setting }
58
+ it{ is_expected.to respond_to :settings_inherited_by }
59
+ it{ is_expected.to respond_to :inheritable_setting }
60
+ it{ is_expected.to respond_to :deprecated_inheritable_setting }
61
61
 
62
62
  let(:heir) { Class.new }
63
63
 
@@ -68,20 +68,50 @@ describe ActiveAdmin::Settings::Inheritance do
68
68
  describe "class API" do
69
69
  it "should add setting to an heir" do
70
70
  subject.inheritable_setting :one, 2
71
- heir.default_settings[:one].should eq 2
71
+ expect(heir.default_settings[:one]).to eq 2
72
72
  end
73
73
 
74
74
  it "should add deprecated setting to an heir" do
75
- ActiveAdmin::Deprecation.should_receive(:deprecate).exactly(4).times
75
+ expect(ActiveAdmin::Deprecation).to receive(:deprecate).exactly(4).times
76
76
  subject.deprecated_inheritable_setting :three, 4
77
- heir.default_settings[:three].should eq 4
77
+ expect(heir.default_settings[:three]).to eq 4
78
78
  end
79
79
  end
80
80
 
81
81
  describe "instance API" do
82
- before{ subject.inheritable_setting :left, :right }
83
- it "should work" do
84
- heir.new.left.should eq :right
82
+ describe "the setter `config.left =`" do
83
+ before{ subject.inheritable_setting :left, :right }
84
+ it "should work" do
85
+ config = heir.new
86
+ config.left = :none
87
+ expect(config.left).to eq :none
88
+ end
89
+ end
90
+
91
+ describe "the getter `config.left`" do
92
+ before{ subject.inheritable_setting :left, :right }
93
+ it "should work" do
94
+ expect(heir.new.left).to eq :right
95
+ end
96
+ end
97
+
98
+ describe "the getter with question-mark `config.left?`" do
99
+ {
100
+ "nil" => [nil, false],
101
+ "false" => [false, false],
102
+ "true" => [true, true],
103
+ "string" => ["string", true],
104
+ "empty string" => ["", false],
105
+ "array" => [[1, 2], true],
106
+ "empty array" => [[], false]
107
+ }.each do |context, (value, result)|
108
+ context "with a #{context} value" do
109
+ before{ subject.inheritable_setting :left, value }
110
+ it "should be #{result}" do
111
+ expect(heir.new.left?).to eq result
112
+ end
113
+ end
114
+ end
85
115
  end
86
116
  end
87
117
 
@@ -1,8 +1,8 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  def it_should_have_view(key, value)
4
4
  it "should have #{value} for view key '#{key}'" do
5
- subject.send(key).should == value
5
+ expect(subject.send(key)).to eq value
6
6
  end
7
7
  end
8
8
 
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require 'rails_helper'
2
2
 
3
3
  describe "Breadcrumbs" do
4
4
 
@@ -7,15 +7,19 @@ describe "Breadcrumbs" do
7
7
  describe "generating a trail from paths" do
8
8
 
9
9
  def params; {}; end
10
- def link_to(name, url); {:name => name, :path => url}; end
10
+ def link_to(name, url); {name: name, path: url}; end
11
11
 
12
+ actions = ActiveAdmin::BaseController::ACTIVE_ADMIN_ACTIONS
13
+
14
+ let(:user) { double display_name: 'Jane Doe' }
15
+ let(:user_config) { double find_resource: user, resource_name: double(route_key: 'users'),
16
+ defined_actions: actions }
12
17
  let(:post) { double display_name: 'Hello World' }
13
- let(:post_config) { double find_resource: post }
18
+ let(:post_config) { double find_resource: post, resource_name: double(route_key: 'posts'),
19
+ defined_actions: actions, belongs_to_config: double(target: user_config) }
14
20
 
15
21
  let :active_admin_config do
16
- active_admin_config = double
17
- active_admin_config.stub_chain(:belongs_to_config, :target).and_return post_config
18
- active_admin_config
22
+ post_config
19
23
  end
20
24
 
21
25
  let(:trail) { breadcrumb_links(path) }
@@ -24,124 +28,188 @@ describe "Breadcrumbs" do
24
28
  let(:path) { "/admin" }
25
29
 
26
30
  it "should not have any items" do
27
- trail.size.should == 0
31
+ expect(trail.size).to eq 0
32
+ end
33
+ end
34
+
35
+ context "when path 'admin/users'" do
36
+ let(:path) { 'admin/users' }
37
+
38
+ it 'should have one item' do
39
+ expect(trail.size).to eq 1
40
+ end
41
+ it 'should have a link to /admin' do
42
+ expect(trail[0][:name]).to eq 'Admin'
43
+ expect(trail[0][:path]).to eq '/admin'
28
44
  end
29
45
  end
30
46
 
31
- context "when path '/admin/posts'" do
32
- let(:path) { "/admin/posts" }
47
+ context "when path '/admin/users'" do
48
+ let(:path) { "/admin/users" }
33
49
 
34
50
  it "should have one item" do
35
- trail.size.should == 1
51
+ expect(trail.size).to eq 1
36
52
  end
37
53
  it "should have a link to /admin" do
38
- trail[0][:name].should == "Admin"
39
- trail[0][:path].should == "/admin"
54
+ expect(trail[0][:name]).to eq "Admin"
55
+ expect(trail[0][:path]).to eq "/admin"
40
56
  end
41
57
  end
42
58
 
43
- context "when path '/admin/posts/1'" do
44
- let(:path) { "/admin/posts/1" }
59
+ context "when path '/admin/users/1'" do
60
+ let(:path) { "/admin/users/1" }
45
61
 
46
62
  it "should have 2 items" do
47
- trail.size.should == 2
63
+ expect(trail.size).to eq 2
48
64
  end
49
65
  it "should have a link to /admin" do
50
- trail[0][:name].should == "Admin"
51
- trail[0][:path].should == "/admin"
66
+ expect(trail[0][:name]).to eq "Admin"
67
+ expect(trail[0][:path]).to eq "/admin"
52
68
  end
53
- it "should have a link to /admin/posts" do
54
- trail[1][:name].should == "Posts"
55
- trail[1][:path].should == "/admin/posts"
69
+ it "should have a link to /admin/users" do
70
+ expect(trail[1][:name]).to eq "Users"
71
+ expect(trail[1][:path]).to eq "/admin/users"
56
72
  end
57
73
  end
58
74
 
59
- context "when path '/admin/posts/1/comments'" do
60
- let(:path) { "/admin/posts/1/comments" }
75
+ context "when path '/admin/users/1/posts'" do
76
+ let(:path) { "/admin/users/1/posts" }
61
77
 
62
78
  it "should have 3 items" do
63
- trail.size.should == 3
79
+ expect(trail.size).to eq 3
64
80
  end
65
81
  it "should have a link to /admin" do
66
- trail[0][:name].should == "Admin"
67
- trail[0][:path].should == "/admin"
82
+ expect(trail[0][:name]).to eq "Admin"
83
+ expect(trail[0][:path]).to eq "/admin"
68
84
  end
69
- it "should have a link to /admin/posts" do
70
- trail[1][:name].should == "Posts"
71
- trail[1][:path].should == "/admin/posts"
85
+ it "should have a link to /admin/users" do
86
+ expect(trail[1][:name]).to eq "Users"
87
+ expect(trail[1][:path]).to eq "/admin/users"
72
88
  end
73
89
 
74
- context "when Post.find(1) doesn't exist" do
75
- before { post_config.stub(find_resource: nil) }
76
- it "should have a link to /admin/posts/1" do
77
- trail[2][:name].should == "1"
78
- trail[2][:path].should == "/admin/posts/1"
90
+ context "when User.find(1) doesn't exist" do
91
+ before { allow(user_config).to receive(:find_resource) }
92
+ it "should have a link to /admin/users/1" do
93
+ expect(trail[2][:name]).to eq "1"
94
+ expect(trail[2][:path]).to eq "/admin/users/1"
79
95
  end
80
96
  end
81
97
 
82
- context "when Post.find(1) does exist" do
83
- it "should have a link to /admin/posts/1 using display name" do
84
- trail[2][:name].should == "Hello World"
85
- trail[2][:path].should == "/admin/posts/1"
98
+ context "when User.find(1) does exist" do
99
+ it "should have a link to /admin/users/1 using display name" do
100
+ expect(trail[2][:name]).to eq "Jane Doe"
101
+ expect(trail[2][:path]).to eq "/admin/users/1"
86
102
  end
87
103
  end
88
104
  end
89
105
 
90
- context "when path '/admin/posts/4e24d6249ccf967313000000/comments'" do
91
- let(:path) { "/admin/posts/4e24d6249ccf967313000000/comments" }
106
+ context "when path '/admin/users/4e24d6249ccf967313000000/posts'" do
107
+ let(:path) { "/admin/users/4e24d6249ccf967313000000/posts" }
92
108
 
93
109
  it "should have 3 items" do
94
- trail.size.should == 3
110
+ expect(trail.size).to eq 3
95
111
  end
96
112
  it "should have a link to /admin" do
97
- trail[0][:name].should == "Admin"
98
- trail[0][:path].should == "/admin"
113
+ expect(trail[0][:name]).to eq "Admin"
114
+ expect(trail[0][:path]).to eq "/admin"
99
115
  end
100
- it "should have a link to /admin/posts" do
101
- trail[1][:name].should == "Posts"
102
- trail[1][:path].should == "/admin/posts"
116
+ it "should have a link to /admin/users" do
117
+ expect(trail[1][:name]).to eq "Users"
118
+ expect(trail[1][:path]).to eq "/admin/users"
103
119
  end
104
120
 
105
- context "when Post.find(4e24d6249ccf967313000000) doesn't exist" do
106
- before { post_config.stub(find_resource: nil) }
107
- it "should have a link to /admin/posts/4e24d6249ccf967313000000" do
108
- trail[2][:name].should == "4e24d6249ccf967313000000"
109
- trail[2][:path].should == "/admin/posts/4e24d6249ccf967313000000"
121
+ context "when User.find(4e24d6249ccf967313000000) doesn't exist" do
122
+ before { allow(user_config).to receive(:find_resource) }
123
+ it "should have a link to /admin/users/4e24d6249ccf967313000000" do
124
+ expect(trail[2][:name]).to eq "4e24d6249ccf967313000000"
125
+ expect(trail[2][:path]).to eq "/admin/users/4e24d6249ccf967313000000"
110
126
  end
111
127
  end
112
128
 
113
- context "when Post.find(4e24d6249ccf967313000000) does exist" do
129
+ context "when User.find(4e24d6249ccf967313000000) does exist" do
114
130
  before do
115
- post_config.stub find_resource: double(display_name: 'Hello :)')
131
+ display_name = double(display_name: 'Hello :)')
132
+ allow(user_config).to receive(:find_resource).and_return(display_name)
116
133
  end
117
- it "should have a link to /admin/posts/4e24d6249ccf967313000000 using display name" do
118
- trail[2][:name].should == "Hello :)"
119
- trail[2][:path].should == "/admin/posts/4e24d6249ccf967313000000"
134
+ it "should have a link to /admin/users/4e24d6249ccf967313000000 using display name" do
135
+ expect(trail[2][:name]).to eq "Hello :)"
136
+ expect(trail[2][:path]).to eq "/admin/users/4e24d6249ccf967313000000"
120
137
  end
121
138
  end
122
139
  end
123
140
 
124
- context "when path '/admin/posts/1/coments/1'" do
125
- let(:path) { "/admin/posts/1/comments/1" }
141
+ context "when path '/admin/users/1/coments/1'" do
142
+ let(:path) { "/admin/users/1/posts/1" }
126
143
 
127
144
  it "should have 4 items" do
128
- trail.size.should == 4
145
+ expect(trail.size).to eq 4
129
146
  end
130
147
  it "should have a link to /admin" do
131
- trail[0][:name].should == "Admin"
132
- trail[0][:path].should == "/admin"
148
+ expect(trail[0][:name]).to eq "Admin"
149
+ expect(trail[0][:path]).to eq "/admin"
133
150
  end
134
- it "should have a link to /admin/posts" do
135
- trail[1][:name].should == "Posts"
136
- trail[1][:path].should == "/admin/posts"
151
+ it "should have a link to /admin/users" do
152
+ expect(trail[1][:name]).to eq "Users"
153
+ expect(trail[1][:path]).to eq "/admin/users"
154
+ end
155
+ it "should have a link to /admin/users/1" do
156
+ expect(trail[2][:name]).to eq "Jane Doe"
157
+ expect(trail[2][:path]).to eq "/admin/users/1"
158
+ end
159
+ it "should have a link to /admin/users/1/posts" do
160
+ expect(trail[3][:name]).to eq "Posts"
161
+ expect(trail[3][:path]).to eq "/admin/users/1/posts"
162
+ end
163
+ end
164
+
165
+ context "when path '/admin/users/1/coments/1/edit'" do
166
+ let(:path) { "/admin/users/1/posts/1/edit" }
167
+
168
+ it "should have 5 items" do
169
+ expect(trail.size).to eq 5
137
170
  end
138
- it "should have a link to /admin/posts/1" do
139
- trail[2][:name].should == "Hello World"
140
- trail[2][:path].should == "/admin/posts/1"
171
+ it "should have a link to /admin" do
172
+ expect(trail[0][:name]).to eq "Admin"
173
+ expect(trail[0][:path]).to eq "/admin"
174
+ end
175
+ it "should have a link to /admin/users" do
176
+ expect(trail[1][:name]).to eq "Users"
177
+ expect(trail[1][:path]).to eq "/admin/users"
178
+ end
179
+ it "should have a link to /admin/users/1" do
180
+ expect(trail[2][:name]).to eq "Jane Doe"
181
+ expect(trail[2][:path]).to eq "/admin/users/1"
182
+ end
183
+ it "should have a link to /admin/users/1/posts" do
184
+ expect(trail[3][:name]).to eq "Posts"
185
+ expect(trail[3][:path]).to eq "/admin/users/1/posts"
186
+ end
187
+ it "should have a link to /admin/users/1/posts/1" do
188
+ expect(trail[4][:name]).to eq "Hello World"
189
+ expect(trail[4][:path]).to eq "/admin/users/1/posts/1"
190
+ end
191
+ end
192
+
193
+ context "when the 'show' action is disabled" do
194
+ let(:post_config) { double find_resource: post, resource_name: double(route_key: 'posts'),
195
+ defined_actions: actions - [:show], # this is the change
196
+ belongs_to_config: double(target: user_config) }
197
+
198
+ let(:path) { "/admin/posts/1/edit" }
199
+
200
+ it "should have 3 items" do
201
+ expect(trail.size).to eq 3
202
+ end
203
+ it "should have a link to /admin" do
204
+ expect(trail[0][:name]).to eq "Admin"
205
+ expect(trail[0][:path]).to eq "/admin"
206
+ end
207
+ it "should have a link to /admin/posts" do
208
+ expect(trail[1][:name]).to eq "Posts"
209
+ expect(trail[1][:path]).to eq "/admin/posts"
141
210
  end
142
- it "should have a link to /admin/posts/1/comments" do
143
- trail[3][:name].should == "Comments"
144
- trail[3][:path].should == "/admin/posts/1/comments"
211
+ it "should not link to the show view for the post" do
212
+ expect(trail[2]).to eq "Hello World"
145
213
  end
146
214
  end
147
215