Remove not selected proposals from other lists

This commit is contained in:
Julian Herrero
2019-05-24 12:38:31 +02:00
parent 6beb11f0a9
commit a852696eeb
4 changed files with 37 additions and 22 deletions

View File

@@ -142,7 +142,11 @@ class ProposalsController < ApplicationController
end
def load_selected
@resources = @resources.selected if params[:selected].present?
if params[:selected].present?
@resources = @resources.selected
else
@resources = @resources.not_selected
end
end
def load_featured

View File

@@ -75,6 +75,7 @@ class Proposal < ApplicationRecord
scope :unsuccessful, -> { where("cached_votes_up < ?", Proposal.votes_needed_for_success) }
scope :public_for_api, -> { all }
scope :selected, -> { where(selected: true) }
scope :not_selected, -> { where(selected: false) }
scope :not_supported_by_user, ->(user) { where.not(id: user.find_voted_items(votable_type: "Proposal").compact.map(&:id)) }
scope :published, -> { where.not(published_at: nil) }
scope :draft, -> { where(published_at: nil) }

View File

@@ -118,25 +118,6 @@ feature "Proposals" do
end
end
context "Index" do
scenario "Lists selected proposals" do
selected_proposal = create(:proposal, :selected)
unselected_proposal = create(:proposal)
visit proposals_path
expect(page).to have_selector("#proposals .proposal", count: 2)
expect(page).to have_content selected_proposal.title
expect(page).to have_content unselected_proposal.title
click_link "Selected proposals"
expect(page).to have_selector("#proposals .proposal", count: 1)
expect(page).to have_content selected_proposal.title
expect(page).not_to have_content unselected_proposal.title
end
end
scenario "Show" do
proposal = create(:proposal)
@@ -954,6 +935,28 @@ feature "Proposals" do
end
context "Selected Proposals" do
let!(:selected_proposal) { create(:proposal, :selected) }
let!(:not_selected_proposal) { create(:proposal) }
scenario "do not show in index by default" do
visit proposals_path
expect(page).to have_selector("#proposals .proposal", count: 1)
expect(page).to have_content not_selected_proposal.title
expect(page).not_to have_content selected_proposal.title
end
scenario "show in selected proposals list" do
visit proposals_path
click_link "Selected proposals"
expect(page).to have_selector("#proposals .proposal", count: 1)
expect(page).to have_content selected_proposal.title
expect(page).not_to have_content not_selected_proposal.title
end
end
context "Search" do
context "Basic search" do

View File

@@ -867,11 +867,11 @@ describe Proposal do
end
describe "selected" do
let!(:unselected_proposal) { create(:proposal) }
let!(:not_selected_proposal) { create(:proposal) }
let!(:selected_proposal) { create(:proposal, :selected) }
it "selected? is true" do
expect(unselected_proposal.selected?).to be false
expect(not_selected_proposal.selected?).to be false
expect(selected_proposal.selected?).to be true
end
@@ -881,6 +881,13 @@ describe Proposal do
expect(selected.size).to be 1
expect(selected.first).to eq selected_proposal
end
it "scope not_selected" do
not_selected = Proposal.not_selected
expect(not_selected.size).to be 1
expect(not_selected.first).to eq not_selected_proposal
end
end
describe "public_for_api scope" do