activeadmin 1.0.0 → 1.1.0

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 (276) hide show
  1. checksums.yaml +4 -4
  2. data/.github/ISSUE_TEMPLATE.md +20 -0
  3. data/.mdlrc +1 -0
  4. data/.rubocop.yml +52 -3
  5. data/.simplecov +13 -0
  6. data/.travis.yml +9 -24
  7. data/.yardopts +0 -1
  8. data/CHANGELOG.md +85 -4
  9. data/CONTRIBUTING.md +33 -57
  10. data/Gemfile +26 -17
  11. data/Rakefile +1 -12
  12. data/activeadmin.gemspec +9 -11
  13. data/app/assets/javascripts/active_admin/base.js.coffee +6 -2
  14. data/app/assets/javascripts/active_admin/initializers/batch_actions.js.coffee +5 -1
  15. data/app/assets/javascripts/active_admin/initializers/datepicker.js.coffee +5 -1
  16. data/app/assets/javascripts/active_admin/initializers/filters.js.coffee +5 -1
  17. data/app/assets/javascripts/active_admin/initializers/tabs.js.coffee +5 -1
  18. data/app/assets/javascripts/active_admin/lib/batch_actions.js.coffee +6 -3
  19. data/app/assets/javascripts/active_admin/lib/checkbox-toggler.js.coffee +9 -7
  20. data/app/assets/javascripts/active_admin/lib/dropdown-menu.js.coffee +5 -2
  21. data/app/assets/javascripts/active_admin/lib/per_page.js.coffee +6 -2
  22. data/app/assets/javascripts/active_admin/lib/table-checkbox-toggler.js.coffee +3 -5
  23. data/app/assets/stylesheets/active_admin/_base.scss +2 -2
  24. data/app/assets/stylesheets/active_admin/_forms.scss +6 -12
  25. data/app/assets/stylesheets/active_admin/components/_batch_actions.scss +0 -5
  26. data/app/assets/stylesheets/active_admin/components/_pagination.scss +11 -0
  27. data/app/assets/stylesheets/active_admin/components/_status_tags.scss +1 -0
  28. data/app/assets/stylesheets/active_admin/components/_tables.scss +4 -1
  29. data/app/assets/stylesheets/active_admin/mixins/_all.scss +0 -2
  30. data/app/assets/stylesheets/active_admin/print.scss +2 -3
  31. data/app/views/active_admin/devise/sessions/new.html.erb +1 -1
  32. data/app/views/active_admin/devise/shared/_links.erb +12 -6
  33. data/app/views/kaminari/active_admin/_first_page.html.erb +11 -0
  34. data/app/views/kaminari/active_admin/_gap.html.erb +8 -0
  35. data/app/views/kaminari/active_admin/_last_page.html.erb +11 -0
  36. data/app/views/kaminari/active_admin/_next_page.html.erb +11 -0
  37. data/app/views/kaminari/active_admin/_page.html.erb +12 -0
  38. data/app/views/kaminari/active_admin/_paginator.html.erb +25 -0
  39. data/app/views/kaminari/active_admin/_prev_page.html.erb +11 -0
  40. data/codecov.yml +14 -12
  41. data/config/i18n-tasks.yml +26 -0
  42. data/config/locales/ar.yml +1 -3
  43. data/config/locales/bg.yml +0 -2
  44. data/config/locales/bs.yml +0 -2
  45. data/config/locales/ca.yml +0 -2
  46. data/config/locales/cs.yml +0 -2
  47. data/config/locales/da.yml +1 -3
  48. data/config/locales/de-CH.yml +1 -3
  49. data/config/locales/de.yml +1 -3
  50. data/config/locales/el.yml +1 -3
  51. data/config/locales/en-CA.yml +138 -0
  52. data/config/locales/en-GB.yml +43 -3
  53. data/config/locales/en.yml +8 -4
  54. data/config/locales/es-MX.yml +3 -2
  55. data/config/locales/es.yml +10 -4
  56. data/config/locales/fa.yml +0 -2
  57. data/config/locales/fi.yml +0 -2
  58. data/config/locales/fr.yml +9 -2
  59. data/config/locales/he.yml +53 -7
  60. data/config/locales/hr.yml +0 -2
  61. data/config/locales/hu.yml +0 -2
  62. data/config/locales/id.yml +1 -3
  63. data/config/locales/it.yml +2 -4
  64. data/config/locales/ja.yml +1 -3
  65. data/config/locales/ko.yml +0 -2
  66. data/config/locales/lt.yml +24 -4
  67. data/config/locales/lv.yml +0 -2
  68. data/config/locales/nb.yml +0 -2
  69. data/config/locales/nl.yml +1 -3
  70. data/config/locales/pl.yml +3 -2
  71. data/config/locales/pt-BR.yml +1 -3
  72. data/config/locales/pt-PT.yml +0 -2
  73. data/config/locales/ro.yml +0 -2
  74. data/config/locales/ru.yml +1 -3
  75. data/config/locales/sk.yml +0 -2
  76. data/config/locales/sv-SE.yml +1 -3
  77. data/config/locales/tr.yml +0 -2
  78. data/config/locales/uk.yml +1 -3
  79. data/config/locales/vi.yml +0 -2
  80. data/config/locales/zh-CN.yml +0 -2
  81. data/config/locales/zh-TW.yml +1 -3
  82. data/config/mdl_style.rb +9 -0
  83. data/cucumber.yml +3 -3
  84. data/docs/0-installation.md +15 -12
  85. data/docs/1-general-configuration.md +10 -3
  86. data/docs/10-custom-pages.md +10 -5
  87. data/docs/11-decorators.md +1 -0
  88. data/docs/12-arbre-components.md +7 -9
  89. data/docs/13-authorization-adapter.md +39 -24
  90. data/docs/14-gotchas.md +41 -22
  91. data/docs/2-resource-customization.md +41 -18
  92. data/docs/3-index-pages.md +30 -12
  93. data/docs/3-index-pages/custom-index.md +1 -0
  94. data/docs/3-index-pages/index-as-block.md +0 -5
  95. data/docs/3-index-pages/index-as-blog.md +0 -5
  96. data/docs/3-index-pages/index-as-grid.md +0 -5
  97. data/docs/3-index-pages/index-as-table.md +1 -9
  98. data/docs/4-csv-format.md +2 -1
  99. data/docs/5-forms.md +45 -21
  100. data/docs/6-show-pages.md +2 -1
  101. data/docs/7-sidebars.md +2 -1
  102. data/docs/8-custom-actions.md +4 -1
  103. data/docs/9-batch-actions.md +4 -2
  104. data/docs/documentation.md +19 -21
  105. data/features/comments/commenting.feature +20 -0
  106. data/features/index/filters.feature +41 -1
  107. data/features/index/format_as_csv.feature +17 -0
  108. data/features/index/index_scopes.feature +15 -0
  109. data/features/registering_assets.feature +8 -4
  110. data/features/show/attributes_table_title.feature +54 -0
  111. data/features/show/tabs.feature +10 -4
  112. data/features/step_definitions/action_link_steps.rb +0 -1
  113. data/features/step_definitions/attributes_table_title_steps.rb +11 -0
  114. data/features/step_definitions/batch_action_steps.rb +2 -2
  115. data/features/step_definitions/comment_steps.rb +21 -1
  116. data/features/step_definitions/configuration_steps.rb +1 -1
  117. data/features/step_definitions/filter_steps.rb +9 -0
  118. data/features/step_definitions/format_steps.rb +1 -1
  119. data/features/step_definitions/index_scope_steps.rb +4 -0
  120. data/features/support/env.rb +5 -4
  121. data/features/support/regular_env.rb +7 -0
  122. data/features/support/reload_env.rb +7 -0
  123. data/gemfiles/rails_42.gemfile +2 -37
  124. data/gemfiles/rails_50.gemfile +5 -40
  125. data/gemfiles/rails_51.gemfile +5 -40
  126. data/lib/active_admin.rb +0 -3
  127. data/lib/active_admin/application.rb +6 -4
  128. data/lib/active_admin/asset_registration.rb +8 -0
  129. data/lib/active_admin/authorization_adapter.rb +0 -3
  130. data/lib/active_admin/base_controller.rb +1 -2
  131. data/lib/active_admin/base_controller/authorization.rb +0 -1
  132. data/lib/active_admin/base_controller/menu.rb +9 -9
  133. data/lib/active_admin/batch_actions/controller.rb +1 -1
  134. data/lib/active_admin/batch_actions/views/selection_cells.rb +6 -5
  135. data/lib/active_admin/csv_builder.rb +3 -3
  136. data/lib/active_admin/dependency.rb +1 -1
  137. data/lib/active_admin/devise.rb +2 -2
  138. data/lib/active_admin/dsl.rb +2 -2
  139. data/lib/active_admin/filters.rb +2 -0
  140. data/lib/active_admin/filters/active.rb +13 -14
  141. data/lib/active_admin/filters/active_filter.rb +87 -0
  142. data/lib/active_admin/filters/active_sidebar.rb +50 -0
  143. data/lib/active_admin/filters/forms.rb +1 -2
  144. data/lib/active_admin/filters/resource_extension.rb +2 -30
  145. data/lib/active_admin/helpers/settings.rb +0 -1
  146. data/lib/active_admin/inputs/datepicker_input.rb +5 -5
  147. data/lib/active_admin/inputs/filters/date_range_input.rb +12 -4
  148. data/lib/active_admin/inputs/filters/text_input.rb +0 -1
  149. data/lib/active_admin/menu.rb +4 -4
  150. data/lib/active_admin/menu_collection.rb +0 -2
  151. data/lib/active_admin/namespace.rb +1 -1
  152. data/lib/active_admin/orm/active_record/comments/comment.rb +1 -5
  153. data/lib/active_admin/orm/active_record/comments/views/active_admin_comments.rb +4 -2
  154. data/lib/active_admin/page_controller.rb +1 -1
  155. data/lib/active_admin/resource/action_items.rb +4 -0
  156. data/lib/active_admin/resource/attributes.rb +1 -1
  157. data/lib/active_admin/resource/page_presenters.rb +1 -1
  158. data/lib/active_admin/resource/routes.rb +0 -1
  159. data/lib/active_admin/resource/scopes.rb +2 -1
  160. data/lib/active_admin/resource_controller.rb +1 -1
  161. data/lib/active_admin/resource_controller/data_access.rb +8 -9
  162. data/lib/active_admin/resource_dsl.rb +10 -10
  163. data/lib/active_admin/router.rb +1 -1
  164. data/lib/active_admin/scope.rb +3 -3
  165. data/lib/active_admin/version.rb +1 -1
  166. data/lib/active_admin/view_helpers.rb +1 -0
  167. data/lib/active_admin/view_helpers/display_helper.rb +1 -1
  168. data/lib/active_admin/view_helpers/form_helper.rb +1 -1
  169. data/lib/active_admin/view_helpers/scope_name_helper.rb +16 -0
  170. data/lib/active_admin/views/action_items.rb +1 -1
  171. data/lib/active_admin/views/components/active_admin_form.rb +1 -1
  172. data/lib/active_admin/views/components/dropdown_menu.rb +2 -2
  173. data/lib/active_admin/views/components/index_list.rb +0 -2
  174. data/lib/active_admin/views/components/paginated_collection.rb +1 -1
  175. data/lib/active_admin/views/components/scopes.rb +2 -10
  176. data/lib/active_admin/views/components/status_tag.rb +19 -11
  177. data/lib/active_admin/views/components/tabs.rb +2 -2
  178. data/lib/active_admin/views/header.rb +0 -1
  179. data/lib/active_admin/views/index_as_blog.rb +1 -2
  180. data/lib/active_admin/views/index_as_grid.rb +2 -2
  181. data/lib/active_admin/views/index_as_table.rb +19 -1
  182. data/lib/active_admin/views/pages/base.rb +4 -4
  183. data/lib/active_admin/views/pages/show.rb +6 -1
  184. data/lib/active_admin/views/title_bar.rb +4 -4
  185. data/lib/bug_report_templates/{rails_5_master.rb → active_admin_master.rb} +35 -40
  186. data/lib/generators/active_admin/devise/devise_generator.rb +1 -1
  187. data/lib/generators/active_admin/install/templates/admin_user.rb.erb +1 -1
  188. data/spec/bug_report_templates_spec.rb +2 -3
  189. data/spec/rails_helper.rb +0 -3
  190. data/spec/spec_helper.rb +1 -12
  191. data/spec/support/active_admin_integration_spec_helper.rb +1 -1
  192. data/spec/support/rails_template.rb +5 -37
  193. data/spec/support/rails_template_with_data.rb +262 -3
  194. data/spec/support/templates/policies/active_admin/comment_policy.rb +1 -1
  195. data/spec/support/templates/policies/active_admin/page_policy.rb +1 -1
  196. data/spec/support/templates/policies/application_policy.rb +1 -2
  197. data/spec/support/templates/post_decorator.rb +0 -1
  198. data/spec/unit/abstract_view_factory_spec.rb +0 -1
  199. data/spec/unit/application_spec.rb +4 -0
  200. data/spec/unit/asset_registration_spec.rb +29 -0
  201. data/spec/unit/belongs_to_spec.rb +1 -2
  202. data/spec/unit/config_shared_examples.rb +1 -1
  203. data/spec/unit/csv_builder_spec.rb +2 -4
  204. data/spec/unit/dependency_spec.rb +7 -7
  205. data/spec/unit/dsl_spec.rb +0 -2
  206. data/spec/unit/filters/active_filter_spec.rb +135 -0
  207. data/spec/unit/filters/active_spec.rb +11 -1
  208. data/spec/unit/filters/filter_form_builder_spec.rb +9 -7
  209. data/spec/unit/form_builder_spec.rb +14 -14
  210. data/spec/unit/helpers/scope_chain_spec.rb +0 -1
  211. data/spec/unit/i18n_spec.rb +17 -0
  212. data/spec/unit/menu_item_spec.rb +1 -3
  213. data/spec/unit/namespace/register_page_spec.rb +1 -1
  214. data/spec/unit/namespace_spec.rb +0 -1
  215. data/spec/unit/page_spec.rb +0 -3
  216. data/spec/unit/resource/action_items_spec.rb +5 -1
  217. data/spec/unit/resource/attributes_spec.rb +1 -2
  218. data/spec/unit/resource/ordering_spec.rb +0 -3
  219. data/spec/unit/resource/scopes_spec.rb +1 -1
  220. data/spec/unit/resource_controller/data_access_spec.rb +2 -2
  221. data/spec/unit/resource_controller_spec.rb +1 -2
  222. data/spec/unit/resource_spec.rb +9 -2
  223. data/spec/unit/routing_spec.rb +0 -2
  224. data/spec/unit/scope_spec.rb +3 -3
  225. data/spec/unit/settings_spec.rb +0 -1
  226. data/spec/unit/view_factory_spec.rb +1 -1
  227. data/spec/unit/view_helpers/flash_helper_spec.rb +0 -1
  228. data/spec/unit/view_helpers/form_helper_spec.rb +3 -4
  229. data/spec/unit/view_helpers/method_or_proc_helper_spec.rb +0 -1
  230. data/spec/unit/views/components/attributes_table_spec.rb +0 -1
  231. data/spec/unit/views/components/columns_spec.rb +0 -2
  232. data/spec/unit/views/components/site_title_spec.rb +0 -2
  233. data/spec/unit/views/components/status_tag_spec.rb +23 -7
  234. data/spec/unit/views/components/tabs_spec.rb +29 -1
  235. data/spec/unit/views/pages/index_spec.rb +1 -1
  236. data/tasks/docs.rake +37 -10
  237. data/tasks/lint.rake +14 -1
  238. data/tasks/local.rake +2 -2
  239. data/tasks/test.rake +8 -25
  240. data/vendor/assets/javascripts/jquery-ui/data.js +41 -0
  241. data/vendor/assets/javascripts/jquery-ui/disable-selection.js +48 -0
  242. data/vendor/assets/javascripts/jquery-ui/escape-selector.js +23 -0
  243. data/vendor/assets/javascripts/jquery-ui/focusable.js +86 -0
  244. data/vendor/assets/javascripts/jquery-ui/ie.js +17 -0
  245. data/vendor/assets/javascripts/jquery-ui/keycode.js +47 -0
  246. data/vendor/assets/javascripts/jquery-ui/plugin.js +46 -0
  247. data/vendor/assets/javascripts/jquery-ui/position.js +500 -0
  248. data/vendor/assets/javascripts/jquery-ui/safe-active-element.js +42 -0
  249. data/vendor/assets/javascripts/jquery-ui/safe-blur.js +23 -0
  250. data/vendor/assets/javascripts/jquery-ui/scroll-parent.js +47 -0
  251. data/vendor/assets/javascripts/jquery-ui/tabbable.js +38 -0
  252. data/vendor/assets/javascripts/jquery-ui/unique-id.js +51 -0
  253. data/vendor/assets/javascripts/jquery-ui/version.js +17 -0
  254. data/vendor/assets/javascripts/jquery-ui/widget.js +735 -0
  255. data/vendor/assets/javascripts/jquery-ui/widgets/button.js +391 -0
  256. data/vendor/assets/javascripts/jquery-ui/widgets/checkboxradio.js +300 -0
  257. data/vendor/assets/javascripts/jquery-ui/widgets/controlgroup.js +300 -0
  258. data/vendor/assets/javascripts/jquery-ui/widgets/datepicker.js +2123 -0
  259. data/vendor/assets/javascripts/jquery-ui/widgets/dialog.js +954 -0
  260. data/vendor/assets/javascripts/jquery-ui/widgets/draggable.js +1259 -0
  261. data/vendor/assets/javascripts/jquery-ui/widgets/mouse.js +230 -0
  262. data/vendor/assets/javascripts/jquery-ui/widgets/resizable.js +1207 -0
  263. data/vendor/assets/javascripts/jquery-ui/widgets/sortable.js +1561 -0
  264. data/vendor/assets/javascripts/jquery-ui/widgets/tabs.js +931 -0
  265. data/vendor/assets/stylesheets/active_admin/_normalize.scss +447 -0
  266. metadata +62 -51
  267. data/.hound.yml +0 -14
  268. data/Appraisals +0 -41
  269. data/app/assets/images/active_admin/datepicker/datepicker-input-icon.png +0 -0
  270. data/app/assets/javascripts/active_admin/jquery_ui.js.erb +0 -18
  271. data/app/assets/stylesheets/active_admin/mixins/_reset.scss +0 -165
  272. data/lib/active_admin/filters/humanized.rb +0 -68
  273. data/spec/requests/javascript_spec.rb +0 -22
  274. data/spec/support/jslint.yml +0 -80
  275. data/spec/unit/filters/humanized_spec.rb +0 -64
  276. data/tasks/yard.rake +0 -9
