Remove not selected proposals from other lists
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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) }
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user