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.
- data/.document +5 -0
- data/.gitignore +32 -0
- data/.travis.yml +4 -0
- data/CHANGELOG.rdoc +76 -0
- data/Gemfile +26 -0
- data/LICENSE +25 -0
- data/README.rdoc +450 -0
- data/Rakefile +100 -0
- data/activeadmin.gemspec +28 -0
- data/cucumber.yml +2 -0
- data/features/comments/commenting.feature +99 -0
- data/features/comments/viewing_index.feature +19 -0
- data/features/dashboard.feature +26 -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/format_as_csv.feature +45 -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/menu.feature +26 -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 +127 -0
- data/features/specifying_actions.feature +60 -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/dashboard_steps.rb +11 -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 +34 -0
- data/features/step_definitions/index_scope_steps.rb +20 -0
- data/features/step_definitions/menu_steps.rb +7 -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/sti_resource.feature +49 -0
- data/features/support/env.rb +92 -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/abstract_view_factory.rb +95 -0
- data/lib/active_admin/action_items.rb +37 -0
- data/lib/active_admin/application.rb +204 -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 +137 -0
- data/lib/active_admin/arbre/text_node.rb +35 -0
- data/lib/active_admin/arbre.rb +23 -0
- data/lib/active_admin/asset_registration.rb +34 -0
- data/lib/active_admin/callbacks.rb +87 -0
- data/lib/active_admin/comments/comment.rb +21 -0
- data/lib/active_admin/comments/configuration.rb +18 -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/active_admin_comment.rb +0 -0
- data/lib/active_admin/comments/views/active_admin_comments.rb +82 -0
- data/lib/active_admin/comments/views.rb +3 -0
- data/lib/active_admin/comments.rb +88 -0
- data/lib/active_admin/component.rb +22 -0
- data/lib/active_admin/controller_action.rb +12 -0
- data/lib/active_admin/csv_builder.rb +45 -0
- data/lib/active_admin/dashboards/dashboard_controller.rb +47 -0
- data/lib/active_admin/dashboards/section.rb +34 -0
- data/lib/active_admin/dashboards.rb +48 -0
- data/lib/active_admin/devise.rb +43 -0
- data/lib/active_admin/dsl.rb +215 -0
- data/lib/active_admin/event.rb +31 -0
- data/lib/active_admin/form_builder.rb +109 -0
- data/lib/active_admin/helpers/optional_display.rb +34 -0
- data/lib/active_admin/iconic/icons.rb +142 -0
- data/lib/active_admin/iconic.rb +51 -0
- data/lib/active_admin/locales/da.yml +26 -0
- data/lib/active_admin/locales/en.yml +34 -0
- data/lib/active_admin/locales/es.yml +34 -0
- data/lib/active_admin/locales/pt.yml +34 -0
- data/lib/active_admin/menu.rb +42 -0
- data/lib/active_admin/menu_item.rb +73 -0
- data/lib/active_admin/namespace.rb +198 -0
- data/lib/active_admin/page_config.rb +15 -0
- data/lib/active_admin/renderer.rb +87 -0
- data/lib/active_admin/resource/belongs_to.rb +31 -0
- data/lib/active_admin/resource.rb +229 -0
- data/lib/active_admin/resource_controller/action_builder.rb +21 -0
- data/lib/active_admin/resource_controller/actions.rb +79 -0
- data/lib/active_admin/resource_controller/callbacks.rb +47 -0
- data/lib/active_admin/resource_controller/collection.rb +144 -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/resource_controller.rb +119 -0
- data/lib/active_admin/router.rb +85 -0
- data/lib/active_admin/scope.rb +17 -0
- data/lib/active_admin/sidebar.rb +43 -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/stylesheets/active_admin.scss +429 -0
- data/lib/active_admin/version.rb +3 -0
- data/lib/active_admin/view_factory.rb +21 -0
- data/lib/active_admin/view_helpers/active_admin_application_helper.rb +12 -0
- data/lib/active_admin/view_helpers/assigns_with_indifferent_access_helper.rb +7 -0
- data/lib/active_admin/view_helpers/auto_link_helper.rb +42 -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 +185 -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/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/view_helpers.rb +23 -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 +47 -0
- data/lib/active_admin/views/components/paginated_collection.rb +92 -0
- data/lib/active_admin/views/components/panel.rb +26 -0
- data/lib/active_admin/views/components/scopes.rb +70 -0
- data/lib/active_admin/views/components/sidebar_section.rb +30 -0
- data/lib/active_admin/views/components/status_tag.rb +55 -0
- data/lib/active_admin/views/components/table_for.rb +193 -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 +75 -0
- data/lib/active_admin/views/pages/base.rb +144 -0
- data/lib/active_admin/views/pages/dashboard.rb +59 -0
- data/lib/active_admin/views/pages/edit.rb +27 -0
- data/lib/active_admin/views/pages/index.rb +66 -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 +58 -0
- data/lib/active_admin/views/templates/active_admin/dashboard/index.html.arb +1 -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/resource/edit.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin/resource/index.csv.erb +20 -0
- data/lib/active_admin/views/templates/active_admin/resource/index.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin/resource/new.html.arb +1 -0
- data/lib/active_admin/views/templates/active_admin/resource/show.html.arb +1 -0
- data/lib/active_admin/views/templates/layouts/active_admin.html.erb +39 -0
- data/lib/active_admin/views/templates/layouts/active_admin_logged_out.html.erb +31 -0
- data/lib/active_admin/views.rb +8 -0
- data/lib/active_admin.rb +71 -0
- data/lib/activeadmin.rb +1 -0
- data/lib/generators/active_admin/devise/devise_generator.rb +49 -0
- data/lib/generators/active_admin/install/install_generator.rb +46 -0
- data/lib/generators/active_admin/install/templates/active_admin.js +51 -0
- data/lib/generators/active_admin/install/templates/active_admin.rb.erb +78 -0
- data/lib/generators/active_admin/install/templates/active_admin_vendor.js +382 -0
- data/lib/generators/active_admin/install/templates/dashboards.rb +38 -0
- 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/lib/generators/active_admin/resource/resource_generator.rb +16 -0
- data/lib/generators/active_admin/resource/templates/admin.rb +3 -0
- data/spec/integration/belongs_to_spec.rb +42 -0
- data/spec/spec_helper.rb +156 -0
- data/spec/support/integration_example_group.rb +33 -0
- data/spec/support/rails_template.rb +32 -0
- data/spec/support/rails_template_with_data.rb +32 -0
- data/spec/support/templates/cucumber.rb +24 -0
- data/spec/unit/abstract_view_factory_spec.rb +79 -0
- data/spec/unit/action_builder_spec.rb +88 -0
- data/spec/unit/action_items_spec.rb +27 -0
- data/spec/unit/application_spec.rb +67 -0
- 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 +210 -0
- data/spec/unit/asset_registration_spec.rb +37 -0
- data/spec/unit/auto_link_spec.rb +39 -0
- data/spec/unit/belongs_to_spec.rb +45 -0
- data/spec/unit/breadcrumbs_spec.rb +110 -0
- data/spec/unit/comments_spec.rb +57 -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/status_tag_spec.rb +81 -0
- data/spec/unit/components/table_for_spec.rb +130 -0
- data/spec/unit/controller_filters_spec.rb +27 -0
- data/spec/unit/csv_builder_spec.rb +83 -0
- data/spec/unit/dashboard_controller_spec.rb +26 -0
- data/spec/unit/dashboard_section_spec.rb +56 -0
- data/spec/unit/dashboards_spec.rb +59 -0
- 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 +179 -0
- data/spec/unit/form_builder_spec.rb +238 -0
- data/spec/unit/menu_item_spec.rb +143 -0
- data/spec/unit/menu_spec.rb +53 -0
- data/spec/unit/namespace_spec.rb +203 -0
- data/spec/unit/pretty_format_spec.rb +35 -0
- data/spec/unit/registration_spec.rb +76 -0
- data/spec/unit/renderer_spec.rb +108 -0
- data/spec/unit/resource_controller/collection_spec.rb +34 -0
- data/spec/unit/resource_controller_spec.rb +147 -0
- data/spec/unit/resource_spec.rb +290 -0
- data/spec/unit/routing_spec.rb +88 -0
- data/spec/unit/scope_spec.rb +31 -0
- data/spec/unit/tabs_renderer_spec.rb +85 -0
- data/spec/unit/view_factory_spec.rb +16 -0
- metadata +482 -0
|
@@ -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"
|
|
@@ -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,26 @@
|
|
|
1
|
+
Feature: Menu
|
|
2
|
+
|
|
3
|
+
Background:
|
|
4
|
+
Given I am logged in
|
|
5
|
+
|
|
6
|
+
Scenario: Hide the menu item
|
|
7
|
+
Given a configuration of:
|
|
8
|
+
"""
|
|
9
|
+
ActiveAdmin.register Post do
|
|
10
|
+
menu false
|
|
11
|
+
end
|
|
12
|
+
"""
|
|
13
|
+
When I am on the dashboard
|
|
14
|
+
Then I should not see a menu item for "Posts"
|
|
15
|
+
|
|
16
|
+
@wip
|
|
17
|
+
Scenario: Set the menu item label
|
|
18
|
+
Given a configuration of:
|
|
19
|
+
"""
|
|
20
|
+
ActiveAdmin.register Post do
|
|
21
|
+
menu :label => "Articles"
|
|
22
|
+
end
|
|
23
|
+
"""
|
|
24
|
+
When I am on the dashboard
|
|
25
|
+
Then I should see a menu item for "Articles"
|
|
26
|
+
And I should not see a menu item for "Posts"
|
|
@@ -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.application.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.application.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,127 @@
|
|
|
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
|
+
|
|
@@ -0,0 +1,60 @@
|
|
|
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"
|
|
17
|
+
|
|
18
|
+
Scenario: Specify a custom collection action with template
|
|
19
|
+
Given a configuration of:
|
|
20
|
+
"""
|
|
21
|
+
ActiveAdmin.register Post do
|
|
22
|
+
action_item(:only => :index) do
|
|
23
|
+
link_to('Import Posts', import_admin_posts_path)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
collection_action :import
|
|
27
|
+
end
|
|
28
|
+
"""
|
|
29
|
+
Given "app/views/admin/posts/import.html.erb" contains:
|
|
30
|
+
"""
|
|
31
|
+
<p>We are currently working on this feature...</p>
|
|
32
|
+
"""
|
|
33
|
+
And I am logged in
|
|
34
|
+
When I am on the index page for posts
|
|
35
|
+
And I follow "Import"
|
|
36
|
+
Then I should see "We are currently working on this feature"
|
|
37
|
+
|
|
38
|
+
Scenario: Specify a custom member action with template
|
|
39
|
+
Given a configuration of:
|
|
40
|
+
"""
|
|
41
|
+
ActiveAdmin.register Post do
|
|
42
|
+
action_item(:only => :show) do
|
|
43
|
+
link_to('Review', review_admin_post_path)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
member_action :review do
|
|
47
|
+
@post = Post.find(params[:id])
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
"""
|
|
51
|
+
Given "app/views/admin/posts/review.html.erb" contains:
|
|
52
|
+
"""
|
|
53
|
+
<h1>Review: <%= @post.title %></h1>
|
|
54
|
+
"""
|
|
55
|
+
And I am logged in
|
|
56
|
+
And a post with the title "Hello World" exists
|
|
57
|
+
When I am on the index page for posts
|
|
58
|
+
And I follow "View"
|
|
59
|
+
And I follow "Review"
|
|
60
|
+
Then I should see "Review: Hello World"
|
|
@@ -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
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Then /^I should see the css file "([^"]*)"$/ do |path|
|
|
2
|
+
page.should have_xpath("//link[contains(@href, /stylesheets/#{path})]")
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
Then /^I should see the js file "([^"]*)"$/ do |path|
|
|
6
|
+
page.should have_xpath("//script[contains(@src, /javascripts/#{path})]")
|
|
7
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
Then /^I should see the attribute "([^"]*)" with "([^"]*)"$/ do |title, value|
|
|
2
|
+
Then "I should see \"#{title}\" within \".attributes_table th\""
|
|
3
|
+
And "I should see \"#{value}\" within \".attributes_table td\""
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
Then /^I should see the attribute "([^"]*)" with a nicely formatted datetime$/ do |title|
|
|
7
|
+
Then "I should see \"#{title}\" within \".attributes_table th\""
|
|
8
|
+
with_scope ".attributes_table td" do
|
|
9
|
+
page.body.should =~ /\w+ \d{1,2}, \d{4} \d{2}:\d{2}/
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
Then /^I should not see the attribute "([^"]*)"$/ do |title|
|
|
14
|
+
Then "I should not see \"#{title}\" within \".attributes_table th\""
|
|
15
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
Then /^I should see a comment by "([^"]*)"$/ do |name|
|
|
2
|
+
Then %{I should see "#{name}" within ".active_admin_comment_author"}
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
When /^I add a comment "([^"]*)"$/ do |comment|
|
|
6
|
+
When %{I fill in "active_admin_comment_body" with "#{comment}"}
|
|
7
|
+
And %{I press "Add Comment"}
|
|
8
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
Given /^a configuration of:$/ do |configuration_content|
|
|
2
|
+
eval configuration_content
|
|
3
|
+
Rails.application.reload_routes!
|
|
4
|
+
ActiveAdmin.application.namespaces.values.each{|n| n.load_menu! }
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
Given /^an index configuration of:$/ do |configuration_content|
|
|
8
|
+
eval configuration_content
|
|
9
|
+
Rails.application.reload_routes!
|
|
10
|
+
ActiveAdmin.application.namespaces.values.each{|n| n.load_menu! }
|
|
11
|
+
|
|
12
|
+
And 'I am logged in'
|
|
13
|
+
When "I am on the index page for posts"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
Given /^a show configuration of:$/ do |configuration_content|
|
|
17
|
+
eval configuration_content
|
|
18
|
+
Rails.application.reload_routes!
|
|
19
|
+
ActiveAdmin.application.namespaces.values.each{|n| n.load_menu! }
|
|
20
|
+
|
|
21
|
+
And 'I am logged in'
|
|
22
|
+
When "I am on the index page for posts"
|
|
23
|
+
And 'I follow "View"'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
Given /^"([^"]*)" contains:$/ do |filename, contents|
|
|
27
|
+
require 'fileutils'
|
|
28
|
+
filepath = Rails.root + filename
|
|
29
|
+
FileUtils.mkdir_p File.dirname(filepath)
|
|
30
|
+
File.open(filepath, 'w+'){|f| f << contents }
|
|
31
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
Then /^I should see the default welcome message$/ do
|
|
2
|
+
Then %{I should see "Welcome to Active Admin" within "#dashboard_default_message"}
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
Then /^I should not see the default welcome message$/ do
|
|
6
|
+
Then %{I should not see "Welcome to Active Admin"}
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
Then /^I should see a dashboard widget "([^"]*)"$/ do |name|
|
|
10
|
+
Then %{I should see "#{name}" within ".dashboard .panel h3"}
|
|
11
|
+
end
|