@@ -6,4 +6,4 @@ module ActiveAdmin
6
6
  end
7
7
  end
8
8
  end
9
- end
9
+ end
@@ -15,4 +15,4 @@ module ActiveAdmin
15
15
  end
16
16
  end
17
17
  end
18
- end
18
+ end
@@ -38,8 +38,7 @@ class ApplicationPolicy
38
38
  true
39
39
  end
40
40
 
41
-
42
41
  def scope
43
42
  Pundit.policy_scope!(user, record.class)
44
43
  end
45
- end
44
+ end
@@ -8,4 +8,3 @@ class PostDecorator < Draper::Decorator
8
8
  'A method only available on the decorator'
9
9
  end
10
10
  end
11
-
@@ -75,5 +75,4 @@ RSpec.describe ActiveAdmin::AbstractViewFactory do
75
75
  end
76
76
  end
77
77
 
78
-
79
78
  end
@@ -100,6 +100,10 @@ RSpec.describe ActiveAdmin::Application do
100
100
  expect(application.order_clause).to eq ActiveAdmin::OrderClause
101
101
  end
102
102
 
103
+ it "should have default show_count for scopes" do
104
+ expect(application.scopes_show_count).to eq true
105
+ end
106
+
103
107
  describe "authentication settings" do
104
108
 
