diff --git a/app/controllers/admin/spending_proposals_controller.rb b/app/controllers/admin/spending_proposals_controller.rb index dae595716..631ea341f 100644 --- a/app/controllers/admin/spending_proposals_controller.rb +++ b/app/controllers/admin/spending_proposals_controller.rb @@ -1,10 +1,14 @@ class Admin::SpendingProposalsController < Admin::BaseController has_filters %w{unresolved accepted rejected}, only: :index - before_action :load_spending_proposal, except: [:index] + before_action :load_spending_proposal, except: [:index, :show] def index - @spending_proposals = SpendingProposal.send(@current_filter).order(created_at: :desc).page(params[:page]) + @spending_proposals = SpendingProposal.includes([:geozone]).send(@current_filter).order(created_at: :desc).page(params[:page]) + end + + def show + @spending_proposal = SpendingProposal.includes([:author, :geozone]).find(params[:id]) end def accept diff --git a/app/views/admin/spending_proposals/show.html.erb b/app/views/admin/spending_proposals/show.html.erb new file mode 100644 index 000000000..121f28940 --- /dev/null +++ b/app/views/admin/spending_proposals/show.html.erb @@ -0,0 +1,28 @@ +
<%= text_with_links @spending_proposal.external_url %>
+<% end %> + +<%= t("admin.spending_proposals.show.by") %>: <%= link_to @spending_proposal.author.name, admin_user_path(@spending_proposal.author) %>
+<%= t("admin.spending_proposals.show.geozone") %>: <%= geozone_name(@spending_proposal) %>
+<%= l @spending_proposal.created_at, format: :datetime %>
+ ++ <% unless @spending_proposal.accepted? %> + <%= link_to t("admin.spending_proposals.actions.accept"), + accept_admin_spending_proposal_path(@spending_proposal), + method: :put, + data: { confirm: t("admin.actions.confirm") }, + class: "button radius tiny success no-margin" %> + <% end %> + <% unless @spending_proposal.rejected? %> + <%= link_to t("admin.spending_proposals.actions.reject"), + reject_admin_spending_proposal_path(@spending_proposal), + method: :put, + data: { confirm: t("admin.actions.confirm") }, + class: "button radius tiny warning" %> + <% end %> +
diff --git a/config/locales/admin.en.yml b/config/locales/admin.en.yml index 6b421a6b1..5ace18663 100755 --- a/config/locales/admin.en.yml +++ b/config/locales/admin.en.yml @@ -103,6 +103,9 @@ en: unresolved: "Unresolved" accepted: "Accepted" rejected: "Rejected" + show: + geozone: "Scope" + by: "Sent by" users: index: title: "Hidden users" diff --git a/config/locales/admin.es.yml b/config/locales/admin.es.yml index 9f7099996..f82dd477c 100644 --- a/config/locales/admin.es.yml +++ b/config/locales/admin.es.yml @@ -103,6 +103,9 @@ es: unresolved: "Sin resolver" accepted: "Aceptadas" rejected: "Rechazadas" + show: + geozone: "Ámbito" + by: "Enviada por" users: index: title: "Usuarios bloqueados" diff --git a/config/locales/en.yml b/config/locales/en.yml index c00f4935a..ee6b26d68 100755 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -263,7 +263,7 @@ en: title: "Spending proposal title" description: "Description" external_url: "Link to additional documentation" - geozone: "Area of operation" + geozone: "Scope of operation" submit_buttons: new: Create create: Create diff --git a/config/locales/es.yml b/config/locales/es.yml index 9d0a07980..ae160defa 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -263,7 +263,7 @@ es: title: "Título de la propuesta de gasto" description: "Descripción detallada" external_url: "Enlace a documentación adicional" - geozone: "Nivel de actuación" + geozone: "Ámbito de actuación" submit_buttons: new: Crear create: Crear diff --git a/config/routes.rb b/config/routes.rb index c2b776dec..d10ffefd7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -122,7 +122,7 @@ Rails.application.routes.draw do end end - resources :spending_proposals, only: :index do + resources :spending_proposals, only: [:index, :show] do member do put :accept put :reject diff --git a/spec/features/admin/spending_proposals_spec.rb b/spec/features/admin/spending_proposals_spec.rb index f684bf386..a355c13ec 100644 --- a/spec/features/admin/spending_proposals_spec.rb +++ b/spec/features/admin/spending_proposals_spec.rb @@ -14,7 +14,7 @@ feature 'Admin spending proposals' do expect(page).to have_content(spending_proposal.title) end - scenario 'Accept' do + scenario 'Accept from index' do spending_proposal = create(:spending_proposal) visit admin_spending_proposals_path @@ -28,7 +28,7 @@ feature 'Admin spending proposals' do expect(spending_proposal.reload).to be_accepted end - scenario 'Reject' do + scenario 'Reject from index' do spending_proposal = create(:spending_proposal) visit admin_spending_proposals_path @@ -97,4 +97,44 @@ feature 'Admin spending proposals' do expect(current_url).to include('page=2') end + scenario 'Show' do + spending_proposal = create(:spending_proposal, geozone: create(:geozone)) + visit admin_spending_proposals_path + + click_link spending_proposal.title + + expect(page).to have_content(spending_proposal.title) + expect(page).to have_content(spending_proposal.description) + expect(page).to have_content(spending_proposal.author.name) + expect(page).to have_content(spending_proposal.geozone.name) + end + + scenario 'Accept from show' do + spending_proposal = create(:spending_proposal) + visit admin_spending_proposal_path(spending_proposal) + + click_link 'Accept' + + expect(page).to_not have_content(spending_proposal.title) + + click_link 'Accepted' + expect(page).to have_content(spending_proposal.title) + + expect(spending_proposal.reload).to be_accepted + end + + scenario 'Reject from show' do + spending_proposal = create(:spending_proposal) + visit admin_spending_proposal_path(spending_proposal) + + click_link 'Reject' + + expect(page).to_not have_content(spending_proposal.title) + + click_link('Rejected') + expect(page).to have_content(spending_proposal.title) + + expect(spending_proposal.reload).to be_rejected + end + end