Add SDG page to update local targets

This commit is contained in:
Senén Rodero Rodríguez
2020-11-25 10:59:55 +01:00
parent eb0f13018c
commit a211937744
9 changed files with 64 additions and 4 deletions

View File

@@ -13,7 +13,11 @@ class SDGManagement::LocalTargets::FormComponent < ApplicationComponent
private
def title
t("sdg_management.local_targets.new.title")
if local_target.persisted?
t("sdg_management.local_targets.edit.title")
else
t("sdg_management.local_targets.new.title")
end
end
def form_url

View File

@@ -31,6 +31,7 @@
<%= local_target.title %>
</td>
<td headers="<%= header_id(local_target) %> local-target-actions">
<%= actions(local_target) %>
</td>
</tr>
<% end %>

View File

@@ -20,4 +20,11 @@ class SDGManagement::LocalTargets::IndexComponent < ApplicationComponent
def header_id(object)
"#{dom_id(object)}_header"
end
def actions(local_target)
render Admin::TableActionsComponent.new(
local_target,
actions: [:edit],
edit_path: edit_sdg_management_local_target_path(local_target))
end
end

View File

@@ -21,6 +21,20 @@ class SDGManagement::LocalTargetsController < SDGManagement::BaseController
end
end
def edit
@local_target = LocalTarget.find(params[:id])
end
def update
@local_target = LocalTarget.find(params[:id])
if @local_target.update(local_target_params)
redirect_to sdg_management_local_targets_path, notice: t("sdg_management.local_targets.update.notice")
else
render :edit
end
end
private
def local_target_params

View File

@@ -0,0 +1 @@
<%= render SDGManagement::LocalTargets::FormComponent.new(@local_target) %>

View File

@@ -7,6 +7,8 @@ en:
local_targets:
create:
notice: "Local target created successfully"
edit:
title: "Edit local target"
form:
code: "Code must start with the selected target code followed by a dot"
description: "This description will be shown as help to users."
@@ -14,3 +16,5 @@ en:
new: "Create local target"
new:
title: "New local target"
update:
notice: "Local target updated successfully"

View File

@@ -7,6 +7,8 @@ es:
local_targets:
create:
notice: "Meta localizada creada correctamente"
edit:
title: "Editar meta localizada"
form:
code: "El código debe comenzar por el código de la meta seleccionada seguida de un '.'"
description: "Este texto ser mostrará como ayuda para los usuarios."
@@ -14,3 +16,5 @@ es:
new: "Crear meta localizada"
new:
title: "Nueva meta localizada"
update:
notice: "Meta localizada asctualizada correctamente"

View File

@@ -3,5 +3,5 @@ namespace :sdg_management do
resources :goals, only: [:index]
resources :targets, only: [:index]
resources :local_targets, only: [:index, :new, :create]
resources :local_targets, only: [:index, :new, :create, :edit, :update]
end

View File

@@ -14,8 +14,10 @@ describe "Local Targets", :js do
click_link "Local Targets"
expect(page).to have_title "SDG content - Local Targets"
within("table") { expect(page).to have_content "Affordable food for everyone" }
expect(page).to have_link "Create local target", href: new_sdg_management_local_target_path
within("table tr", text: "Affordable food") do
expect(page).to have_link "Edit"
end
expect(page).to have_link "Create local target"
end
scenario "Show local targets grouped by target" do
@@ -59,4 +61,27 @@ describe "Local Targets", :js do
expect(page).to have_select("Target", selected: code_and_title)
end
end
describe "Update" do
let!(:local_target) { create(:sdg_local_target, code: "1.1.1") }
scenario "Shows succesful notice when form is fullfilled correctly" do
visit edit_sdg_management_local_target_path(local_target)
fill_in "Title", with: "Local target title update"
click_button "Update local target"
expect(page).to have_content("Local target updated successfully")
expect(page).to have_content("Local target title update")
end
scenario "Shows form errors when changes are not valid" do
visit edit_sdg_management_local_target_path(local_target)
fill_in "Title", with: ""
click_button "Update local target"
expect(page).to have_content("1 error prevented this local target from being saved.")
end
end
end