105
109
  it "should have no default current_user_method" do
@@ -8,13 +8,37 @@ RSpec.describe ActiveAdmin::AssetRegistration do
8
8
  clear_javascripts!
9
9
  end
10
10
 
11
+ it "is deprecated" do
12
+ expect(ActiveAdmin::Deprecation)
13
+ .to receive(:warn)
14
+ .with(<<-MSG.strip_heredoc
15
+ The `register_stylesheet` config is deprecated and will be removed
16
+ in v2. Import your "sample_styles.css" stylesheet in the active_admin.scss.
17
+ MSG
18
+ )
19
+
20
+ register_stylesheet "sample_styles.css"
21
+
22
+ expect(ActiveAdmin::Deprecation)
23
+ .to receive(:warn)
24
+ .with(<<-MSG.strip_heredoc
25
+ The `register_javascript` config is deprecated and will be removed
26
+ in v2. Import your "sample_scripts.js" javascript in the active_admin.js.
27
+ MSG
28
+ )
29
+
30
+ register_javascript "sample_scripts.js"
31
+ end
32
+
11
33
  it "should register a stylesheet file" do
34
+ expect(ActiveAdmin::Deprecation).to receive(:warn).once
12
35
  register_stylesheet "active_admin.css"
13
36
  expect(stylesheets.length).to eq 1
