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
data/cucumber.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
default: --format 'progress' --require features/support/env.rb --require features/step_definitions features
|
@@ -0,0 +1,81 @@
|
|
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
|
+
Given a show configuration of:
|
10
|
+
"""
|
11
|
+
ActiveAdmin.register Post
|
12
|
+
"""
|
13
|
+
|
14
|
+
Scenario: View a resource with no comments
|
15
|
+
Then I should see "Comments (0)"
|
16
|
+
And I should see "No comments yet."
|
17
|
+
|
18
|
+
Scenario: Create a new comment
|
19
|
+
When I add a comment "Hello from Comment"
|
20
|
+
Then I should see a flash with "Comment was successfully created"
|
21
|
+
And I should be in the resource section for posts
|
22
|
+
And I should see "Comments (1)"
|
23
|
+
And I should see "Hello from Comment"
|
24
|
+
And I should see a comment by "admin@example.com"
|
25
|
+
|
26
|
+
Scenario: View resource with comments turned off
|
27
|
+
Given a show configuration of:
|
28
|
+
"""
|
29
|
+
ActiveAdmin.register Post do
|
30
|
+
config.comments = false
|
31
|
+
end
|
32
|
+
"""
|
33
|
+
Then I should not see "Comments"
|
34
|
+
|
35
|
+
Scenario: View a resource in a namespace that doesn't have comments
|
36
|
+
Given a configuration of:
|
37
|
+
"""
|
38
|
+
ActiveAdmin.register Post, :namespace => :new_namespace
|
39
|
+
"""
|
40
|
+
When I am on the index page for posts in the new_namespace namespace
|
41
|
+
And I follow "View"
|
42
|
+
Then I should not see "Comments"
|
43
|
+
|
44
|
+
Scenario: Creating a comment in one namespace does not create it in another
|
45
|
+
Given a show configuration of:
|
46
|
+
"""
|
47
|
+
ActiveAdmin.allow_comments_in << :public
|
48
|
+
ActiveAdmin.register Post
|
49
|
+
ActiveAdmin.register Post, :namespace => :public
|
50
|
+
"""
|
51
|
+
When I add a comment "Hello world in admin namespace"
|
52
|
+
Then I should see "Hello world in admin namespace"
|
53
|
+
When I am on the index page for posts in the public namespace
|
54
|
+
And I follow "View"
|
55
|
+
Then I should not see "Hello world in admin namespace"
|
56
|
+
And I should see "Comments (0)"
|
57
|
+
|
58
|
+
When I add a comment "Hello world in public namespace"
|
59
|
+
Then I should see "Hello world in public namespace"
|
60
|
+
When I am on the index page for posts in the admin namespace
|
61
|
+
And I follow "View"
|
62
|
+
Then I should not see "Hello world in public namespace"
|
63
|
+
And I should see "Comments (1)"
|
64
|
+
|
65
|
+
Scenario: Creating a comment on an aliased resource
|
66
|
+
Given a configuration of:
|
67
|
+
"""
|
68
|
+
ActiveAdmin.register Post, :as => "Article"
|
69
|
+
"""
|
70
|
+
When I am on the index page for articles
|
71
|
+
And I follow "View"
|
72
|
+
When I add a comment "Hello from Comment"
|
73
|
+
Then I should see a flash with "Comment was successfully created"
|
74
|
+
And I should be in the resource section for articles
|
75
|
+
|
76
|
+
Scenario: Viewing all commments for a namespace
|
77
|
+
When I add a comment "Hello from Comment"
|
78
|
+
When I am on the index page for comments
|
79
|
+
Then I should see a table header for "Body"
|
80
|
+
And I should see "Hello from Comment"
|
81
|
+
|
@@ -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,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,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"
|
@@ -0,0 +1,52 @@
|
|
1
|
+
Feature: Index Scoping
|
2
|
+
|
3
|
+
Viewing resources and scoping them
|
4
|
+
|
5
|
+
Scenario: Viewing resources with one scope and no default
|
6
|
+
Given 10 posts exist
|
7
|
+
And an index configuration of:
|
8
|
+
"""
|
9
|
+
ActiveAdmin.register Post do
|
10
|
+
scope :all
|
11
|
+
end
|
12
|
+
"""
|
13
|
+
Then I should see the scope "All" not selected
|
14
|
+
And I should see the scope "All" with the count 10
|
15
|
+
And I should see 10 posts in the table
|
16
|
+
|
17
|
+
Scenario: Viewing resources with one scope as the default
|
18
|
+
Given 10 posts exist
|
19
|
+
And an index configuration of:
|
20
|
+
"""
|
21
|
+
ActiveAdmin.register Post do
|
22
|
+
scope :all, :default => true
|
23
|
+
end
|
24
|
+
"""
|
25
|
+
Then I should see the scope "All" selected
|
26
|
+
And I should see the scope "All" with the count 10
|
27
|
+
And I should see 10 posts in the table
|
28
|
+
|
29
|
+
Scenario: Viewing resources with mulitple scopes as blocks
|
30
|
+
Given 10 posts exist
|
31
|
+
And an index configuration of:
|
32
|
+
"""
|
33
|
+
ActiveAdmin.register Post do
|
34
|
+
scope 'Today', :default => true do |posts|
|
35
|
+
posts.where(["created_at > ? AND created_at < ?", ::Time.zone.now.beginning_of_day, ::Time.zone.now.end_of_day])
|
36
|
+
end
|
37
|
+
scope 'Tomorrow' do |posts|
|
38
|
+
posts.where(["created_at > ? AND created_at < ?", ::Time.zone.now.beginning_of_day + 1.day, ::Time.zone.now.end_of_day + 1.day])
|
39
|
+
end
|
40
|
+
end
|
41
|
+
"""
|
42
|
+
Then I should see the scope "Today" selected
|
43
|
+
And I should see the scope "Tomorrow" not selected
|
44
|
+
And I should see the scope "Today" with the count 10
|
45
|
+
And I should see the scope "Tomorrow" with the count 0
|
46
|
+
And I should see 10 posts in the table
|
47
|
+
And I should see a link to "Tomorrow"
|
48
|
+
|
49
|
+
When I follow "Tomorrow"
|
50
|
+
Then I should see the scope "Tomorrow" selected
|
51
|
+
And I should see the scope "Today" not selected
|
52
|
+
And I should see a link to "Today"
|