Files
grecia/spec/system/admin/dashboard/actions_spec.rb
taitus 4d8a337e8a Extract dashboard_action from shared nested documentable spec to system specs
Removed 'documentable_path_arguments' and 'management'
parameters because they are not used by dashboard_action.

Also moved and renamed the 'documentable_fill_new_valid_dashboard_action' method
from the common actions helper to this file, since it is now only used here.

Hardcoded 'path', 'submit_button_text', and 'notice_text' for dashboard_action.
These remain fixed for now until dynamic values are required in future commits.
2025-06-06 15:48:46 +02:00

116 lines
3.2 KiB
Ruby

require "rails_helper"
describe "Admin dashboard actions", :admin do
context "when visiting index" do
context "and no actions defined" do
before do
visit admin_dashboard_actions_path
end
scenario "shows only default actions" do
expect(page).to have_content("Polls")
expect(page).to have_content("Email")
expect(page).to have_content("Poster")
expect(page).to have_link "Edit", count: 3
end
end
context "and actions defined" do
let!(:action) { create(:dashboard_action) }
before do
visit admin_dashboard_actions_path
end
scenario "shows the action data" do
expect(page).to have_content(action.title)
end
end
end
context "when creating an action" do
let(:action) { build(:dashboard_action) }
before do
visit admin_dashboard_actions_path
click_link "Create resource or action"
end
scenario "Creates a new action" do
fill_in "Title", with: action.title
fill_in_ckeditor "Description", with: action.description
click_button "Save"
expect(page).to have_content(action.title)
end
scenario "Renders create form in case data is invalid" do
click_button "Save"
expect(page).to have_content("error prevented this Dashboard/Action from being saved.")
end
end
context "when editing an action" do
let!(:action) { create(:dashboard_action) }
before do
visit admin_dashboard_actions_path
within "#dashboard_action_#{action.id}" do
click_link "Edit"
end
end
scenario "Updates the action" do
expect(page).to have_checked_field "Proposed action"
expect(page).to have_unchecked_field "Resource"
expect(page).not_to have_field "Short description"
expect(page).not_to have_field "Include in the resource a button to " \
"request the resource from administrators"
choose "Resource"
check "Include in the resource a button to request the resource from administrators"
fill_in "Title", with: "Great action!"
fill_in "Short description", with: "And awesome too!"
click_button "Save"
expect(page).to have_content "Great action!"
end
scenario "Renders edit form in case data is invalid" do
fill_in "Title", with: "x"
click_button "Save"
expect(page).to have_content("error prevented this Dashboard/Action from being saved.")
end
end
context "when destroying an action" do
let!(:action) { create(:dashboard_action) }
scenario "deletes the action" do
visit admin_dashboard_actions_path
accept_confirm("Are you sure? This action will delete \"#{action.title}\" and can't be undone.") do
click_button "Delete"
end
expect(page).not_to have_content(action.title)
end
scenario "cannot delete actions that have been executed" do
create(:dashboard_executed_action, action: action)
visit admin_dashboard_actions_path
accept_confirm("Are you sure? This action will delete \"#{action.title}\" and can't be undone.") do
click_button "Delete"
end
expect(page).to have_content("Cannot delete record because dependent executed actions exist")
end
end
end