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

View File

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

View File

@@ -20,4 +20,11 @@ class SDGManagement::LocalTargets::IndexComponent < ApplicationComponent
def header_id(object) def header_id(object)
"#{dom_id(object)}_header" "#{dom_id(object)}_header"
end 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 end

View File

@@ -21,6 +21,20 @@ class SDGManagement::LocalTargetsController < SDGManagement::BaseController
end end
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 private
def local_target_params 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: local_targets:
create: create:
notice: "Local target created successfully" notice: "Local target created successfully"
edit:
title: "Edit local target"
form: form:
code: "Code must start with the selected target code followed by a dot" code: "Code must start with the selected target code followed by a dot"
description: "This description will be shown as help to users." description: "This description will be shown as help to users."
@@ -14,3 +16,5 @@ en:
new: "Create local target" new: "Create local target"
new: new:
title: "New local target" title: "New local target"
update:
notice: "Local target updated successfully"

View File

@@ -7,6 +7,8 @@ es:
local_targets: local_targets:
create: create:
notice: "Meta localizada creada correctamente" notice: "Meta localizada creada correctamente"
edit:
title: "Editar meta localizada"
form: form:
code: "El código debe comenzar por el código de la meta seleccionada seguida de un '.'" 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." description: "Este texto ser mostrará como ayuda para los usuarios."
@@ -14,3 +16,5 @@ es:
new: "Crear meta localizada" new: "Crear meta localizada"
new: new:
title: "Nueva meta localizada" 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 :goals, only: [:index]
resources :targets, only: [:index] resources :targets, only: [:index]
resources :local_targets, only: [:index, :new, :create] resources :local_targets, only: [:index, :new, :create, :edit, :update]
end end

View File

@@ -14,8 +14,10 @@ describe "Local Targets", :js do
click_link "Local Targets" click_link "Local Targets"
expect(page).to have_title "SDG content - Local Targets" expect(page).to have_title "SDG content - Local Targets"
within("table") { expect(page).to have_content "Affordable food for everyone" } within("table tr", text: "Affordable food") do
expect(page).to have_link "Create local target", href: new_sdg_management_local_target_path expect(page).to have_link "Edit"
end
expect(page).to have_link "Create local target"
end end
scenario "Show local targets grouped by target" do 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) expect(page).to have_select("Target", selected: code_and_title)
end end
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 end