Adds toggle_selection action

This commit is contained in:
kikito
2016-12-28 19:11:59 +01:00
parent 64ca1f18c6
commit d2356c18d0
4 changed files with 110 additions and 6 deletions

View File

@@ -7,15 +7,13 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
only: [:index, :toggle_selection])
before_action :load_budget
before_action :load_investment, only: [:show, :edit, :update]
before_action :load_investment, only: [:show, :edit, :update, :toggle_selection]
before_action :load_ballot, only: [:show, :index]
before_action :load_investments, only: [:index, :toggle_selection]
has_filters %w{valuation_open without_admin managed valuating valuation_finished all}, only: :index
def index
@investments = Budget::Investment.scoped_filter(params, @current_filter)
.order(cached_votes_up: :desc, created_at: :desc)
.page(params[:page])
end
def show
@@ -39,8 +37,19 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
end
end
def toggle_selection
@investment.toggle :selected
@investment.save
end
private
def load_investments
@investments = Budget::Investment.scoped_filter(params, @current_filter)
.order(cached_votes_up: :desc, created_at: :desc)
.page(params[:page])
end
def budget_investment_params
params.require(:budget_investment)
.permit(:title, :description, :external_url, :heading_id, :administrator_id, :tag_list, valuator_ids: [])

View File

@@ -0,0 +1 @@
$("#investments").html('<%= j render("admin/budget_investments/investments") %>');

View File

@@ -1,4 +1,4 @@
<ul class="menu simple clear">
<ul class="menu simple clear" id="filter-subnav">
<li class="sr-only"><%= t("#{i18n_namespace}.filter") %>: </li>
<% @valid_filters.each do |filter| %>

View File

@@ -397,4 +397,98 @@ feature 'Admin budget investments' do
end
context "Selecting" do
let!(:unfeasible_bi) { create(:budget_investment, :unfeasible, budget: @budget, title: "Unfeasible project") }
let!(:feasible_bi) { create(:budget_investment, :feasible, budget: @budget, title: "Feasible project") }
let!(:feasible_vf_bi) { create(:budget_investment, :feasible, :finished, budget: @budget, title: "Feasible, VF project") }
let!(:selected_bi) { create(:budget_investment, :selected, budget: @budget, title: "Selected project") }
scenario "Filtering by valuation and selection" do
visit admin_budget_budget_investments_path(@budget)
within('#filter-subnav') { click_link 'Valuation finished' }
expect(page).to_not have_content(unfeasible_bi.title)
expect(page).to_not have_content(feasible_bi.title)
expect(page).to have_content(feasible_vf_bi.title)
expect(page).to have_content(selected_bi.title)
within('#filter-subnav') { click_link 'Val. fin. Feasible' }
expect(page).to_not have_content(unfeasible_bi.title)
expect(page).to_not have_content(feasible_bi.title)
expect(page).to have_content(feasible_vf_bi.title)
expect(page).to have_content(selected_bi.title)
within('#filter-subnav') { click_link 'Selected' }
expect(page).to_not have_content(unfeasible_bi.title)
expect(page).to_not have_content(feasible_bi.title)
expect(page).to_not have_content(feasible_vf_bi.title)
expect(page).to have_content(selected_bi.title)
end
scenario "Showing the selection buttons", :js do
visit admin_budget_budget_investments_path(@budget)
within('#filter-subnav') { click_link 'All' }
within("#budget_investment_#{unfeasible_bi.id}") do
expect(page).to_not have_link('Select')
expect(page).to_not have_link('Selected')
end
within("#budget_investment_#{feasible_bi.id}") do
expect(page).to_not have_link('Select')
expect(page).to_not have_link('Selected')
end
within("#budget_investment_#{feasible_vf_bi.id}") do
expect(page).to have_link('Select')
expect(page).to_not have_link('Selected')
end
within("#budget_investment_#{selected_bi.id}") do
expect(page).to_not have_link('Select')
expect(page).to have_link('Selected')
end
end
scenario "Selecting an investment", :js do
visit admin_budget_budget_investments_path(@budget)
within('#filter-subnav') { click_link 'All' }
within("#budget_investment_#{feasible_vf_bi.id}") do
click_link('Select')
expect(page).to have_link('Selected')
end
within('#filter-subnav') { click_link 'Selected' }
within("#budget_investment_#{feasible_vf_bi.id}") do
expect(page).to_not have_link('Select')
expect(page).to have_link('Selected')
end
end
scenario "Unselecting an investment", :js do
visit admin_budget_budget_investments_path(@budget)
within('#filter-subnav') { click_link 'Selected' }
expect(page).to have_content('There is 1 investment')
within("#budget_investment_#{selected_bi.id}") do
click_link('Selected')
end
expect(page).to_not have_content(selected_bi.title)
expect(page).to have_content('investments cannot be found')
within('#filter-subnav') { click_link 'All' }
within("#budget_investment_#{selected_bi.id}") do
expect(page).to have_link('Select')
expect(page).to_not have_link('Selected')
end
end
end
end