activeadmin 0.1.1 → 0.2.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.
- data/CHANGELOG.rdoc +15 -1
- data/Gemfile +41 -11
- data/LICENSE +5 -0
- data/README.rdoc +202 -87
- data/Rakefile +51 -15
- data/activeadmin.gemspec +310 -131
- data/cucumber.yml +1 -0
- data/features/comments/commenting.feature +81 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/edit_page.feature +77 -0
- data/features/first_boot.feature +16 -0
- data/features/global_navigation.feature +30 -0
- data/features/index/formats.feature +10 -0
- data/features/index/index_as_block.feature +15 -0
- data/features/index/index_as_blog.feature +50 -0
- data/features/index/index_as_grid.feature +45 -0
- data/features/index/index_as_table.feature +79 -0
- data/features/index/index_scopes.feature +52 -0
- data/features/index/pagination.feature +23 -0
- data/features/new_page.feature +75 -0
- data/features/registering_assets.feature +35 -0
- data/features/registering_resources.feature +33 -0
- data/features/show/default_content.feature +43 -0
- data/features/show/page_title.feature +33 -0
- data/features/sidebar_sections.feature +128 -0
- data/features/specifying_actions.feature +16 -0
- data/features/step_definitions/action_item_steps.rb +7 -0
- data/features/step_definitions/additional_web_steps.rb +67 -0
- data/features/step_definitions/asset_steps.rb +7 -0
- data/features/step_definitions/attribute_steps.rb +15 -0
- data/features/step_definitions/comment_steps.rb +8 -0
- data/features/step_definitions/configuration_steps.rb +31 -0
- data/features/step_definitions/factory_steps.rb +28 -0
- data/features/step_definitions/flash_steps.rb +3 -0
- data/features/step_definitions/format_steps.rb +7 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/pagination_steps.rb +8 -0
- data/features/step_definitions/sidebar_steps.rb +11 -0
- data/features/step_definitions/tab_steps.rb +3 -0
- data/features/step_definitions/user_steps.rb +20 -0
- data/features/step_definitions/web_steps.rb +219 -0
- data/features/support/env.rb +88 -0
- data/features/support/paths.rb +48 -0
- data/features/users/logging_in.feature +34 -0
- data/features/users/logging_out.feature +13 -0
- data/lib/active_admin.rb +155 -79
- data/lib/active_admin/abstract_view_factory.rb +95 -0
- data/lib/active_admin/action_items.rb +4 -15
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/arbre/attributes.rb +20 -0
- data/lib/active_admin/arbre/class_list.rb +28 -0
- data/lib/active_admin/arbre/collection.rb +27 -0
- data/lib/active_admin/arbre/context.rb +8 -0
- data/lib/active_admin/arbre/core_extensions.rb +5 -0
- data/lib/active_admin/arbre/document.rb +42 -0
- data/lib/active_admin/arbre/element.rb +151 -0
- data/lib/active_admin/arbre/html.rb +84 -0
- data/lib/active_admin/arbre/html5_elements.rb +47 -0
- data/lib/active_admin/arbre/tag.rb +129 -0
- data/lib/active_admin/arbre/text_node.rb +35 -0
- data/lib/active_admin/callbacks.rb +87 -0
- data/lib/active_admin/comments.rb +73 -0
- data/lib/active_admin/comments/comment.rb +15 -0
- data/lib/active_admin/comments/configuration.rb +16 -0
- data/lib/active_admin/comments/namespace_helper.rb +14 -0
- data/lib/active_admin/comments/resource_helper.rb +17 -0
- data/lib/active_admin/comments/show_page_helper.rb +23 -0
- data/lib/active_admin/comments/views.rb +3 -0
- data/lib/active_admin/comments/views/active_admin_comment.rb +0 -0
- data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
- data/lib/active_admin/component.rb +22 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/dashboards.rb +0 -2
- data/lib/active_admin/dashboards/dashboard_controller.rb +10 -5
- data/lib/active_admin/dashboards/section.rb +5 -14
- data/lib/active_admin/devise.rb +43 -0
- data/lib/active_admin/dsl.rb +202 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +68 -50
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/namespace.rb +102 -16
- data/lib/active_admin/renderer.rb +18 -3
- data/lib/active_admin/resource.rb +110 -9
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource_controller.rb +45 -260
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +53 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +142 -0
- data/lib/active_admin/resource_controller/filters.rb +58 -0
- data/lib/active_admin/resource_controller/form.rb +42 -0
- data/lib/active_admin/resource_controller/menu.rb +29 -0
- data/lib/active_admin/resource_controller/page_configurations.rb +53 -0
- data/lib/active_admin/resource_controller/scoping.rb +36 -0
- data/lib/active_admin/resource_controller/sidebars.rb +38 -0
- data/lib/active_admin/scope.rb +17 -0
- data/lib/active_admin/sidebar.rb +8 -47
- data/lib/active_admin/stylesheets/active_admin.scss +418 -0
- data/lib/active_admin/stylesheets/active_admin/_comments.scss +40 -0
- data/lib/active_admin/stylesheets/active_admin/_flash_messages.scss +13 -0
- data/lib/active_admin/stylesheets/active_admin/_forms.scss +168 -0
- data/lib/active_admin/stylesheets/active_admin/_header.scss +108 -0
- data/lib/active_admin/stylesheets/active_admin/_typography.scss +100 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_all.scss +8 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_buttons.scss +27 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_gradients.scss +21 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_icons.scss +20 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_reset.scss +165 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_rounded.scss +43 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_sections.scss +27 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_shadows.scss +21 -0
- data/lib/active_admin/stylesheets/active_admin/mixins/_variables.scss +12 -0
- data/lib/active_admin/version.rb +1 -1
- data/lib/active_admin/view_factory.rb +21 -0
- data/lib/active_admin/view_helpers.rb +17 -100
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +41 -0
- data/lib/active_admin/view_helpers/breadcrumb_helper.rb +29 -0
- data/lib/active_admin/view_helpers/display_helper.rb +38 -0
- data/lib/active_admin/view_helpers/filter_form_helper.rb +174 -0
- data/lib/active_admin/view_helpers/form_helper.rb +12 -0
- data/lib/active_admin/view_helpers/icon_helper.rb +12 -0
- data/lib/active_admin/view_helpers/method_or_proc_helper.rb +26 -0
- data/lib/active_admin/view_helpers/renderer_helper.rb +29 -0
- data/lib/active_admin/view_helpers/sidebar_helper.rb +15 -0
- data/lib/active_admin/view_helpers/status_tag_helper.rb +13 -0
- data/lib/active_admin/view_helpers/table_helper.rb +12 -0
- data/lib/active_admin/view_helpers/title_helper.rb +11 -0
- data/lib/active_admin/view_helpers/view_factory_helper.rb +11 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin/views/action_items.rb +17 -0
- data/lib/active_admin/views/components/attributes_table.rb +66 -0
- data/lib/active_admin/views/components/columns.rb +49 -0
- data/lib/active_admin/views/components/paginated_collection.rb +74 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +64 -0
- data/lib/active_admin/views/components/sidebar_section.rb +30 -0
- data/lib/active_admin/views/components/table_for.rb +174 -0
- data/lib/active_admin/views/dashboard_section_renderer.rb +19 -0
- data/lib/active_admin/views/header_renderer.rb +37 -0
- data/lib/active_admin/views/index_as_block.rb +24 -0
- data/lib/active_admin/views/index_as_blog.rb +89 -0
- data/lib/active_admin/views/index_as_grid.rb +49 -0
- data/lib/active_admin/views/index_as_table.rb +73 -0
- data/lib/active_admin/views/pages/base.rb +138 -0
- data/lib/active_admin/views/pages/dashboard.rb +61 -0
- data/lib/active_admin/views/pages/edit.rb +27 -0
- data/lib/active_admin/views/pages/index.rb +64 -0
- data/lib/active_admin/views/pages/new.rb +27 -0
- data/lib/active_admin/views/pages/show.rb +56 -0
- data/lib/active_admin/views/tabs_renderer.rb +52 -0
- data/lib/active_admin/views/templates/active_admin/devise/mailer/reset_password_instructions.html.erb +8 -0
- data/lib/active_admin/views/templates/active_admin/devise/mailer/unlock_instructions.html.erb +7 -0
- data/lib/active_admin/views/templates/active_admin/devise/passwords/edit.html.erb +16 -0
- data/lib/active_admin/views/templates/active_admin/devise/passwords/new.html.erb +14 -0
- data/lib/active_admin/views/templates/active_admin/devise/sessions/new.html.erb +18 -0
- data/lib/active_admin/views/templates/active_admin/devise/shared/_links.erb +20 -0
- data/lib/active_admin/views/templates/active_admin/devise/unlocks/new.html.erb +12 -0
- data/lib/active_admin/views/templates/active_admin_dashboard/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/edit.html.arb +1 -0
- data/lib/active_admin/views/{active_admin_default → templates/active_admin_default}/index.csv.erb +0 -0
- data/lib/active_admin/views/templates/active_admin_default/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/new.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin_default/show.html.arb +1 -0
- data/lib/active_admin/views/{layouts → templates/layouts}/active_admin.html.erb +3 -4
- data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +45 -0
- data/lib/generators/active_admin/install/install_generator.rb +18 -3
- data/lib/generators/active_admin/install/templates/active_admin.js +41 -0
- data/lib/generators/active_admin/install/templates/{active_admin.rb → active_admin.rb.erb} +33 -3
- data/lib/generators/active_admin/install/templates/active_admin_vendor.js +1 -1
- data/lib/generators/active_admin/install/templates/dashboards.rb +3 -4
- data/lib/generators/active_admin/install/templates/images/admin_notes_icon.png +0 -0
- data/lib/generators/active_admin/install/templates/images/loading.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/nested_menu_arrow.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/nested_menu_arrow_dark.gif +0 -0
- data/lib/generators/active_admin/install/templates/images/orderable.png +0 -0
- data/lib/generators/active_admin/install/templates/migrations/1_create_admin_notes.rb +16 -0
- data/lib/generators/active_admin/install/templates/migrations/2_move_admin_notes_to_comments.rb +25 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/integration/index_as_table_spec.rb +0 -119
- data/spec/integration/layout_spec.rb +3 -37
- data/spec/spec_helper.rb +89 -50
- data/spec/support/integration_example_group.rb +37 -0
- data/spec/support/rails_template.rb +21 -9
- data/spec/support/rails_template_with_data.rb +32 -0
- data/spec/support/templates/cucumber.rb +28 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +19 -7
- data/spec/unit/action_items_spec.rb +16 -30
- data/spec/unit/active_admin_spec.rb +10 -22
- data/spec/unit/arbre/html/element_finder_methods_spec.rb +54 -0
- data/spec/unit/arbre/html/element_spec.rb +224 -0
- data/spec/unit/arbre/html/tag_attributes_spec.rb +61 -0
- data/spec/unit/arbre/html/tag_spec.rb +63 -0
- data/spec/unit/arbre/html_spec.rb +185 -0
- data/spec/unit/auto_link_spec.rb +38 -0
- data/spec/unit/belongs_to_spec.rb +44 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +53 -0
- data/spec/unit/component_spec.rb +18 -0
- data/spec/unit/components/attributes_table_spec.rb +100 -0
- data/spec/unit/components/columns_spec.rb +75 -0
- data/spec/unit/components/panel_spec.rb +31 -0
- data/spec/unit/components/sidebar_section_spec.rb +37 -0
- data/spec/unit/components/table_for_spec.rb +130 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +10 -17
- data/spec/unit/display_name_spec.rb +29 -0
- data/spec/unit/event_spec.rb +41 -0
- data/spec/unit/filter_form_builder_spec.rb +99 -77
- data/spec/unit/form_builder_spec.rb +69 -69
- data/spec/unit/namespace_spec.rb +61 -3
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/registration_spec.rb +40 -1
- data/spec/unit/renderer_spec.rb +8 -0
- data/spec/unit/resource_controller_spec.rb +105 -6
- data/spec/unit/resource_spec.rb +78 -11
- data/spec/unit/routing_spec.rb +82 -6
- data/spec/unit/scope_spec.rb +31 -0
- data/spec/unit/tabs_renderer_spec.rb +24 -2
- data/spec/unit/view_factory_spec.rb +16 -0
- metadata +268 -82
- data/.gitignore +0 -25
- data/active_admin.gemspec +0 -22
- data/lib/active_admin/action_builder.rb +0 -60
- data/lib/active_admin/breadcrumbs.rb +0 -26
- data/lib/active_admin/dashboards/renderer.rb +0 -45
- data/lib/active_admin/dashboards/section_renderer.rb +0 -28
- data/lib/active_admin/filters.rb +0 -189
- data/lib/active_admin/pages.rb +0 -11
- data/lib/active_admin/pages/base.rb +0 -92
- data/lib/active_admin/pages/edit.rb +0 -21
- data/lib/active_admin/pages/index.rb +0 -58
- data/lib/active_admin/pages/index/blog.rb +0 -65
- data/lib/active_admin/pages/index/table.rb +0 -48
- data/lib/active_admin/pages/index/thumbnails.rb +0 -40
- data/lib/active_admin/pages/new.rb +0 -21
- data/lib/active_admin/pages/show.rb +0 -54
- data/lib/active_admin/table_builder.rb +0 -162
- data/lib/active_admin/tabs_renderer.rb +0 -39
- data/lib/active_admin/views/active_admin_dashboard/index.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/edit.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/index.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/new.html.erb +0 -1
- data/lib/active_admin/views/active_admin_default/show.html.erb +0 -1
- data/lib/generators/active_admin/install/templates/active_admin.css +0 -325
- data/lib/generators/active_admin/install/templates/images/orderable.gif +0 -0
- data/spec/integration/index_as_blog_spec.rb +0 -65
- data/spec/integration/index_as_thumbnails_spec.rb +0 -43
- data/spec/integration/new_view_spec.rb +0 -52
- data/spec/integration/show_view_spec.rb +0 -91
- data/spec/unit/sidebar_spec.rb +0 -96
- data/spec/unit/table_builder_spec.rb +0 -162
@@ -0,0 +1,23 @@
|
|
1
|
+
Feature: Index Pagination
|
2
|
+
|
3
|
+
Background:
|
4
|
+
Given an index configuration of:
|
5
|
+
"""
|
6
|
+
ActiveAdmin.register Post
|
7
|
+
"""
|
8
|
+
|
9
|
+
Scenario: Viewing index when no resources exist
|
10
|
+
When I am on the index page for posts
|
11
|
+
Then I should see "No Posts found"
|
12
|
+
And I should not see pagination
|
13
|
+
|
14
|
+
Scenario: Viewing index when one page of resources exist
|
15
|
+
Given 20 posts exist
|
16
|
+
When I am on the index page for posts
|
17
|
+
Then I should see "Displaying all 20 Posts"
|
18
|
+
And I should not see pagination
|
19
|
+
|
20
|
+
Scenario: Viewing index when multiple pages of resources exist
|
21
|
+
Given 31 posts exist
|
22
|
+
When I am on the index page for posts
|
23
|
+
Then I should see pagination with 2 pages
|
@@ -0,0 +1,75 @@
|
|
1
|
+
Feature: New Page
|
2
|
+
|
3
|
+
Customizing the form to create new resources
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given a category named "Music" exists
|
7
|
+
Given a user named "John Doe" exists
|
8
|
+
And I am logged in
|
9
|
+
Given a configuration of:
|
10
|
+
"""
|
11
|
+
ActiveAdmin.register Post
|
12
|
+
"""
|
13
|
+
When I am on the index page for posts
|
14
|
+
|
15
|
+
Scenario: Default form with no config
|
16
|
+
Given I follow "New Post"
|
17
|
+
When I fill in "Title" with "Hello World"
|
18
|
+
And I fill in "Body" with "This is the body"
|
19
|
+
And I select "Music" from "Category"
|
20
|
+
And I select "John Doe" from "Author"
|
21
|
+
And I press "Create Post"
|
22
|
+
Then I should see "Post was successfully created."
|
23
|
+
And I should see the attribute "Title" with "Hello World"
|
24
|
+
And I should see the attribute "Body" with "This is the body"
|
25
|
+
And I should see the attribute "Category" with "Music"
|
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 "New Post"
|
45
|
+
Then I should see a fieldset titled "Your Post"
|
46
|
+
And I should see a fieldset titled "Publishing"
|
47
|
+
When I fill in "Title" with "Hello World"
|
48
|
+
And I fill in "Body" with "This is the body"
|
49
|
+
And I press "Create Post"
|
50
|
+
Then I should see "Post was successfully created."
|
51
|
+
And I should see the attribute "Title" with "Hello World"
|
52
|
+
And I should see the attribute "Body" with "This is the body"
|
53
|
+
|
54
|
+
Scenario: Generating a form from a partial
|
55
|
+
Given "app/views/admin/posts/_form.html.erb" contains:
|
56
|
+
"""
|
57
|
+
<% url = @post.new_record? ? admin_posts_path : admin_post_path(@post) %>
|
58
|
+
<%= active_admin_form_for @post, :url => url do |f|
|
59
|
+
f.inputs :title, :body
|
60
|
+
f.buttons
|
61
|
+
end %>
|
62
|
+
"""
|
63
|
+
Given a configuration of:
|
64
|
+
"""
|
65
|
+
ActiveAdmin.register Post do
|
66
|
+
form :partial => "form"
|
67
|
+
end
|
68
|
+
"""
|
69
|
+
Given I follow "New Post"
|
70
|
+
When I fill in "Title" with "Hello World"
|
71
|
+
And I fill in "Body" with "This is the body"
|
72
|
+
And I press "Create Post"
|
73
|
+
Then I should see "Post was successfully created."
|
74
|
+
And I should see the attribute "Title" with "Hello World"
|
75
|
+
And I should see the attribute "Body" with "This is the body"
|
@@ -0,0 +1,35 @@
|
|
1
|
+
Feature: Registering Assets
|
2
|
+
|
3
|
+
Registering CSS and JS files
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given a configuration of:
|
7
|
+
"""
|
8
|
+
ActiveAdmin.register Post
|
9
|
+
"""
|
10
|
+
And I am logged in
|
11
|
+
|
12
|
+
|
13
|
+
Scenario: Viewing default asset files
|
14
|
+
When I am on the index page for posts
|
15
|
+
Then I should see the css file "admin/active_admin.css"
|
16
|
+
Then I should see the js file "active_admin_vendor.js"
|
17
|
+
Then I should see the js file "active_admin.js"
|
18
|
+
|
19
|
+
Scenario: Registering a CSS file
|
20
|
+
Given a configuration of:
|
21
|
+
"""
|
22
|
+
ActiveAdmin.register_stylesheet "some-random-css.css"
|
23
|
+
ActiveAdmin.register Post
|
24
|
+
"""
|
25
|
+
When I am on the index page for posts
|
26
|
+
Then I should see the css file "some-random-css.css"
|
27
|
+
|
28
|
+
Scenario: Registering a JS file
|
29
|
+
Given a configuration of:
|
30
|
+
"""
|
31
|
+
ActiveAdmin.register_javascript "some-random-js.js"
|
32
|
+
ActiveAdmin.register Post
|
33
|
+
"""
|
34
|
+
When I am on the index page for posts
|
35
|
+
Then I should see the js file "some-random-js.js"
|
@@ -0,0 +1,33 @@
|
|
1
|
+
Feature: Registering Resources
|
2
|
+
|
3
|
+
Registering resources within Active Admin
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given I am logged in
|
7
|
+
And a post with the title "Hello World" exists
|
8
|
+
|
9
|
+
Scenario: Registering a resource with the defaults
|
10
|
+
Given a configuration of:
|
11
|
+
"""
|
12
|
+
ActiveAdmin.register Post
|
13
|
+
"""
|
14
|
+
When I go to the dashboard
|
15
|
+
Then I should see "Posts"
|
16
|
+
When I follow "Posts"
|
17
|
+
Then I should see "Hello World"
|
18
|
+
When I follow "View"
|
19
|
+
Then I should see "Hello World"
|
20
|
+
And I should be in the resource section for Post
|
21
|
+
|
22
|
+
Scenario: Registering a resource with another name
|
23
|
+
Given a configuration of:
|
24
|
+
"""
|
25
|
+
ActiveAdmin.register Post, :as => "My Post"
|
26
|
+
"""
|
27
|
+
When I go to the dashboard
|
28
|
+
Then I should see "My Posts"
|
29
|
+
When I follow "My Posts"
|
30
|
+
Then I should see "Hello World"
|
31
|
+
When I follow "View"
|
32
|
+
Then I should see "Hello World"
|
33
|
+
And I should be in the resource section for My Post
|
@@ -0,0 +1,43 @@
|
|
1
|
+
Feature: Show - Default Content
|
2
|
+
|
3
|
+
Viewing the show page for a resource
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given a post with the title "Hello World" written by "Jane Doe" exists
|
7
|
+
|
8
|
+
Scenario: Viewing the default show page
|
9
|
+
Given a show configuration of:
|
10
|
+
"""
|
11
|
+
ActiveAdmin.register Post
|
12
|
+
"""
|
13
|
+
Then I should see the attribute "Title" with "Hello World"
|
14
|
+
And I should see the attribute "Body" with "Empty"
|
15
|
+
And I should see the attribute "Created At" with a nicely formatted datetime
|
16
|
+
And I should see the attribute "Author" with "jane_doe"
|
17
|
+
And I should see an action item button "Delete Post"
|
18
|
+
And I should see an action item button "Edit Post"
|
19
|
+
|
20
|
+
Scenario: Attributes should link when linked resource is registered
|
21
|
+
Given a show configuration of:
|
22
|
+
"""
|
23
|
+
ActiveAdmin.register User
|
24
|
+
ActiveAdmin.register Post
|
25
|
+
"""
|
26
|
+
Then I should see the attribute "Author" with "jane_doe"
|
27
|
+
And I should see a link to "jane_doe"
|
28
|
+
|
29
|
+
Scenario: Customizing the attributes table with a set of attributes
|
30
|
+
Given a show configuration of:
|
31
|
+
"""
|
32
|
+
ActiveAdmin.register Post do
|
33
|
+
|
34
|
+
show do
|
35
|
+
attributes_table :title, :body, :created_at, :updated_at
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
"""
|
40
|
+
Then I should see the attribute "Title" with "Hello World"
|
41
|
+
And I should see the attribute "Body" with "Empty"
|
42
|
+
And I should see the attribute "Created At" with a nicely formatted datetime
|
43
|
+
And I should not see the attribute "Author"
|
@@ -0,0 +1,33 @@
|
|
1
|
+
Feature: Show - Page Title
|
2
|
+
|
3
|
+
Modifying the page title on the show screen
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given a post with the title "Hello World" written by "Jane Doe" exists
|
7
|
+
|
8
|
+
Scenario: Set a method to be called on the resource as the title
|
9
|
+
Given a show configuration of:
|
10
|
+
"""
|
11
|
+
ActiveAdmin.register Post do
|
12
|
+
show :title => :title
|
13
|
+
end
|
14
|
+
"""
|
15
|
+
Then I should see the page title "Hello World"
|
16
|
+
|
17
|
+
Scenario: Set a string as the title
|
18
|
+
Given a show configuration of:
|
19
|
+
"""
|
20
|
+
ActiveAdmin.register Post do
|
21
|
+
show :title => "Title From String"
|
22
|
+
end
|
23
|
+
"""
|
24
|
+
Then I should see the page title "Title From String"
|
25
|
+
|
26
|
+
Scenario: Set a proc as the title
|
27
|
+
Given a show configuration of:
|
28
|
+
"""
|
29
|
+
ActiveAdmin.register Post do
|
30
|
+
show :title => proc{|post| "Title: " + post.title }
|
31
|
+
end
|
32
|
+
"""
|
33
|
+
Then I should see the page title "Title: Hello World"
|
@@ -0,0 +1,128 @@
|
|
1
|
+
Feature: Sidebar Sections
|
2
|
+
|
3
|
+
Creating and Configuring sidebar sections
|
4
|
+
|
5
|
+
Background:
|
6
|
+
Given I am logged in
|
7
|
+
And a post with the title "Hello World" exists
|
8
|
+
|
9
|
+
Scenario: Create a sidebar for all actions
|
10
|
+
Given a configuration of:
|
11
|
+
"""
|
12
|
+
ActiveAdmin.register Post do
|
13
|
+
sidebar :help do
|
14
|
+
"Need help? Email us at help@example.com"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
"""
|
18
|
+
When I am on the index page for posts
|
19
|
+
Then I should see a sidebar titled "Help"
|
20
|
+
Then I should see /Need help/ within the sidebar "Help"
|
21
|
+
|
22
|
+
When I follow "View"
|
23
|
+
Then I should see a sidebar titled "Help"
|
24
|
+
|
25
|
+
When I follow "Edit Post"
|
26
|
+
Then I should see a sidebar titled "Help"
|
27
|
+
|
28
|
+
When I am on the index page for posts
|
29
|
+
When I follow "New Post"
|
30
|
+
Then I should see a sidebar titled "Help"
|
31
|
+
|
32
|
+
|
33
|
+
Scenario: Create a sidebar for only one action
|
34
|
+
Given a configuration of:
|
35
|
+
"""
|
36
|
+
ActiveAdmin.register Post do
|
37
|
+
sidebar :help, :only => :index do
|
38
|
+
"Need help? Email us at help@example.com"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
"""
|
42
|
+
When I am on the index page for posts
|
43
|
+
Then I should see a sidebar titled "Help"
|
44
|
+
Then I should see /Need help/ within the sidebar "Help"
|
45
|
+
|
46
|
+
When I follow "View"
|
47
|
+
Then I should not see a sidebar titled "Help"
|
48
|
+
|
49
|
+
When I follow "Edit Post"
|
50
|
+
Then I should not see a sidebar titled "Help"
|
51
|
+
|
52
|
+
When I am on the index page for posts
|
53
|
+
When I follow "New Post"
|
54
|
+
Then I should not see a sidebar titled "Help"
|
55
|
+
|
56
|
+
|
57
|
+
Scenario: Create a sidebar for all except one action
|
58
|
+
Given a configuration of:
|
59
|
+
"""
|
60
|
+
ActiveAdmin.register Post do
|
61
|
+
sidebar :help, :except => :index do
|
62
|
+
"Need help? Email us at help@example.com"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
"""
|
66
|
+
When I am on the index page for posts
|
67
|
+
Then I should not see a sidebar titled "Help"
|
68
|
+
|
69
|
+
When I follow "View"
|
70
|
+
Then I should see a sidebar titled "Help"
|
71
|
+
|
72
|
+
When I follow "Edit Post"
|
73
|
+
Then I should see a sidebar titled "Help"
|
74
|
+
|
75
|
+
When I am on the index page for posts
|
76
|
+
When I follow "New Post"
|
77
|
+
Then I should see a sidebar titled "Help"
|
78
|
+
|
79
|
+
Scenario: Create a sidebar with deep content
|
80
|
+
Given a configuration of:
|
81
|
+
"""
|
82
|
+
ActiveAdmin.register Post do
|
83
|
+
sidebar :help do
|
84
|
+
ul do
|
85
|
+
li "First List First Item"
|
86
|
+
li "First List Second Item"
|
87
|
+
end
|
88
|
+
ul do
|
89
|
+
li "Second List First Item"
|
90
|
+
li "Second List Second Item"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
"""
|
95
|
+
When I am on the index page for posts
|
96
|
+
Then I should see a sidebar titled "Help"
|
97
|
+
And I should see "First List First Item" within "ul li"
|
98
|
+
And I should see "Second List Second Item" within "ul li"
|
99
|
+
|
100
|
+
Scenario: Rendering sidebar by default without a block or partial name
|
101
|
+
Given "app/views/admin/posts/_help_sidebar.html.erb" contains:
|
102
|
+
"""
|
103
|
+
<p>Hello World from a partial</p>
|
104
|
+
"""
|
105
|
+
Given a configuration of:
|
106
|
+
"""
|
107
|
+
ActiveAdmin.register Post do
|
108
|
+
sidebar :help
|
109
|
+
end
|
110
|
+
"""
|
111
|
+
When I am on the index page for posts
|
112
|
+
Then I should see "Hello World from a partial" within ".sidebar_section"
|
113
|
+
|
114
|
+
Scenario: Rendering a partial as the sidebar content
|
115
|
+
Given "app/views/admin/posts/_custom_help_partial.html.erb" contains:
|
116
|
+
"""
|
117
|
+
<p>Hello World from a partial</p>
|
118
|
+
"""
|
119
|
+
Given a configuration of:
|
120
|
+
"""
|
121
|
+
ActiveAdmin.register Post do
|
122
|
+
sidebar :help, :partial => "custom_help_partial"
|
123
|
+
end
|
124
|
+
"""
|
125
|
+
When I am on the index page for posts
|
126
|
+
Then I should see "Hello World from a partial" within ".sidebar_section"
|
127
|
+
|
128
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Feature: Specifying Actions
|
2
|
+
|
3
|
+
Specifying which actions to allow on my resource
|
4
|
+
|
5
|
+
@allow-rescue
|
6
|
+
Scenario: Only creating the index action
|
7
|
+
Given a configuration of:
|
8
|
+
"""
|
9
|
+
ActiveAdmin.register Post do
|
10
|
+
actions :index
|
11
|
+
end
|
12
|
+
"""
|
13
|
+
And I am logged in
|
14
|
+
And a post with the title "Hello World" exists
|
15
|
+
When I am on the index page for posts
|
16
|
+
Then an "AbstractController::ActionNotFound" exception should be raised when I follow "View"
|
@@ -0,0 +1,7 @@
|
|
1
|
+
Then /^I should see an action item button "([^"]*)"$/ do |content|
|
2
|
+
Then %{I should see "#{content}" within ".action_items a"}
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^I should not see an action item button "([^"]*)"$/ do |content|
|
6
|
+
Then %{I should not see "#{content}" within ".action_items"}
|
7
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
Then /^I should see a table header with "([^"]*)"$/ do |content|
|
2
|
+
Then "I should see \"#{content}\" within \"th\""
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^I should not see a table header with "([^"]*)"$/ do |content|
|
6
|
+
Then "I should not see \"#{content}\" within \"th\""
|
7
|
+
end
|
8
|
+
|
9
|
+
Then /^I should see a sortable table header with "([^"]*)"$/ do |content|
|
10
|
+
Then "I should see \"#{content}\" within \"th.sortable\""
|
11
|
+
end
|
12
|
+
|
13
|
+
Then /^the table "([^"]*)" should have (\d+) rows/ do |selector, count|
|
14
|
+
with_scope(selector) do
|
15
|
+
page.all(:css, 'tr').size.should == count.to_i
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
Then /^the table "([^"]*)" should have (\d+) columns/ do |selector, count|
|
20
|
+
with_scope(selector + " tr:first") do
|
21
|
+
page.all(:css, "td").size.should == count.to_i
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
Then /^there should be (\d+) "([^"]*)" tags within "([^"]*)"$/ do |count, tag, selector|
|
26
|
+
with_scope(selector) do
|
27
|
+
page.all(:css, tag).size.should == count.to_i
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
Then /^I should see a link to "([^"]*)"$/ do |link|
|
32
|
+
Then "I should see \"#{link}\" within \"a\""
|
33
|
+
end
|
34
|
+
|
35
|
+
Then /^I should see a link to \/([^\/]*)\/$/ do |regexp|
|
36
|
+
regexp = Regexp.new(regexp)
|
37
|
+
if page.respond_to? :should
|
38
|
+
page.should have_xpath('//a', :text => regexp)
|
39
|
+
else
|
40
|
+
assert page.has_xpath?('//a', :text => regexp)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
Then /^an "([^"]*)" exception should be raised when I follow "([^"]*)"$/ do |error, link|
|
45
|
+
lambda {
|
46
|
+
When "I follow \"#{link}\""
|
47
|
+
}.should raise_error(error.constantize)
|
48
|
+
end
|
49
|
+
|
50
|
+
Then /^I should be in the resource section for (.+)$/ do |resource_name|
|
51
|
+
current_url.should include(resource_name.gsub(' ', '').underscore.pluralize)
|
52
|
+
end
|
53
|
+
|
54
|
+
Then /^I should wait and see "([^"]*)"(?: within "([^"]*)")?$/ do |text, selector|
|
55
|
+
sleep 1
|
56
|
+
Then 'show me the page'
|
57
|
+
selector ||= "*"
|
58
|
+
locate(:xpath, "//#{selector}[text()='#{text}']")
|
59
|
+
end
|
60
|
+
|
61
|
+
Then /^I should see the page title "([^"]*)"$/ do |title|
|
62
|
+
Then %{I should see "#{title}" within "h2#page_title"}
|
63
|
+
end
|
64
|
+
|
65
|
+
Then /^I should see a fieldset titled "([^"]*)"$/ do |title|
|
66
|
+
Then %{I should see "#{title}" within "fieldset legend"}
|
67
|
+
end
|