14
37
  expect(stylesheets.keys.first).to eq "active_admin.css"
15
38
  end
16
39
 
17
40
  it "should clear all existing stylesheets" do
41
+ expect(ActiveAdmin::Deprecation).to receive(:warn).once
18
42
  register_stylesheet "active_admin.css"
19
43
  expect(stylesheets.length).to eq 1
20
44
  clear_stylesheets!
@@ -22,22 +46,26 @@ RSpec.describe ActiveAdmin::AssetRegistration do
22
46
  end
23
47
 
24
48
  it "should allow media option when registering stylesheet" do
49
+ expect(ActiveAdmin::Deprecation).to receive(:warn).once
25
50
  register_stylesheet "active_admin.css", media: :print
26
51
  expect(stylesheets.values.first[:media]).to eq :print
27
52
  end
28
53
 
29
54
  it "shouldn't register a stylesheet twice" do
55
+ expect(ActiveAdmin::Deprecation).to receive(:warn).twice
30
56
  register_stylesheet "active_admin.css"
31
57
  register_stylesheet "active_admin.css"
32
58
  expect(stylesheets.length).to eq 1
33
59
  end
34
60
 
35
61
  it "should register a javascript file" do
62
+ expect(ActiveAdmin::Deprecation).to receive(:warn).once
36
63
  register_javascript "active_admin.js"
