saulolso-activeadmin 0.2.2

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 (255) hide show
  1. data/.document +5 -0
  2. data/.gitignore +32 -0
  3. data/.travis.yml +4 -0
  4. data/CHANGELOG.rdoc +76 -0
  5. data/Gemfile +26 -0
  6. data/LICENSE +25 -0
  7. data/README.rdoc +450 -0
  8. data/Rakefile +100 -0
  9. data/activeadmin.gemspec +28 -0
  10. data/cucumber.yml +2 -0
  11. data/features/comments/commenting.feature +99 -0
  12. data/features/comments/viewing_index.feature +19 -0
  13. data/features/dashboard.feature +26 -0
  14. data/features/edit_page.feature +77 -0
  15. data/features/first_boot.feature +16 -0
  16. data/features/global_navigation.feature +30 -0
  17. data/features/index/format_as_csv.feature +45 -0
  18. data/features/index/formats.feature +10 -0
  19. data/features/index/index_as_block.feature +15 -0
  20. data/features/index/index_as_blog.feature +50 -0
  21. data/features/index/index_as_grid.feature +45 -0
  22. data/features/index/index_as_table.feature +79 -0
  23. data/features/index/index_scopes.feature +52 -0
  24. data/features/index/pagination.feature +23 -0
  25. data/features/menu.feature +26 -0
  26. data/features/new_page.feature +75 -0
  27. data/features/registering_assets.feature +35 -0
  28. data/features/registering_resources.feature +33 -0
  29. data/features/show/default_content.feature +43 -0
  30. data/features/show/page_title.feature +33 -0
  31. data/features/sidebar_sections.feature +127 -0
  32. data/features/specifying_actions.feature +60 -0
  33. data/features/step_definitions/action_item_steps.rb +7 -0
  34. data/features/step_definitions/additional_web_steps.rb +67 -0
  35. data/features/step_definitions/asset_steps.rb +7 -0
  36. data/features/step_definitions/attribute_steps.rb +15 -0
  37. data/features/step_definitions/comment_steps.rb +8 -0
  38. data/features/step_definitions/configuration_steps.rb +31 -0
  39. data/features/step_definitions/dashboard_steps.rb +11 -0
  40. data/features/step_definitions/factory_steps.rb +28 -0
  41. data/features/step_definitions/flash_steps.rb +3 -0
  42. data/features/step_definitions/format_steps.rb +34 -0
  43. data/features/step_definitions/index_scope_steps.rb +20 -0
  44. data/features/step_definitions/menu_steps.rb +7 -0
  45. data/features/step_definitions/pagination_steps.rb +8 -0
  46. data/features/step_definitions/sidebar_steps.rb +11 -0
  47. data/features/step_definitions/tab_steps.rb +3 -0
  48. data/features/step_definitions/user_steps.rb +20 -0
  49. data/features/step_definitions/web_steps.rb +219 -0
  50. data/features/sti_resource.feature +49 -0
  51. data/features/support/env.rb +92 -0
  52. data/features/support/paths.rb +48 -0
  53. data/features/users/logging_in.feature +34 -0
  54. data/features/users/logging_out.feature +13 -0
  55. data/lib/active_admin/abstract_view_factory.rb +95 -0
  56. data/lib/active_admin/action_items.rb +37 -0
  57. data/lib/active_admin/application.rb +204 -0
  58. data/lib/active_admin/arbre/attributes.rb +20 -0
  59. data/lib/active_admin/arbre/class_list.rb +28 -0
  60. data/lib/active_admin/arbre/collection.rb +27 -0
  61. data/lib/active_admin/arbre/context.rb +8 -0
  62. data/lib/active_admin/arbre/core_extensions.rb +5 -0
  63. data/lib/active_admin/arbre/document.rb +42 -0
  64. data/lib/active_admin/arbre/element.rb +151 -0
  65. data/lib/active_admin/arbre/html.rb +84 -0
  66. data/lib/active_admin/arbre/html5_elements.rb +47 -0
  67. data/lib/active_admin/arbre/tag.rb +137 -0
  68. data/lib/active_admin/arbre/text_node.rb +35 -0
  69. data/lib/active_admin/arbre.rb +23 -0
  70. data/lib/active_admin/asset_registration.rb +34 -0
  71. data/lib/active_admin/callbacks.rb +87 -0
  72. data/lib/active_admin/comments/comment.rb +21 -0
  73. data/lib/active_admin/comments/configuration.rb +18 -0
  74. data/lib/active_admin/comments/namespace_helper.rb +14 -0
  75. data/lib/active_admin/comments/resource_helper.rb +17 -0
  76. data/lib/active_admin/comments/show_page_helper.rb +23 -0
  77. data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
  78. data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
  79. data/lib/active_admin/comments/views.rb +3 -0
  80. data/lib/active_admin/comments.rb +88 -0
  81. data/lib/active_admin/component.rb +22 -0
  82. data/lib/active_admin/controller_action.rb +12 -0
  83. data/lib/active_admin/csv_builder.rb +45 -0
  84. data/lib/active_admin/dashboards/dashboard_controller.rb +47 -0
  85. data/lib/active_admin/dashboards/section.rb +34 -0
  86. data/lib/active_admin/dashboards.rb +48 -0
  87. data/lib/active_admin/devise.rb +43 -0
  88. data/lib/active_admin/dsl.rb +215 -0
  89. data/lib/active_admin/event.rb +31 -0
  90. data/lib/active_admin/form_builder.rb +109 -0
  91. data/lib/active_admin/helpers/optional_display.rb +34 -0
  92. data/lib/active_admin/iconic/icons.rb +142 -0
  93. data/lib/active_admin/iconic.rb +51 -0
  94. data/lib/active_admin/locales/da.yml +26 -0
  95. data/lib/active_admin/locales/en.yml +34 -0
  96. data/lib/active_admin/locales/es.yml +34 -0
  97. data/lib/active_admin/locales/pt.yml +34 -0
  98. data/lib/active_admin/menu.rb +42 -0
  99. data/lib/active_admin/menu_item.rb +73 -0
  100. data/lib/active_admin/namespace.rb +198 -0
  101. data/lib/active_admin/page_config.rb +15 -0
  102. data/lib/active_admin/renderer.rb +87 -0
  103. data/lib/active_admin/resource/belongs_to.rb +31 -0
  104. data/lib/active_admin/resource.rb +229 -0
  105. data/lib/active_admin/resource_controller/action_builder.rb +21 -0
  106. data/lib/active_admin/resource_controller/actions.rb +79 -0
  107. data/lib/active_admin/resource_controller/callbacks.rb +47 -0
  108. data/lib/active_admin/resource_controller/collection.rb +144 -0
  109. data/lib/active_admin/resource_controller/filters.rb +58 -0
  110. data/lib/active_admin/resource_controller/form.rb +42 -0
  111. data/lib/active_admin/resource_controller/menu.rb +29 -0
  112. data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
  113. data/lib/active_admin/resource_controller/scoping.rb +36 -0
  114. data/lib/active_admin/resource_controller/sidebars.rb +38 -0
  115. data/lib/active_admin/resource_controller.rb +119 -0
  116. data/lib/active_admin/router.rb +85 -0
  117. data/lib/active_admin/scope.rb +17 -0
  118. data/lib/active_admin/sidebar.rb +43 -0
  119. data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
  120. data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
  121. data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
  122. data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
  123. data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
  124. data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
  125. data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
  126. data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
  127. data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
  128. data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
  129. data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
  130. data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
  131. data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
  132. data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
  133. data/lib/active_admin/stylesheets/active_admin.scss +429 -0
  134. data/lib/active_admin/version.rb +3 -0
  135. data/lib/active_admin/view_factory.rb +21 -0
  136. data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
  137. data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
  138. data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -0
  139. data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
  140. data/lib/active_admin/view_helpers/display_helper.rb +38 -0
  141. data/lib/active_admin/view_helpers/filter_form_helper.rb +185 -0
  142. data/lib/active_admin/view_helpers/form_helper.rb +12 -0
  143. data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
  144. data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
  145. data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
  146. data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
  147. data/lib/active_admin/view_helpers/table_helper.rb +12 -0
  148. data/lib/active_admin/view_helpers/title_helper.rb +11 -0
  149. data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
  150. data/lib/active_admin/view_helpers.rb +23 -0
  151. data/lib/active_admin/views/action_items.rb +17 -0
  152. data/lib/active_admin/views/components/attributes_table.rb +66 -0
  153. data/lib/active_admin/views/components/columns.rb +47 -0
  154. data/lib/active_admin/views/components/paginated_collection.rb +92 -0
  155. data/lib/active_admin/views/components/panel.rb +26 -0
  156. data/lib/active_admin/views/components/scopes.rb +70 -0
  157. data/lib/active_admin/views/components/sidebar_section.rb +30 -0
  158. data/lib/active_admin/views/components/status_tag.rb +55 -0
  159. data/lib/active_admin/views/components/table_for.rb +193 -0
  160. data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
  161. data/lib/active_admin/views/header_renderer.rb +37 -0
  162. data/lib/active_admin/views/index_as_block.rb +24 -0
  163. data/lib/active_admin/views/index_as_blog.rb +89 -0
  164. data/lib/active_admin/views/index_as_grid.rb +49 -0
  165. data/lib/active_admin/views/index_as_table.rb +75 -0
  166. data/lib/active_admin/views/pages/base.rb +144 -0
  167. data/lib/active_admin/views/pages/dashboard.rb +59 -0
  168. data/lib/active_admin/views/pages/edit.rb +27 -0
  169. data/lib/active_admin/views/pages/index.rb +66 -0
  170. data/lib/active_admin/views/pages/new.rb +27 -0
  171. data/lib/active_admin/views/pages/show.rb +56 -0
  172. data/lib/active_admin/views/tabs_renderer.rb +58 -0
  173. data/lib/active_admin/views/templates/active_admin/dashboard/index.html.arb +1 -0
  174. data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
  175. data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
  176. data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
  177. data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
  178. data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
  179. data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
  180. data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
  181. data/lib/active_admin/views/templates/active_admin/resource/edit.html.arb +1 -0
  182. data/lib/active_admin/views/templates/active_admin/resource/index.csv.erb +20 -0
  183. data/lib/active_admin/views/templates/active_admin/resource/index.html.arb +1 -0
  184. data/lib/active_admin/views/templates/active_admin/resource/new.html.arb +1 -0
  185. data/lib/active_admin/views/templates/active_admin/resource/show.html.arb +1 -0
  186. data/lib/active_admin/views/templates/layouts/active_admin.html.erb +39 -0
  187. data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
  188. data/lib/active_admin/views.rb +8 -0
  189. data/lib/active_admin.rb +71 -0
  190. data/lib/activeadmin.rb +1 -0
  191. data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
  192. data/lib/generators/active_admin/install/install_generator.rb +46 -0
  193. data/lib/generators/active_admin/install/templates/active_admin.js +51 -0
  194. data/lib/generators/active_admin/install/templates/active_admin.rb.erb +78 -0
  195. data/lib/generators/active_admin/install/templates/active_admin_vendor.js +382 -0
  196. data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
  197. data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
  198. data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
  199. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
  200. data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
  201. data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
  202. data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
  203. data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
  204. data/lib/generators/active_admin/resource/resource_generator.rb +16 -0
  205. data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
  206. data/spec/integration/belongs_to_spec.rb +42 -0
  207. data/spec/spec_helper.rb +156 -0
  208. data/spec/support/integration_example_group.rb +33 -0
  209. data/spec/support/rails_template.rb +32 -0
  210. data/spec/support/rails_template_with_data.rb +32 -0
  211. data/spec/support/templates/cucumber.rb +24 -0
  212. data/spec/unit/abstract_view_factory_spec.rb +79 -0
  213. data/spec/unit/action_builder_spec.rb +88 -0
  214. data/spec/unit/action_items_spec.rb +27 -0
  215. data/spec/unit/application_spec.rb +67 -0
  216. data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
  217. data/spec/unit/arbre/html/element_spec.rb +224 -0
  218. data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
  219. data/spec/unit/arbre/html/tag_spec.rb +63 -0
  220. data/spec/unit/arbre/html_spec.rb +210 -0
  221. data/spec/unit/asset_registration_spec.rb +37 -0
  222. data/spec/unit/auto_link_spec.rb +39 -0
  223. data/spec/unit/belongs_to_spec.rb +45 -0
  224. data/spec/unit/breadcrumbs_spec.rb +110 -0
  225. data/spec/unit/comments_spec.rb +57 -0
  226. data/spec/unit/component_spec.rb +18 -0
  227. data/spec/unit/components/attributes_table_spec.rb +100 -0
  228. data/spec/unit/components/columns_spec.rb +75 -0
  229. data/spec/unit/components/panel_spec.rb +31 -0
  230. data/spec/unit/components/sidebar_section_spec.rb +37 -0
  231. data/spec/unit/components/status_tag_spec.rb +81 -0
  232. data/spec/unit/components/table_for_spec.rb +130 -0
  233. data/spec/unit/controller_filters_spec.rb +27 -0
  234. data/spec/unit/csv_builder_spec.rb +83 -0
  235. data/spec/unit/dashboard_controller_spec.rb +26 -0
  236. data/spec/unit/dashboard_section_spec.rb +56 -0
  237. data/spec/unit/dashboards_spec.rb +59 -0
  238. data/spec/unit/display_name_spec.rb +29 -0
  239. data/spec/unit/event_spec.rb +41 -0
  240. data/spec/unit/filter_form_builder_spec.rb +179 -0
  241. data/spec/unit/form_builder_spec.rb +238 -0
  242. data/spec/unit/menu_item_spec.rb +143 -0
  243. data/spec/unit/menu_spec.rb +53 -0
  244. data/spec/unit/namespace_spec.rb +203 -0
  245. data/spec/unit/pretty_format_spec.rb +35 -0
  246. data/spec/unit/registration_spec.rb +76 -0
  247. data/spec/unit/renderer_spec.rb +108 -0
  248. data/spec/unit/resource_controller/collection_spec.rb +34 -0
  249. data/spec/unit/resource_controller_spec.rb +147 -0
  250. data/spec/unit/resource_spec.rb +290 -0
  251. data/spec/unit/routing_spec.rb +88 -0
  252. data/spec/unit/scope_spec.rb +31 -0
  253. data/spec/unit/tabs_renderer_spec.rb +85 -0
  254. data/spec/unit/view_factory_spec.rb +16 -0
  255. metadata +482 -0
