diff --git a/decidim-admin/app/packs/src/decidim/admin/css_preview.js b/decidim-admin/app/packs/src/decidim/admin/css_preview.js index 350c8369aea8..fbf6cebfef2a 100644 --- a/decidim-admin/app/packs/src/decidim/admin/css_preview.js +++ b/decidim-admin/app/packs/src/decidim/admin/css_preview.js @@ -30,7 +30,9 @@ window.addEventListener("DOMContentLoaded", () => { updateRules.forEach((rule) => { const [target, property, value] = rule.split(":"); - document.querySelector(target).style[property.trim()] = value.trim(); + if (target !== "") { + document.querySelector(target).style[property.trim()] = value.trim(); + } }); }) }) diff --git a/decidim-proposals/spec/shared/manage_proposals_examples.rb b/decidim-proposals/spec/shared/manage_proposals_examples.rb index dd874763b33b..8207a8b0e945 100644 --- a/decidim-proposals/spec/shared/manage_proposals_examples.rb +++ b/decidim-proposals/spec/shared/manage_proposals_examples.rb @@ -65,6 +65,8 @@ end context "when process is not related to any scope" do + let(:attributes) { attributes_for(:proposal, component: current_component) } + it "can be related to a scope" do click_on "New proposal" @@ -73,12 +75,12 @@ end end - it "creates a new proposal", :slow do + it "creates a new proposal", versioning: true do click_on "New proposal" within ".new_proposal" do - fill_in_i18n :proposal_title, "#proposal-title-tabs", en: "Make decidim great again" - fill_in_i18n_editor :proposal_body, "#proposal-body-tabs", en: "Decidim is great but it can be better" + fill_in_i18n :proposal_title, "#proposal-title-tabs", **attributes[:title].except("machine_translations") + fill_in_i18n_editor :proposal_body, "#proposal-body-tabs", **attributes[:body].except("machine_translations") select translated(category.name), from: :proposal_category_id select translated(scope.name), from: :proposal_scope_id find("*[type=submit]").click @@ -89,11 +91,13 @@ within "table" do proposal = Decidim::Proposals::Proposal.last - expect(page).to have_content("Make decidim great again") - expect(translated(proposal.body)).to eq("

Decidim is great but it can be better

") + expect(page).to have_content(translated(attributes[:title])) + expect(translated(proposal.body)).to eq("

#{strip_tags(translated(attributes[:body]))}

") expect(proposal.category).to eq(category) expect(proposal.scope).to eq(scope) end + visit decidim_admin.root_path + expect(page).to have_content("created the #{translated(attributes[:title])} proposal") end end diff --git a/decidim-proposals/spec/system/admin/admin_edits_proposal_spec.rb b/decidim-proposals/spec/system/admin/admin_edits_proposal_spec.rb index ea70eea72f0b..cd2243ee1eda 100644 --- a/decidim-proposals/spec/system/admin/admin_edits_proposal_spec.rb +++ b/decidim-proposals/spec/system/admin/admin_edits_proposal_spec.rb @@ -24,6 +24,7 @@ describe "editing an official proposal" do let(:new_title) { "This is my proposal new title" } let(:new_body) { "This is my proposal new body" } + let(:attributes) { attributes_for(:proposal, component: current_component) } it "can be updated" do visit_component_admin @@ -43,6 +44,21 @@ end end + it "can can check logs" do + visit_component_admin + + find("a.action-icon--edit-proposal").click + expect(page).to have_content "Update proposal" + + fill_in_i18n :proposal_title, "#proposal-title-tabs", **attributes[:title].except("machine_translations") + fill_in_i18n_editor :proposal_body, "#proposal-body-tabs", **attributes[:body].except("machine_translations") + click_on "Update" + expect(page).to have_admin_callout("successfully") + + visit decidim_admin.root_path + expect(page).to have_content("updated the #{translated(attributes[:title])} official proposal") + end + context "when the proposal has some votes" do before do create(:proposal_vote, proposal:) diff --git a/decidim-proposals/spec/system/admin/admin_manages_proposal_states_spec.rb b/decidim-proposals/spec/system/admin/admin_manages_proposal_states_spec.rb index 93dfd204cd47..64c7c2946b29 100644 --- a/decidim-proposals/spec/system/admin/admin_manages_proposal_states_spec.rb +++ b/decidim-proposals/spec/system/admin/admin_manages_proposal_states_spec.rb @@ -32,6 +32,8 @@ end describe "creating a proposal state" do + let(:attributes) { attributes_for(:proposal_state) } + before do click_on "Statuses" click_on "New status" @@ -40,21 +42,8 @@ it "creates a new proposal state" do expect(Decidim::Proposals::ProposalState.find_by(token: "custom")).to be_nil within ".new_proposal_state" do - fill_in_i18n( - :proposal_state_title, - "#proposal_state-title-tabs", - en: "Custom state", - es: "Estado personalizado", - ca: "Estat personalitzat" - ) - - fill_in_i18n( - :proposal_state_announcement_title, - "#proposal_state-announcement_title-tabs", - en: "A longer announcement", - es: "Anuncio más largo", - ca: "Anunci més llarg" - ) + fill_in_i18n(:proposal_state_title, "#proposal_state-title-tabs", **attributes[:title].except("machine_translations")) + fill_in_i18n(:proposal_state_announcement_title, "#proposal_state-announcement_title-tabs", **attributes[:announcement_title].except("machine_translations")) within ".proposal-status__color" do find_by_id("proposal_state_text_color_9a6700").click @@ -67,14 +56,17 @@ within "table" do expect(page).to have_css(".label", style: "background-color: #FFFCE5; color: #9A6700; border-color: #9A6700;") - expect(page).to have_content("Custom state") + expect(page).to have_content(translated(attributes[:title])) end - state = Decidim::Proposals::ProposalState.find_by(token: "custom_state") + state = Decidim::Proposals::ProposalState.find_by(token: "script_alert_proposal_state_title_script_not_answered") expect(state).to be_present - expect(translated(state.title)).to eq("Custom state") - expect(translated(state.announcement_title)).to eq("A longer announcement") + expect(translated(state.title)).to eq(translated(attributes[:title])) + expect(translated(state.announcement_title)).to eq(translated(attributes[:announcement_title])) expect(state.css_style).to eq("background-color: #FFFCE5; color: #9A6700; border-color: #9A6700;") + + visit decidim_admin.root_path + expect(page).to have_content("created #{translated(attributes[:title])} in") end it "updates the label and announcement previews" do @@ -124,6 +116,7 @@ } end let!(:state) { create(:proposal_state, component: current_component, **state_params) } + let(:attributes) { attributes_for(:proposal_state) } before do click_on "Statuses" @@ -139,21 +132,8 @@ end within ".edit_proposal_state" do - fill_in_i18n( - :proposal_state_title, - "#proposal_state-title-tabs", - en: "Custom state", - es: "Estado personalizado", - ca: "Estat personalitzat" - ) - - fill_in_i18n( - :proposal_state_announcement_title, - "#proposal_state-announcement_title-tabs", - en: "A longer announcement", - es: "Anuncio más largo", - ca: "Anunci més llarg" - ) + fill_in_i18n(:proposal_state_title, "#proposal_state-title-tabs", **attributes[:title].except("machine_translations")) + fill_in_i18n(:proposal_state_announcement_title, "#proposal_state-announcement_title-tabs", **attributes[:announcement_title].except("machine_translations")) within ".proposal-status__color" do find_by_id("proposal_state_text_color_9a6700").click @@ -161,17 +141,21 @@ find("*[type=submit]").click end + expect(page).to have_admin_callout("successfully") within "table" do expect(page).to have_css(".label", style: "background-color: #FFFCE5; color: #9A6700; border-color: #9A6700;") - expect(page).to have_content("Custom state") + expect(page).to have_content(translated(attributes[:title])) end state = Decidim::Proposals::ProposalState.find_by(token: "editable_state") - expect(translated(state.title)).to eq("Custom state") - expect(translated(state.announcement_title)).to eq("A longer announcement") + expect(translated(state.title)).to eq(translated(attributes[:title])) + expect(translated(state.announcement_title)).to eq(translated(attributes[:announcement_title])) expect(state.css_style).to eq("background-color: #FFFCE5; color: #9A6700; border-color: #9A6700;") + + visit decidim_admin.root_path + expect(page).to have_content("updated #{translated(attributes[:title])} in") end it "updates the label and announcement previews" do @@ -180,21 +164,8 @@ end within ".edit_proposal_state" do - fill_in_i18n( - :proposal_state_title, - "#proposal_state-title-tabs", - en: "Custom state", - es: "Estado personalizado", - ca: "Estat personalitzat" - ) - - fill_in_i18n( - :proposal_state_announcement_title, - "#proposal_state-announcement_title-tabs", - en: "A longer announcement", - es: "Anuncio más largo", - ca: "Anunci més llarg" - ) + fill_in_i18n(:proposal_state_title, "#proposal_state-title-tabs", **attributes[:title].except("machine_translations")) + fill_in_i18n(:proposal_state_announcement_title, "#proposal_state-announcement_title-tabs", **attributes[:announcement_title].except("machine_translations")) within ".proposal-status__color" do find_by_id("proposal_state_text_color_9a6700").click @@ -202,14 +173,20 @@ expect(page).to have_css("[data-label-preview]", style: "background-color: rgb(255, 252, 229); color: rgb(154, 103, 0);") within "[data-label-preview]" do - expect(page).to have_content("Estat personalitzat") + expect(page).to have_content(translated(attributes[:title])) end expect(page).to have_css("[data-announcement-preview]", style: "background-color: rgb(255, 252, 229); color: rgb(154, 103, 0); border-color: #9A6700/var(--tw-border-opacity);") within "[data-announcement-preview]" do - expect(page).to have_content("Anunci més llarg") + # text_copy,js implements a change event that updates the label. The fill_in_i18n is "changing" the fields, the "ca" being the last one that one being changed + expect(page).to have_content(translated(attributes[:announcement_title], locale: "ca")) end + find("*[type=submit]").click end + expect(page).to have_admin_callout("successfully") + + visit decidim_admin.root_path + expect(page).to have_content("updated #{translated(attributes[:title])} in") end end diff --git a/decidim-proposals/spec/system/admin/admin_manages_proposal_valuators_spec.rb b/decidim-proposals/spec/system/admin/admin_manages_proposal_valuators_spec.rb index 3fd4906d869a..a1b53649b5a3 100644 --- a/decidim-proposals/spec/system/admin/admin_manages_proposal_valuators_spec.rb +++ b/decidim-proposals/spec/system/admin/admin_manages_proposal_valuators_spec.rb @@ -52,6 +52,11 @@ expect(page).to have_css("td.valuators-count", text: 1) end end + + it "displays log" do + visit decidim_admin.root_path + expect(page).to have_content("assigned the #{translated(proposal.title)} proposal to a valuator") + end end end diff --git a/decidim-proposals/spec/system/admin/admin_views_admin_logs_spec.rb b/decidim-proposals/spec/system/admin/admin_views_admin_logs_spec.rb deleted file mode 100644 index 85c527b04738..000000000000 --- a/decidim-proposals/spec/system/admin/admin_views_admin_logs_spec.rb +++ /dev/null @@ -1,142 +0,0 @@ -# frozen_string_literal: true - -require "spec_helper" - -describe "Admin views admin logs" do - let(:manifest_name) { "proposals" } - let(:address) { "Some address" } - let(:latitude) { 40.1234 } - let(:longitude) { 2.1234 } - - include_context "when managing a component as an admin" - - describe "proposals" do - before do - stub_geocoding(address, [latitude, longitude]) - current_component.update!( - step_settings: { - current_component.participatory_space.active_step.id => { - creation_enabled: true - } - } - ) - visit_component_admin - end - - let(:attributes) { attributes_for(:proposal, component: current_component) } - - it "creates a new proposal", versioning: true do - click_on "New proposal" - - within ".new_proposal" do - fill_in_i18n :proposal_title, "#proposal-title-tabs", **attributes[:title].except("machine_translations") - fill_in_i18n_editor :proposal_body, "#proposal-body-tabs", **attributes[:body].except("machine_translations") - find("*[type=submit]").click - end - - expect(page).to have_admin_callout("successfully") - - visit decidim_admin.root_path - expect { accept_alert }.to raise_error(Capybara::ModalNotFound) - end - end - - describe "proposal states" do - let(:attributes) { attributes_for(:proposal_state) } - let!(:state) { create(:proposal_state, component: current_component) } - - before do - visit_component_admin - click_on "Statuses" - end - - it "creates a new proposal state", versioning: true do - click_on "New status" - - within ".new_proposal_state" do - fill_in_i18n(:proposal_state_title, "#proposal_state-title-tabs", **attributes[:title].except("machine_translations")) - fill_in_i18n(:proposal_state_announcement_title, "#proposal_state-announcement_title-tabs", **attributes[:announcement_title].except("machine_translations")) - - within ".proposal-status__color" do - find_by_id("proposal_state_text_color_9a6700").click - end - - find("*[type=submit]").click - end - - expect(page).to have_admin_callout("successfully") - - visit decidim_admin.root_path - expect { accept_alert }.to raise_error(Capybara::ModalNotFound) - end - - it "updates a proposal state", versioning: true do - within "tr", text: translated(state.title) do - click_on "Edit" - end - - within ".edit_proposal_state" do - fill_in_i18n(:proposal_state_title, "#proposal_state-title-tabs", **attributes[:title].except("machine_translations")) - fill_in_i18n(:proposal_state_announcement_title, "#proposal_state-announcement_title-tabs", **attributes[:announcement_title].except("machine_translations")) - - within ".proposal-status__color" do - find_by_id("proposal_state_text_color_9a6700").click - end - - find("*[type=submit]").click - end - expect(page).to have_admin_callout("successfully") - visit decidim_admin.root_path - expect { accept_alert }.to raise_error(Capybara::ModalNotFound) - end - end - - describe "proposal notes" do - let(:attributes) { attributes_for(:proposal_note) } - let!(:proposal) { create(:proposal, component: current_component) } - - it "creates a proposal note", versioning: true do - visit current_path - within "tr", text: translated(proposal.title) do - click_on "Answer proposal" - end - click_on "Private notes" - - within ".new_proposal_note" do - fill_in :proposal_note_body, with: attributes[:body] - - find("*[type=submit]").click - end - - expect(page).to have_admin_callout("successfully") - visit decidim_admin.root_path - expect { accept_alert }.to raise_error(Capybara::ModalNotFound) - end - end - - describe "valuators" do - let!(:proposal) { create(:proposal, component: current_component) } - let!(:valuator) { create(:user, organization:) } - let!(:valuator_role) { create(:participatory_process_user_role, role: :valuator, user: valuator, participatory_process:) } - - before do - visit current_path - - within "tr", text: translated(proposal.title) do - page.first(".js-proposal-list-check").set(true) - end - - click_on "Actions" - click_on "Assign to valuator" - within "#js-form-assign-proposals-to-valuator" do - select valuator.name, from: :valuator_role_id - click_on(id: "js-submit-assign-proposals-to-valuator") - end - end - - it "displays the log", versioning: true do - visit decidim_admin.root_path - expect { accept_alert }.to raise_error(Capybara::ModalNotFound) - end - end -end diff --git a/decidim-proposals/spec/system/admin/index_proposal_notes_spec.rb b/decidim-proposals/spec/system/admin/index_proposal_notes_spec.rb index 6a98eac44638..8426b8017394 100644 --- a/decidim-proposals/spec/system/admin/index_proposal_notes_spec.rb +++ b/decidim-proposals/spec/system/admin/index_proposal_notes_spec.rb @@ -9,6 +9,7 @@ let(:manifest_name) { "proposals" } let(:proposal) { create(:proposal, component:) } let(:participatory_space) { component.participatory_space } + let(:attributes) { attributes_for(:proposal_note) } let(:body) { "New awesome body" } let(:proposal_notes_count) { 5 } @@ -39,9 +40,9 @@ end context "when the form has a text inside body" do - it "creates a proposal note", :slow do + it "creates a proposal note", versioning: true do within ".new_proposal_note" do - fill_in :proposal_note_body, with: body + fill_in :proposal_note_body, with: attributes[:body] find("*[type=submit]").click end @@ -50,8 +51,11 @@ click_on "Private notes" within ".component__show_notes-grid .comment:last-child" do - expect(page).to have_content("New awesome body") + expect(page).to have_content(decidim_sanitize_translated(attributes[:body])) end + + visit decidim_admin.root_path + expect(page).to have_content("left a private note on the #{translated(proposal.title)} proposal") end end diff --git a/decidim-sortitions/spec/shared/manage_sortitions_examples.rb b/decidim-sortitions/spec/shared/manage_sortitions_examples.rb index 1d91844dbdf4..3f74a180a27d 100644 --- a/decidim-sortitions/spec/shared/manage_sortitions_examples.rb +++ b/decidim-sortitions/spec/shared/manage_sortitions_examples.rb @@ -56,37 +56,20 @@ let(:sortition_dice) { Faker::Number.between(from: 1, to: 6) } let(:sortition_target_items) { Faker::Number.between(from: 1, to: 10) } let!(:proposal) { create(:proposal, component: proposal_component) } + let(:attributes) { attributes_for(:sortition, component: current_component) } it_behaves_like "having a rich text editor for field", ".tabs-content[data-tabs-content='sortition-additional_info-tabs']", "full" it_behaves_like "having a rich text editor for field", ".tabs-content[data-tabs-content='sortition-witnesses-tabs']", "content" - it "shows the sortition details" do + it "shows the sortition details", versioning: true do within ".new_sortition" do fill_in :sortition_dice, with: sortition_dice fill_in :sortition_target_items, with: sortition_target_items select translated(proposal_component.name), from: :sortition_decidim_proposals_component_id - fill_in_i18n_editor( - :sortition_witnesses, - "#sortition-witnesses-tabs", - en: "Witnesses", - es: "Testigos", - ca: "Testimonis" - ) - fill_in_i18n_editor( - :sortition_additional_info, - "#sortition-additional_info-tabs", - en: "additional info", - es: "Información adicional", - ca: "Informació adicional" - ) - - fill_in_i18n( - :sortition_title, - "#sortition-title-tabs", - en: "Title", - es: "Título", - ca: "Títol" - ) + + fill_in_i18n_editor(:sortition_witnesses, "#sortition-witnesses-tabs", **attributes[:witnesses].except("machine_translations")) + fill_in_i18n_editor(:sortition_additional_info, "#sortition-additional_info-tabs", **attributes[:additional_info].except("machine_translations")) + fill_in_i18n(:sortition_title, "#sortition-title-tabs", **attributes[:title].except("machine_translations")) accept_confirm { find("*[type=submit]").click } end @@ -114,6 +97,9 @@ expect(page).to have_content(translated(p.title)) end end + + visit decidim_admin.root_path + expect(page).to have_content("created the #{translated(attributes[:title])} sortition") end end end diff --git a/decidim-sortitions/spec/shared/update_sortitions_examples.rb b/decidim-sortitions/spec/shared/update_sortitions_examples.rb index dfdd852d0f32..05f063e0024f 100644 --- a/decidim-sortitions/spec/shared/update_sortitions_examples.rb +++ b/decidim-sortitions/spec/shared/update_sortitions_examples.rb @@ -3,6 +3,7 @@ shared_examples "update sortitions" do describe "update sortition data" do let!(:sortition) { create(:sortition, component: current_component) } + let(:attributes) { attributes_for(:sortition, component: current_component) } before do visit_component_admin @@ -24,28 +25,18 @@ end context "when updates a sortition" do - it "Redirects to sortitions view" do + it "Redirects to sortitions view", versioning: true do within ".edit_sortition" do - fill_in_i18n_editor( - :sortition_additional_info, - "#sortition-additional_info-tabs", - en: "Additional info", - es: "Información adicional", - ca: "Informació adicional" - ) - - fill_in_i18n( - :sortition_title, - "#sortition-title-tabs", - en: "Title", - es: "Título", - ca: "Títol" - ) + fill_in_i18n_editor(:sortition_additional_info, "#sortition-additional_info-tabs", **attributes[:additional_info].except("machine_translations")) + fill_in_i18n(:sortition_title, "#sortition-title-tabs", **attributes[:title].except("machine_translations")) find("*[type=submit]").click end expect(page).to have_admin_callout("successfully") + + visit decidim_admin.root_path + expect(page).to have_content("updated the #{translated(attributes[:title])} sortition") end end end diff --git a/decidim-templates/spec/system/admin/admin_manages_proposal_answer_templates_spec.rb b/decidim-templates/spec/system/admin/admin_manages_proposal_answer_templates_spec.rb index f10027341afa..063e7781794a 100644 --- a/decidim-templates/spec/system/admin/admin_manages_proposal_answer_templates_spec.rb +++ b/decidim-templates/spec/system/admin/admin_manages_proposal_answer_templates_spec.rb @@ -12,6 +12,7 @@ let!(:templatable) { create(:proposal_component, name: { en: description }, participatory_space:) } let(:proposal_state_id) { Decidim::Proposals::ProposalState.find_by(component: templatable, token:).id } let!(:template) { create(:template, target: :proposal_answer, organization:, templatable:, field_values:) } + let(:attributes) { attributes_for(:template, target: :proposal_answer, organization:, templatable:, field_values:) } before do switch_to_host(organization.host) @@ -41,26 +42,14 @@ end end - it "creates a new template" do + it "creates a new template", versioning: true do within ".new_proposal_answer_template" do select "Participatory process: A participatory process > A component", from: :proposal_answer_template_component_constraint end within ".new_proposal_answer_template" do - fill_in_i18n( - :proposal_answer_template_name, - "#proposal_answer_template-name-tabs", - en: "My template", - es: "Mi plantilla", - ca: "La meva plantilla" - ) - fill_in_i18n_editor( - :proposal_answer_template_description, - "#proposal_answer_template-description-tabs", - en: "Description", - es: "Descripción", - ca: "Descripció" - ) + fill_in_i18n(:proposal_answer_template_name, "#proposal_answer_template-name-tabs", **attributes[:name].except("machine_translations")) + fill_in_i18n_editor(:proposal_answer_template_description, "#proposal_answer_template-description-tabs", **attributes[:description].except("machine_translations")) choose "Accepted" @@ -71,8 +60,12 @@ expect(page).to have_current_path decidim_admin_templates.proposal_answer_templates_path within ".table-list" do expect(page).to have_i18n_content("Participatory process: A participatory process > A component") - expect(page).to have_content("My template") + expect(page).to have_content(translated(attributes[:name])) end + expect(page).to have_admin_callout("successfully") + + visit decidim_admin.root_path + expect(page).to have_content("created the #{translated(attributes[:name])} questionnaire template") end end @@ -82,14 +75,9 @@ click_on translated(template.name) end - it "updates a template" do - fill_in_i18n( - :proposal_answer_template_name, - "#proposal_answer_template-name-tabs", - en: "My new name", - es: "Mi nuevo nombre", - ca: "El meu nou nom" - ) + it "updates a template", versioning: true do + fill_in_i18n(:proposal_answer_template_name, "#proposal_answer_template-name-tabs", **attributes[:name].except("machine_translations")) + fill_in_i18n_editor(:proposal_answer_template_description, "#proposal_answer_template-description-tabs", **attributes[:description].except("machine_translations")) within ".edit_proposal_answer_template" do page.find("*[type=submit]").click @@ -99,8 +87,12 @@ expect(page).to have_current_path decidim_admin_templates.proposal_answer_templates_path within ".table-list" do expect(page).to have_i18n_content("Participatory process: A participatory process > A component") - expect(page).to have_content("My new name") + expect(page).to have_content(translated(attributes[:name])) end + expect(page).to have_admin_callout("successfully") + + visit decidim_admin.root_path + expect(page).to have_content("updated the #{translated(attributes[:name])} questionnaire template") end end diff --git a/decidim-templates/spec/system/admin/admin_views_admin_logs_spec.rb b/decidim-templates/spec/system/admin/admin_views_admin_logs_spec.rb deleted file mode 100644 index 8eece7314ab4..000000000000 --- a/decidim-templates/spec/system/admin/admin_views_admin_logs_spec.rb +++ /dev/null @@ -1,59 +0,0 @@ -# frozen_string_literal: true - -require "spec_helper" - -describe "Admin views admin logs" do - let!(:organization) { create(:organization) } - let!(:user) { create(:user, :admin, :confirmed, organization:) } - let(:participatory_space) { create(:participatory_process, title: { en: "A participatory process" }, organization:) } - - before do - switch_to_host(organization.host) - login_as user, scope: :user - end - - describe "proposal templates" do - let!(:templatable) { create(:proposal_component, name: { en: "A component" }, participatory_space:) } - let(:field_values) { { proposal_state_id: } } - let(:proposal_state_id) { Decidim::Proposals::ProposalState.find_by(component: templatable, token: "rejected").id } - let!(:template) { create(:template, target: :proposal_answer, organization:, templatable:, field_values:) } - let(:attributes) { attributes_for(:template, target: :proposal_answer, organization:, templatable:, field_values:) } - - before do - visit decidim_admin_templates.proposal_answer_templates_path - end - - it "creates a new template", versioning: true do - click_on "New template" - within ".new_proposal_answer_template" do - select "Participatory process: A participatory process > A component", from: :proposal_answer_template_component_constraint - fill_in_i18n(:proposal_answer_template_name, "#proposal_answer_template-name-tabs", **attributes[:name].except("machine_translations")) - fill_in_i18n_editor(:proposal_answer_template_description, "#proposal_answer_template-description-tabs", **attributes[:description].except("machine_translations")) - - choose "Accepted" - - page.find("*[type=submit]").click - end - - expect(page).to have_admin_callout("successfully") - visit decidim_admin.root_path - expect { accept_alert }.to raise_error(Capybara::ModalNotFound) - end - - it "updates a template", versioning: true do - within "tr", text: translated(template.name) do - click_on "Edit" - end - fill_in_i18n(:proposal_answer_template_name, "#proposal_answer_template-name-tabs", **attributes[:name].except("machine_translations")) - fill_in_i18n_editor(:proposal_answer_template_description, "#proposal_answer_template-description-tabs", **attributes[:description].except("machine_translations")) - - within ".edit_proposal_answer_template" do - page.find("*[type=submit]").click - end - - expect(page).to have_admin_callout("successfully") - visit decidim_admin.root_path - expect { accept_alert }.to raise_error(Capybara::ModalNotFound) - end - end -end