37
64
  expect(javascripts).to eq ["active_admin.js"].to_set
38
65
  end
39
66
 
40
67
  it "should clear all existing javascripts" do
68
+ expect(ActiveAdmin::Deprecation).to receive(:warn).once
41
69
  register_javascript "active_admin.js"
42
70
  expect(javascripts).to eq ["active_admin.js"].to_set
43
71
  clear_javascripts!
@@ -45,6 +73,7 @@ RSpec.describe ActiveAdmin::AssetRegistration do
45
73
  end
46
74
 
47
75
  it "shouldn't register a javascript twice" do
76
+ expect(ActiveAdmin::Deprecation).to receive(:warn).twice
48
77
  register_javascript "active_admin.js"
49
78
  register_javascript "active_admin.js"
50
79
  expect(javascripts.length).to eq 1
@@ -13,7 +13,6 @@ RSpec.describe ActiveAdmin::Resource::BelongsTo do
13
13
  let(:post_config){ ActiveAdmin.register Post do belongs_to :user end }
14
14
  let(:belongs_to){ post_config.belongs_to_config }
15
15
 
16
-
17
16
  it "should have an owner" do
18
17
  expect(belongs_to.owner).to eq post_config
19
18
  end
@@ -57,7 +56,7 @@ RSpec.describe ActiveAdmin::Resource::BelongsTo do
57
56
 