data/Rakefile ADDED
@@ -0,0 +1,100 @@
1
+ require "bundler"
2
+ Bundler.setup
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ require 'rake'
6
+
7
+ def cmd(command)
8
+ puts command
9
+ system command
10
+ end
11
+
12
+ desc "Install all supported versions of rails"
13
+ task :install_all_rails do
14
+ (0..7).to_a.each do |v|
15
+ system "rm Gemfile.lock"
16
+ puts "Installing for RAILS=3.0.#{v}"
17
+ cmd "RAILS=3.0.#{v} bundle install"
18
+ end
19
+ end
20
+
21
+ desc "Creates a test rails app for the specs to run against"
22
+ task :setup do
23
+ require 'rails/version'
24
+ system("mkdir spec/rails") unless File.exists?("spec/rails")
25
+ system "bundle exec rails new spec/rails/rails-#{Rails::VERSION::STRING} -m spec/support/rails_template.rb"
26
+ end
27
+
28
+ namespace :local do
29
+ desc "Creates a local rails app to play with in development"
30
+ task :setup do
31
+ unless File.exists? "test-rails-app"
32
+ system "bundle exec rails new test-rails-app -m spec/support/rails_template_with_data.rb"
33
+ end
34
+ end
35
+
36
+ desc "Start a local rails app to play"
37
+ task :server => :setup do
38
+ exec "cd test-rails-app && GEMFILE=../Gemfile bundle exec rails s"
39
+ end
40
+
41
+ desc "Load the local rails console"
42
+ task :console => :setup do
43
+ exec "cd test-rails-app && GEMFILE=../Gemfile bundle exec rails c"
44
+ end
45
+ end
46
+
47
+ require "rspec/core/rake_task"
48
+ RSpec::Core::RakeTask.new(:spec)
49
+
50
+ RSpec::Core::RakeTask.new(:rcov) do |spec|
51
+ spec.rcov = true
52
+ end
53
+
54
+ # Run the specs & cukes
55
+ task :default do
56
+ # Force spec files to be loaded and ran in alphabetical order.
57
+ specs_unit = Dir['spec/unit/**/*_spec.rb'].sort.join(' ')
58
+ specs_integration = Dir['spec/integration/**/*_spec.rb'].sort.join(' ')
59
+ exit [
60
+ cmd("export RAILS=3.0.5 && export RAILS_ENV=test && bundle exec rspec #{specs_unit}"),
61
+ cmd("export RAILS=3.0.5 && export RAILS_ENV=test && bundle exec rspec #{specs_integration}"),
62
+ cmd("export RAILS=3.0.5 && export RAILS_ENV=cucumber && bundle exec cucumber features"),
63
+ ].uniq == [true]
64
+ end
65
+
66
+ namespace :spec do
67
+ desc "Run specs for all versions of rails"
68
+ task :all do
69
+ (0..6).to_a.each do |v|
70
+ puts "Running for Rails 3.0.#{v}"
71
+ cmd "rm Gemfile.lock" if File.exists?("Gemfile.lock")
72
+ cmd "/usr/bin/env RAILS=3.0.#{v} bundle install"
73
+ cmd "/usr/bin/env RAILS=3.0.#{v} rake spec"
74
+ end
75
+ end
76
+ end
77
+
78
+ require 'cucumber/rake/task'
79
+
80
+ namespace :cucumber do
81
+ Cucumber::Rake::Task.new(:all) do |t|
82
+ t.profile = 'default'
83
+ end
84
+
85
+ Cucumber::Rake::Task.new(:wip) do |t|
86
+ t.profile = 'wip'
87
+ end
88
+ end
89
+
90
+ task :cucumber => "cucumber:all"
91
+
92
+ require 'rake/rdoctask'
93
+ Rake::RDocTask.new do |rdoc|
94
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
95
+
96
+ rdoc.rdoc_dir = 'rdoc'
97
+ rdoc.title = "active_admin #{version}"
98
+ rdoc.rdoc_files.include('README*')
99
+ rdoc.rdoc_files.include('lib/**/*.rb')
100
+ end
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "active_admin/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = %q{saulolso-activeadmin}
7
+ s.version = ActiveAdmin::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.homepage = %q{http://activeadmin.info}
10
+ s.authors = ["Greg Bell"]
11
+ s.email = ["gregdbell@gmail.com"]
12
+ s.description = %q{The administration framework for Ruby on Rails.}
13
+ s.summary = %q{The administration framework for Ruby on Rails.}
14
+
15
+ s.files = `git ls-files`.split("\n").sort
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_dependency("rails", ">= 3.0.0")
21
+ s.add_dependency("meta_search", ">= 0.9.2")
22
+ s.add_dependency("devise", ">= 1.1.2")
23
+ s.add_dependency("formtastic", ">= 1.1.0")
24
+ s.add_dependency("inherited_resources", ">= 0")
25
+ s.add_dependency("kaminari", ">= 0.12.4")
26
+ s.add_dependency("sass", ">= 3.1.0")
27
+ s.add_dependency("fastercsv", ">= 0")
28
+ end
data/cucumber.yml ADDED
@@ -0,0 +1,2 @@
1
+ default: --format 'progress' --require features/support/env.rb --require features/step_definitions features
2
+ wip: --format 'progress' --require features/support/env.rb --require features/step_definitions features --tags @wip:3 --wip features
@@ -0,0 +1,99 @@
1
+ Feature: Commenting
2
+
3
+ As a user
4
+ In order to document changes and have a discussion
5
+ I want to store and view comments on a resource
6
+
7
+ Background:
8
+ Given a post with the title "Hello World" written by "Jane Doe" exists
9
+
10
+ Scenario: View a resource with no comments
11
+ Given a show configuration of:
12
+ """
13
+ ActiveAdmin.register Post
14
+ """
15
+ Then I should see "Comments (0)"
16
+ And I should see "No comments yet."
17
+
18
+ Scenario: Create a new comment
19
+ Given a show configuration of:
20
+ """
21
+ ActiveAdmin.register Post
22
+ """
23
+ When I add a comment "Hello from Comment"
24
+ Then I should see a flash with "Comment was successfully created"
25
+ And I should be in the resource section for posts
26
+ And I should see "Comments (1)"
27
+ And I should see "Hello from Comment"
28
+ And I should see a comment by "admin@example.com"
29
+
30
+ Scenario: View resource with comments turned off
31
+ Given a show configuration of:
32
+ """
33
+ ActiveAdmin.register Post do
34
+ config.comments = false
35
+ end
36
+ """
37
+ Then I should not see "Comments"
38
+
39
+ Scenario: View a resource in a namespace that doesn't have comments
40
+ Given a configuration of:
41
+ """
42
+ ActiveAdmin.register Post, :namespace => :new_namespace
43
+ """
44
+ Given I am logged in
45
+ When I am on the index page for posts in the new_namespace namespace
46
+ And I follow "View"
47
+ Then I should not see "Comments"
48
+
49
+ Scenario: Creating a comment in one namespace does not create it in another
50
+ Given a show configuration of:
51
+ """
52
+ ActiveAdmin.application.allow_comments_in << :public
53
+ ActiveAdmin.register Post
54
+ ActiveAdmin.register Post, :namespace => :public
55
+ """
56
+ When I add a comment "Hello world in admin namespace"
57
+ Then I should see "Hello world in admin namespace"
58
+ When I am on the index page for posts in the public namespace
59
+ And I follow "View"
60
+ Then I should not see "Hello world in admin namespace"
61
+ And I should see "Comments (0)"
62
+
63
+ When I add a comment "Hello world in public namespace"
64
+ Then I should see "Hello world in public namespace"
65
+ When I am on the index page for posts in the admin namespace
66
+ And I follow "View"
67
+ Then I should not see "Hello world in public namespace"
68
+ And I should see "Comments (1)"
69
+
70
+ Scenario: Creating a comment on an aliased resource
71
+ Given a configuration of:
72
+ """
73
+ ActiveAdmin.register Post, :as => "Article"
74
+ """
75
+ Given I am logged in
76
+ When I am on the index page for articles
77
+ And I follow "View"
78
+ When I add a comment "Hello from Comment"
79
+ Then I should see a flash with "Comment was successfully created"
80
+ And I should be in the resource section for articles
81
+
82
+ Scenario: Create an empty comment
83
+ Given a show configuration of:
84
+ """
85
+ ActiveAdmin.register Post
86
+ """
87
+ When I add a comment ""
88
+ Then I should see a flash with "Comment wasn't saved, text was empty."
89
+ And I should see "Comments (0)"
90
+
91
+ Scenario: Viewing all commments for a namespace
92
+ Given a show configuration of:
93
+ """
94
+ ActiveAdmin.register Post
95
+ """
96
+ When I add a comment "Hello from Comment"
97
+ When I am on the index page for comments
98
+ Then I should see a table header with "Body"
99
+ And I should see "Hello from Comment"
@@ -0,0 +1,19 @@
1
+ Feature: Viewing Index of Comments
2
+
3
+ Background:
4
+ Given a post with the title "Hello World" written by "Jane Doe" exists
5
+ Given a show configuration of:
6
+ """
7
+ ActiveAdmin.register Post
8
+ """
9
+
10
+ Scenario: Viewing all commments for a namespace
11
+ When I add a comment "Hello from Comment"
12
+ When I am on the index page for comments
13
+ Then I should see a table header with "Body"
14
+ And I should see a table header with "Resource"
15
+ And I should see a table header with "Author"
16
+ And I should see "Hello from Comment"
17
+ And I should see a link to "Hello World"
18
+ And I should see "admin@example.com"
19
+ And I should not see an action item button "New Comment"
@@ -0,0 +1,26 @@
1
+ Feature: Dashboard
2
+
3
+ Background:
4
+ Given I am logged in
5
+
6
+
7
+ Scenario: With no configuration
8
+ Given a configuration of:
9
+ """
10
+ """
11
+ When I go to the dashboard
12
+ Then I should see the default welcome message
13
+
14
+ Scenario: Displaying a dashboard widget
15
+ Given a configuration of:
16
+ """
17
+ ActiveAdmin::Dashboards.build do
18
+ section 'Hello World' do
19
+ para "Hello world from the content"
20
+ end
21
+ end
22
+ """
23
+ When I go to the dashboard
24
+ Then I should not see the default welcome message
25
+ And I should see a dashboard widget "Hello World"
26
+ And I should see "Hello world from the content"
@@ -0,0 +1,77 @@
1
+ Feature: Edit Page
2
+
3
+ Customizing the form to edit resources
4
+
5
+ Background:
6
+ Given a category named "Music" exists
7
+ And a user named "John Doe" exists
8
+ And a post with the title "Hello World" written by "John Doe" exists
9
+ And I am logged in
10
+ Given a configuration of:
11
+ """
12
+ ActiveAdmin.register Post
13
+ """
14
+ When I am on the index page for posts
15
+
16
+ Scenario: Default form with no config
17
+ Given I follow "Edit"
18
+ Then the "Title" field should contain "Hello World"
19
+ And the "Body" field should contain ""
20
+ And the "Category" field should contain ""
21
+ And the "Author" field should contain "John Doe"
22
+ When I fill in "Title" with "Hello World from update"
23
+ When I press "Update Post"
24
+ Then I should see "Post was successfully updated."
25
+ And I should see the attribute "Title" with "Hello World from update"
26
+ And I should see the attribute "Author" with "John Doe"
27
+
28
+ Scenario: Generating a custom form
29
+ Given a configuration of:
30
+ """
31
+ ActiveAdmin.register Post do
32
+ form do |f|
33
+ f.inputs "Your Post" do
34
+ f.input :title
35
+ f.input :body
36
+ end
37
+ f.inputs "Publishing" do
38
+ f.input :published_at
39
+ end
40
+ f.buttons
41
+ end
42
+ end
43
+ """
44
+ Given I follow "Edit"
45
+ Then I should see a fieldset titled "Your Post"
46
+ And I should see a fieldset titled "Publishing"
47
+ And the "Title" field should contain "Hello World"
48
+ And the "Body" field should contain ""
49
+ When I fill in "Title" with "Hello World from update"
50
+ When I press "Update Post"
51
+ Then I should see "Post was successfully updated."
52
+ And I should see the attribute "Title" with "Hello World from update"
53
+ And I should see the attribute "Author" with "John Doe"
54
+
55
+ Scenario: Generating a form from a partial
56
+ Given "app/views/admin/posts/_form.html.erb" contains:
57
+ """
58
+ <% url = @post.new_record? ? admin_posts_path : admin_post_path(@post) %>
59
+ <%= active_admin_form_for @post, :url => url do |f|
60
+ f.inputs :title, :body
61
+ f.buttons
62
+ end %>
63
+ """
64
+ Given a configuration of:
65
+ """
66
+ ActiveAdmin.register Post do
67
+ form :partial => "form"
68
+ end
69
+ """
70
+ Given I follow "Edit"
71
+ Then the "Title" field should contain "Hello World"
72
+ And the "Body" field should contain ""
73
+ When I fill in "Title" with "Hello World from update"
74
+ When I press "Update Post"
75
+ Then I should see "Post was successfully updated."
76
+ And I should see the attribute "Title" with "Hello World from update"
77
+ And I should see the attribute "Author" with "John Doe"
@@ -0,0 +1,16 @@
1
+ Feature: First Boot
2
+
3
+ As a developer
4
+ In order to ensure I have a great first experience
5
+ I want Active Admin to just work on install
6
+
7
+ Scenario: Visiting /admin and logging in with no configurations
8
+ Given a configuration of:
9
+ """
10
+ """
11
+ And an admin user "admin@example.com" exists
12
+ When I go to the dashboard
13
+ When I fill in "Email" with "admin@example.com"
14
+ And I fill in "Password" with "password"
15
+ And I press "Login"
16
+ Then I should be on the the dashboard
@@ -0,0 +1,30 @@
1
+ Feature: Global Navigation
2
+
3
+
4
+ Background:
5
+ Given a configuration of:
6
+ """
7
+ ActiveAdmin.register Post
8
+ """
9
+ Given I am logged in
10
+ And 10 posts exist
11
+
12
+ Scenario: Viewing the current section in the global navigation
13
+ Given I am on the index page for posts
14
+ Then the "Posts" tab should be selected
15
+
16
+ Scenario: Viewing the current section in the global navigation when on new page
17
+ Given I am on the index page for posts
18
+ And I follow "New Post"
19
+ Then the "Posts" tab should be selected
20
+
21
+ Scenario: Viewing the current section in the global navigation when on show page
22
+ Given I am on the index page for posts
23
+ And I follow "View"
24
+ Then the "Posts" tab should be selected
25
+
26
+ Scenario: Viewing the current section in the global navigation when on edit page
27
+ Given I am on the index page for posts
28
+ And I follow "View"
29
+ And I follow "Edit Post"
30
+ Then the "Posts" tab should be selected
@@ -0,0 +1,45 @@
1
+ Feature: Format as CSV
2
+
3
+ Background:
4
+ Given I am logged in
5
+
6
+ Scenario: Default
7
+ Given a configuration of:
8
+ """
9
+ ActiveAdmin.register Post
10
+ """
11
+ And a post with the title "Hello World" exists
12
+ When I am on the index page for posts
13
+ And I follow "CSV"
14
+ And I should download a CSV file for "posts" containing:
15
+ | Id | Title | Body | Published At | Created At | Updated At |
16
+ | \d+ | Hello World | | | (.*) | (.*) |
17
+
18
+ Scenario: Default with alias
19
+ Given a configuration of:
20
+ """
21
+ ActiveAdmin.register Post, :as => "MyArticle"
22
+ """
23
+ When I am on the index page for my_articles
24
+ And I follow "CSV"
25
+ And I should download a CSV file for "my-articles" containing:
26
+ | Id | Title | Body | Published At | Created At | Updated At |
27
+
28
+ Scenario: With CSV format customization
29
+ Given a configuration of:
30
+ """
31
+ ActiveAdmin.register Post do
32
+ csv do
33
+ column :title
34
+ column("Last update") { |post| post.updated_at }
35
+ column("Copyright") { "Greg Bell" }
36
+ end
37
+ end
38
+ """
39
+ And a post with the title "Hello, World" exists
40
+ When I am on the index page for posts
41
+ And I follow "CSV"
42
+ And I should download a CSV file for "posts" containing:
43
+ | Title | Last update | Copyright |
44
+ | Hello, World | (.*) | Greg Bell |
45
+
@@ -0,0 +1,10 @@
1
+ Feature: Index Formats
2
+
3
+ Scenario: View index with default formats
4
+ Given an index configuration of:
5
+ """
6
+ ActiveAdmin.register Post
7
+ """
8
+ Then I should see a link to download "CSV"
9
+ And I should see a link to download "XML"
10
+ And I should see a link to download "JSON"
@@ -0,0 +1,15 @@
1
+ Feature: Index as Block
2
+
3
+ Viewing the resource as a block which is renderered by the user
4
+
5
+ Scenario: Viewing the index as a block
6
+ Given a post with the title "Hello World from Block" exists
7
+ And an index configuration of:
8
+ """
9
+ ActiveAdmin.register Post do
10
+ index :as => :block do |post|
11
+ span(link_to(post.title, admin_post_path(post)))
12
+ end
13
+ end
14
+ """
15
+ Then I should see "Hello World from Block" within "a"
@@ -0,0 +1,50 @@
1
+ Feature: Index as Blog
2
+
3
+ Viewing resources as a blog on the index page
4
+
5
+ Scenario: Viewing the blog with a resource
6
+ Given a post with the title "Hello World" exists
7
+ And an index configuration of:
8
+ """
9
+ ActiveAdmin.register Post do
10
+ index :as => :blog
11
+ end
12
+ """
13
+ And I am logged in
14
+ When I am on the index page for posts
15
+ Then I should see "Hello World" within "h3"
16
+ And I should see a link to "Hello World"
17
+
18
+ Scenario: Viewing the blog with a resource as a simple configuration
19
+ Given a post with the title "Hello World" and body "My great post body" exists
20
+ And an index configuration of:
21
+ """
22
+ ActiveAdmin.register Post do
23
+ index :as => :blog do
24
+ title :title
25
+ body :body
26
+ end
27
+ end
28
+ """
29
+ Then I should see "Hello World" within "h3"
30
+ And I should see a link to "Hello World"
31
+ And I should see "My great post body" within ".post"
32
+
33
+ Scenario: Viewing the blog with a resource as a block configuration
34
+ Given a post with the title "Hello World" and body "My great post body" exists
35
+ And an index configuration of:
36
+ """
37
+ ActiveAdmin.register Post do
38
+ index :as => :blog do
39
+ title do |post|
40
+ post.title + " From Block"
41
+ end
42
+ body do |post|
43
+ post.body + " From Block"
44
+ end
45
+ end
46
+ end
47
+ """
48
+ Then I should see "Hello World From Block" within "h3"
49
+ And I should see a link to "Hello World From Block"
50
+ And I should see "My great post body From Block" within ".post"
@@ -0,0 +1,45 @@
1
+ Feature: Index as Grid
2
+
3
+ Viewing resources as a grid on the index page
4
+
5
+ Scenario: Viewing index as a grid with a simple block configuration
6
+ Given 9 posts exist
7
+ And an index configuration of:
8
+ """
9
+ ActiveAdmin.register Post do
10
+ index :as => :grid do |post|
11
+ h2 auto_link(post)
12
+ end
13
+ end
14
+ """
15
+ Then the table ".index_grid" should have 3 rows
16
+ And the table ".index_grid" should have 3 columns
17
+ And there should be 9 "a" tags within "table.index_grid"
18
+
19
+ Scenario: Viewing index as a grid and set the number of columns
20
+ Given 9 posts exist
21
+ And an index configuration of:
22
+ """
23
+ ActiveAdmin.register Post do
24
+ index :as => :grid, :columns => 1 do |post|
25
+ h2 auto_link(post)
26
+ end
27
+ end
28
+ """
29
+ Then the table ".index_grid" should have 9 rows
30
+ And the table ".index_grid" should have 1 columns
31
+ And there should be 9 "a" tags within "table.index_grid"
32
+
33
+ Scenario: Viewing index as a grid with an odd number of items
34
+ Given 9 posts exist
35
+ And an index configuration of:
36
+ """
37
+ ActiveAdmin.register Post do
38
+ index :as => :grid, :columns => 2 do |post|
39
+ h2 auto_link(post)
40
+ end
41
+ end
42
+ """
43
+ Then the table ".index_grid" should have 5 rows
44
+ And the table ".index_grid" should have 2 columns
45
+ And there should be 9 "a" tags within "table.index_grid"
@@ -0,0 +1,79 @@
1
+ Feature: Index as Table
2
+
3
+ Viewing resources as a table on the index page
4
+
5
+ Scenario: Viewing the default table with no resources
6
+ Given an index configuration of:
7
+ """
8
+ ActiveAdmin.register Post
9
+ """
10
+ Then I should see a sortable table header with "ID"
11
+ And I should see a sortable table header with "Title"
12
+
13
+ Scenario: Viewing the default table with a resource
14
+ Given a post with the title "Hello World" exists
15
+ And an index configuration of:
16
+ """
17
+ ActiveAdmin.register Post
18
+ """
19
+ Then I should see "Hello World"
20
+ Then I should see nicely formatted datetimes
21
+ And I should see a link to "View"
22
+ And I should see a link to "Edit"
23
+ And I should see a link to "Delete"
24
+
25
+ Scenario: Customizing the columns with symbols
26
+ Given a post with the title "Hello World" and body "From the body" exists
27
+ And an index configuration of:
28
+ """
29
+ ActiveAdmin.register Post do
30
+ index do
31
+ column :title
32
+ column :body
33
+ end
34
+ end
35
+ """
36
+ Then I should see a sortable table header with "Title"
37
+ And I should see a sortable table header with "Body"
38
+ And I should see "Hello World"
39
+ And I should see "From the body"
40
+
41
+ Scenario: Customizing the columns with a block
42
+ Given a post with the title "Hello World" and body "From the body" exists
43
+ And an index configuration of:
44
+ """
45
+ ActiveAdmin.register Post do
46
+ index do
47
+ column("My Title") do |post|
48
+ post.title
49
+ end
50
+ column("My Body") do |post|
51
+ post.body
52
+ end
53
+ end
54
+ end
55
+ """
56
+ Then I should see a table header with "My Title"
57
+ And I should see a table header with "My Body"
58
+ And I should see "Hello World"
59
+ And I should see "From the body"
60
+
61
+ Scenario: Showing and Hiding columns
62
+ Given a post with the title "Hello World" and body "From the body" exists
63
+ And an index configuration of:
64
+ """
65
+ ActiveAdmin.register Post do
66
+ index do
67
+ if current_active_admin_user
68
+ column :title
69
+ end
70
+ if current_active_admin_user.nil?
71
+ column :body
72
+ end
73
+ end
74
+ end
75
+ """
76
+ Then I should see a sortable table header with "Title"
77
+ And I should not see a table header with "Body"
78
+ And I should see "Hello World"
79
+ And I should not see "From the body"