diff --git a/app/controllers/sdg_management/relations_controller.rb b/app/controllers/sdg_management/relations_controller.rb index 697def9c6..fb4b8a899 100644 --- a/app/controllers/sdg_management/relations_controller.rb +++ b/app/controllers/sdg_management/relations_controller.rb @@ -23,7 +23,7 @@ class SDGManagement::RelationsController < SDGManagement::BaseController def update @record.sdg_target_list = params[@record.class.table_name.singularize][:sdg_target_list] - redirect_to action: :index + redirect_to({ action: :index }, notice: update_notice) end private @@ -43,4 +43,13 @@ class SDGManagement::RelationsController < SDGManagement::BaseController check_feature_flag(process_name) raise FeatureDisabled, process_name unless Setting["sdg.process.#{process_name}"] end + + def update_notice + if @record.sdg_review.present? + t("sdg_management.relations.update.notice", relatable: relatable_class.model_name.human) + else + @record.create_sdg_review! + t("sdg_management.relations.update_and_review.notice", relatable: relatable_class.model_name.human) + end + end end diff --git a/config/locales/en/sdg_management.yml b/config/locales/en/sdg_management.yml index d3cdef6a5..bc2c2f62a 100644 --- a/config/locales/en/sdg_management.yml +++ b/config/locales/en/sdg_management.yml @@ -39,3 +39,7 @@ en: all: "All" pending_sdg_review: "Pending" sdg_reviewed: "Marked as reviewed" + update: + notice: "%{relatable} updated successfully" + update_and_review: + notice: "%{relatable} updated successfully and marked as reviewed" diff --git a/config/locales/es/sdg_management.yml b/config/locales/es/sdg_management.yml index 11162fcb8..5460bacff 100644 --- a/config/locales/es/sdg_management.yml +++ b/config/locales/es/sdg_management.yml @@ -39,3 +39,7 @@ es: all: "Todos" pending_sdg_review: "Pendientes" sdg_reviewed: "Marcados como revisados" + update: + notice: "%{relatable} actualizado correctamente" + update_and_review: + notice: "%{relatable} actualizado correctamente y marcado como revisado" diff --git a/spec/system/sdg_management/relations_spec.rb b/spec/system/sdg_management/relations_spec.rb index b79aef80a..e51aa972c 100644 --- a/spec/system/sdg_management/relations_spec.rb +++ b/spec/system/sdg_management/relations_spec.rb @@ -190,17 +190,39 @@ describe "SDG Relations", :js do end describe "Edit" do - scenario "allows changing the targets" do + scenario "allows changing the targets and marks the resource as reviewed" do process = create(:legislation_process, title: "SDG process") process.sdg_targets = [SDG::Target["3.3"]] visit sdg_management_edit_legislation_process_path(process) - fill_in "Targets", with: "1.2, 2.1" + fill_in "Targets", with: "1.2, 2.1", fill_options: { clear: :backspace } click_button "Update Process" + expect(page).to have_content "Process updated successfully and marked as reviewed" + + click_link "Marked as reviewed" + within("tr", text: "SDG process") do expect(page).to have_css "td", exact_text: "1.2, 2.1" end end + + scenario "does not show the review notice when resource was already reviewed" do + debate = create(:sdg_review, relatable: create(:debate, title: "SDG debate")).relatable + debate.sdg_targets = [SDG::Target["3.3"]] + + visit sdg_management_edit_debate_path(debate, filter: "sdg_reviewed") + fill_in "Targets", with: "1.2, 2.1", fill_options: { clear: :backspace } + click_button "Update Debate" + + expect(page).not_to have_content "Debate updated successfully and marked as reviewed" + expect(page).to have_content "Debate updated successfully" + + click_link "Marked as reviewed" + + within("tr", text: "SDG debate") do + expect(page).to have_css "td", exact_text: "1.2, 2.1" + end + end end end