58
57
  describe "controller" do
59
58
  let(:controller) { post_config.controller.new }
60
- let(:http_params) { {user_id: user.id} }
59
+ let(:http_params) { {user_id: user.id} }
61
60
  let(:user) { User.create! }
62
61
 
63
62
  before do
@@ -34,7 +34,7 @@ RSpec.shared_examples_for "ActiveAdmin::Resource" do
34
34
  describe "#menu_item_options" do
35
35
 
36
36
  it "initializes a new menu item with defaults" do
37
- expect(config.menu_item_options[:label].call).to eq(config.plural_resource_label)
37
+ expect(config.menu_item_options[:label].call).to eq(config.plural_resource_label)
38
38
  end
39
39
 
40
40
  it "initialize a new menu item with custom options" do
@@ -1,5 +1,3 @@
1
- # Encoding: UTF-8
2
-
3
1
  require 'rails_helper'
4
2
 
5
3
  RSpec.describe ActiveAdmin::CSVBuilder do
@@ -192,8 +190,8 @@ RSpec.describe ActiveAdmin::CSVBuilder do
192
190
 
193
191
  context "build csv using the supplied order" do
194
192
  before do
195
- @post1 = Post.create!(title: "Hello1", published_date: Date.today - 2.day )
196
- @post2 = Post.create!(title: "Hello2", published_date: Date.today - 1.day )
193
+ @post1 = Post.create!(title: "Hello1", published_date: Date.today - 2.day)
194
+ @post2 = Post.create!(title: "Hello2", published_date: Date.today - 1.day)
197
195
  end
198
196
  let(:dummy_controller) {
199
197
  class DummyController
@@ -23,7 +23,7 @@ RSpec.describe ActiveAdmin::Dependency do
23
23
  end
24
24
  it '=' do
25
25
  expect(k.foo? '= 1.2.3').to eq true
26
- expect(k.foo? '= 1' ).to eq false
26
+ expect(k.foo? '= 1').to eq false
27
27
  end
28
28
  it '>' do
29
29
  expect(k.foo? '> 1').to eq true
@@ -45,7 +45,7 @@ RSpec.describe ActiveAdmin::Dependency do
45
45
  end
46
46
  it '~>' do
47
47
  expect(k.foo? '~> 1.2.0').to eq true
48
- expect(k.foo? '~> 1.1' ).to eq true
48
+ expect(k.foo? '~> 1.1').to eq true
49
49
  expect(k.foo? '~> 1.2.4').to eq false
50
50
  end
51
51
  end
@@ -81,13 +81,13 @@ RSpec.describe ActiveAdmin::Dependency do
81
81
  # Note: more extensive tests for match? and match! are above.
82
82
 
83
83
  it 'match?' do
84
- expect(k['a-b'].match? ).to eq true
84
+ expect(k['a-b'].match?).to eq true
85
85
  expect(k['a-b'].match? '1.2.3').to eq true
86
- expect(k['b-c'].match? ).to eq false
86
+ expect(k['b-c'].match?).to eq false
87
87
  end
88
88
 
89
89
  it 'match!' do
90
- expect(k['a-b'].match! ).to eq nil
90
+ expect(k['a-b'].match!).to eq nil
91
91
  expect(k['a-b'].match! '1.2.3').to eq nil
92
92
 
93
93
  expect{ k['a-b'].match! '2.5' }.to raise_error ActiveAdmin::DependencyError,
@@ -103,8 +103,8 @@ RSpec.describe ActiveAdmin::Dependency do
103
103
 
104
104
  it '==' do
105
105
  expect(k['a-b'] == '1.2.3').to eq true
106
- expect(k['a-b'] == '1.2' ).to eq false
107
- expect(k['a-b'] == 1 ).to eq false
106
+ expect(k['a-b'] == '1.2').to eq false
107
+ expect(k['a-b'] == 1).to eq false
108
108
  end
109
109
  it '>' do
110
110
  expect(k['a-b'] > 1).to eq true
@@ -1,6 +1,5 @@
1
1
  require 'rails_helper'
2
2
 
3
-
4
3
  module MockModuleToInclude
5
4
  def self.included(dsl)
6
5
  end
@@ -24,7 +23,6 @@ RSpec.describe ActiveAdmin::DSL do
24
23
 
25
24
  end
26
25
 
27
-
28
26
  describe '#action_item' do
29
27
  before do
30
28
  @default_items_count = resource_config.action_items.size
@@ -0,0 +1,135 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe ActiveAdmin::Filters::ActiveFilter do
4
+
5
+ let(:namespace) do
6
+ ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
7
+ end
8
+
9
+ let(:resource) do
10
+ namespace.register(Post)
11
+ end
12
+
13
+ let(:user){ User.create! first_name: "John", last_name: "Doe" }
14
+ let(:category){ Category.create! name: "Category" }
15
+ let(:post){ Post.create! title: "Hello World", category: category, author: user }
16
+
17
+ let(:search) do
18
+ Post.ransack(title_equals: post.title)
19
+ end
20
+
21
+ let(:condition) do
22
+ search.conditions[0]
23
+ end
24
+
25
+ subject do
26
+ ActiveAdmin::Filters::ActiveFilter.new(resource, condition)
27
+ end
28
+
29
+ it 'should have valid values' do
30
+ expect(subject.values).to eq([post.title])
31
+ end
32
+
33
+ it 'should have valid label' do
34
+ expect(subject.label).to eq("Title equals")
35
+ end
36
+
37
+ it 'should pick predicate name translation' do
38
+ expect(subject.predicate_name).to eq(I18n.t("active_admin.filters.predicates.equals"))
39
+ end
40
+
41
+ context 'search by belongs_to association' do
42
+ let(:search) do
43
+ Post.ransack(custom_category_id_eq: category.id)
44
+ end
45
+
46
+ it 'should have valid values' do
47
+ expect(subject.values[0]).to be_a(Category)
48
+ end
49
+
50
+ it 'should have valid label' do
51
+ expect(subject.label).to eq("Category equals")
52
+ end
53
+
54
+ it 'should pick predicate name translation' do
55
+ expect(subject.predicate_name).to eq(Ransack::Translate.predicate('eq'))
56
+ end
57
+
58
+ end
59
+
60
+ context 'search by polymorphic association' do
61
+ let(:resource) do
62
+ namespace.register(ActiveAdmin::Comment)
63
+ end
64
+
65
+ let(:search) do
66
+ ActiveAdmin::Comment.ransack(resource_id_eq: post.id, resource_type_eq: post.class.to_s)
67
+ end
68
+
69
+ context 'id filter' do
70
+ let(:condition) do
71
+ search.conditions[0]
72
+ end
73
+ it 'should have valid values' do
74
+ expect(subject.values[0]).to eq(post.id)
75
+ end
76
+
77
+ it 'should have valid label' do
78
+ expect(subject.label).to eq("Resource equals")
79
+ end
80
+ end
81
+
82
+ context 'type filter' do
83
+ let(:condition) do
84
+ search.conditions[1]
85
+ end
86
+
87
+ it 'should have valid values' do
88
+ expect(subject.values[0]).to eq(post.class.to_s)
89
+ end
90
+
91
+ it 'should have valid label' do
92
+ expect(subject.label).to eq("Resource type equals")
93
+ end
94
+ end
95
+ end
96
+
97
+ context 'search by has many association' do
98
+ let(:resource) do
99
+ namespace.register(Category)
100
+ end
101
+
102
+ let(:search) do
103
+ Category.ransack(posts_id_eq: post.id)
104
+ end
105
+
106
+ it 'should have valid values' do
107
+ expect(subject.values[0]).to be_a(Post)
108
+ end
109
+
110
+ it 'should have valid label' do
111
+ expect(subject.label).to eq("Post equals")
112
+ end
113
+
114
+ context 'search by has many through association' do
115
+ let(:resource) do
116
+ namespace.register(User)
117
+ end
118
+
119
+ let(:search) do
120
+ User.ransack(posts_category_id_eq: category.id)
121
+ end
122
+
123
+ it 'should have valid values' do
124
+ expect(subject.values[0]).to be_a(Category)
125
+ end
126
+
127
+ it 'should have valid label' do
128
+ expect(subject.label).to eq("Category equals")
129
+ end
130
+
131
+ end
132
+
133
+ end
134
+
135
+ end
@@ -1,12 +1,22 @@
1
1
  require 'rails_helper'
2
2
 
3
3
  RSpec.describe ActiveAdmin::Filters::Active do
4
- subject { described_class.new(Post, params) }
4
+
5
+ let(:resource) do
6
+ namespace = ActiveAdmin::Namespace.new(ActiveAdmin::Application.new, :admin)
7
+ namespace.register(Post)
8
+ end
9
+
10
+ subject { described_class.new(resource, search) }
5
11
 
6
12
  let(:params) do
7
13
  ::ActionController::Parameters.new(q: {author_id_eq: 1})
8
14
  end
9
15
 
16
+ let(:search) do
17
+ Post.ransack(params[:q])
18
+ end
19
+
10
20
  it 'should have filters' do
11
21
  expect(subject.filters.size).to eq(1)
12
22
  end
@@ -59,6 +59,14 @@ RSpec.describe ActiveAdmin::Filters::ViewHelper do
59
59
  expect(body).to have_selector("label", text: "Title from proc")
60
60
  end
61
61
  end
62
+
63
+ describe "input html as proc" do
64
+ let(:body) { Capybara.string(filter :title, as: :select, input_html: proc{ {'data-ajax-url': '/'} }) }
65
+
66
+ it "should render proper label" do
67
+ expect(body).to have_selector('select[data-ajax-url="/"]')
68
+ end
69
+ end
62
70
  end
63
71
 
64
72
  describe "string attribute" do
@@ -165,9 +173,6 @@ RSpec.describe ActiveAdmin::Filters::ViewHelper do
165
173
  it "should generate a date greater than" do
166
174
  expect(body).to have_selector("input.datepicker[name='q[published_date_gteq]']")
167
175
  end
168
- it "should generate a seperator" do
169
- expect(body).to have_selector("span.seperator")
170
- end
171
176
  it "should generate a date less than" do
172
177
  expect(body).to have_selector("input.datepicker[name='q[published_date_lteq]']")
173
178
  end
@@ -179,9 +184,6 @@ RSpec.describe ActiveAdmin::Filters::ViewHelper do
179
184
  it "should generate a date greater than" do
180
185
  expect(body).to have_selector("input.datepicker[name='q[created_at_gteq_datetime]']")
181
186
  end
182
- it "should generate a seperator" do
183
- expect(body).to have_selector("span.seperator")
184
- end
185
187
  it "should generate a date less than" do
186
188
  expect(body).to have_selector("input.datepicker[name='q[created_at_lteq_datetime]']")
187
189
  end
@@ -399,7 +401,7 @@ RSpec.describe ActiveAdmin::Filters::ViewHelper do
399
401
  context "with #{verb.inspect} proc" do
400
402
  it "#{should} be displayed if true" do
401
403
  body = Capybara.string(filter :body, verb => proc{ true })
402
- expect(body).send if_true, have_selector("input[name='q[body_contains]']")
404
+ expect(body).send if_true, have_selector("input[name='q[body_contains]']")
403
405
  end
404
406
  it "#{should} be displayed if false" do
405
407
  body = Capybara.string(filter :body, verb => proc{ false })
@@ -101,9 +101,9 @@ RSpec.describe ActiveAdmin::FormBuilder do
101
101
  end
102
102
  end
103
103
 
104
- it "should generate a text input" do
105
- expect(body).to have_selector("input[type=text][name='post[title]']")
106
- end
104
+ it "should generate a text input" do
105
+ expect(body).to have_selector("input[type=text][name='post[title]']")
106
+ end
107
107
  it "should generate a textarea" do
108
108
  expect(body).to have_selector("textarea[name='post[body]']")
109
109
  end
@@ -637,7 +637,7 @@ RSpec.describe ActiveAdmin::FormBuilder do
637
637
  end
638
638
 
639
639
  it "should wrap the destroy field in an li with class 'has_many_delete'" do
640
- expect(body).to have_selector(".has_many_container > fieldset > ol > li.has_many_delete > input", count: 1)
640
+ expect(body).to have_selector(".has_many_container > fieldset > ol > li.has_many_delete > input", count: 1, visible: false)
641
641
  end
642
642
  end
643
643
 
@@ -647,7 +647,7 @@ RSpec.describe ActiveAdmin::FormBuilder do
647
647
  end
648
648
 
649
649
  it "should not have a boolean field for _destroy" do
650
- expect(body).not_to have_selector("input[name='category[posts_attributes][#{child_num}][_destroy]']")
650
+ expect(body).not_to have_selector("input[name='category[posts_attributes][#{child_num}][_destroy]']", visible: :all)
651
651
  end
652
652
 
653
653
  it "should not have a check box with 'Remove' as its label" do
@@ -943,15 +943,15 @@ RSpec.describe ActiveAdmin::FormBuilder do
943
943
  "[:title].each{ |r| f.input r }" => "post_title",
944
944
  "[:title].map { |r| f.input r }" => "post_title",
945
945
  }.each do |source, selector|
946
- it "should properly buffer `#{source}`" do
947
- body = build_form do |f|
948
- f.inputs do
949
- eval source
950
- eval source
951
- end
952
- end
953
- expect(body).to have_selector("[id=#{selector}]", count: 2)
954
- end
946
+ it "should properly buffer `#{source}`" do
947
+ body = build_form do |f|
948
+ f.inputs do
949
+ eval source
950
+ eval source
951
+ end
952
+ end
953
+ expect(body).to have_selector("[id=#{selector}]", count: 2, visible: :all)
954
+ end
955
955
  end
956
956
 
957
957
  describe "datepicker input" do