We settled on using this style in commit 4cbe81a1, but didn't add the
rule enforcing this style and we didn't apply it to existing code.
117 lines
3.2 KiB
Ruby
117 lines
3.2 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Vote do
|
|
|
|
describe "#for_debates" do
|
|
it "does not returns votes for other votables" do
|
|
debate = create(:debate)
|
|
comment = create(:comment)
|
|
create(:vote, votable: comment)
|
|
|
|
expect(Vote.for_debates(debate).count).to eq(0)
|
|
end
|
|
|
|
it "returns votes only for debates in parameters" do
|
|
debate1 = create(:debate)
|
|
debate2 = create(:debate)
|
|
create(:vote, votable: debate1)
|
|
|
|
expect(Vote.for_debates(debate1).count).to eq(1)
|
|
expect(Vote.for_debates(debate2).count).to eq(0)
|
|
end
|
|
|
|
it "accepts more than 1 debate" do
|
|
debate1 = create(:debate)
|
|
debate2 = create(:debate)
|
|
debate3 = create(:debate)
|
|
create(:vote, votable: debate1)
|
|
create(:vote, votable: debate3)
|
|
|
|
expect(Vote.for_debates([debate1, debate2]).count).to eq(1)
|
|
end
|
|
end
|
|
|
|
describe "#value" do
|
|
it "returns vote flag" do
|
|
vote = create(:vote, vote_flag: true)
|
|
expect(vote.value).to eq(true)
|
|
|
|
vote = create(:vote, vote_flag: false)
|
|
expect(vote.value).to eq(false)
|
|
end
|
|
end
|
|
|
|
describe "public_for_api scope" do
|
|
it "returns votes on debates" do
|
|
debate = create(:debate)
|
|
vote = create(:vote, votable: debate)
|
|
|
|
expect(Vote.public_for_api).to include(vote)
|
|
end
|
|
|
|
it "blocks votes on hidden debates" do
|
|
debate = create(:debate, :hidden)
|
|
vote = create(:vote, votable: debate)
|
|
|
|
expect(Vote.public_for_api).not_to include(vote)
|
|
end
|
|
|
|
it "returns votes on proposals" do
|
|
proposal = create(:proposal)
|
|
vote = create(:vote, votable: proposal)
|
|
|
|
expect(Vote.public_for_api).to include(vote)
|
|
end
|
|
|
|
it "blocks votes on hidden proposals" do
|
|
proposal = create(:proposal, :hidden)
|
|
vote = create(:vote, votable: proposal)
|
|
|
|
expect(Vote.public_for_api).not_to include(vote)
|
|
end
|
|
|
|
it "returns votes on comments" do
|
|
comment = create(:comment)
|
|
vote = create(:vote, votable: comment)
|
|
|
|
expect(Vote.public_for_api).to include(vote)
|
|
end
|
|
|
|
it "blocks votes on hidden comments" do
|
|
comment = create(:comment, :hidden)
|
|
vote = create(:vote, votable: comment)
|
|
|
|
expect(Vote.public_for_api).not_to include(vote)
|
|
end
|
|
|
|
it "blocks votes on comments on hidden proposals" do
|
|
hidden_proposal = create(:proposal, :hidden)
|
|
comment_on_hidden_proposal = create(:comment, commentable: hidden_proposal)
|
|
vote = create(:vote, votable: comment_on_hidden_proposal)
|
|
|
|
expect(Vote.public_for_api).not_to include(vote)
|
|
end
|
|
|
|
it "blocks votes on comments on hidden debates" do
|
|
hidden_debate = create(:debate, :hidden)
|
|
comment_on_hidden_debate = create(:comment, commentable: hidden_debate)
|
|
vote = create(:vote, votable: comment_on_hidden_debate)
|
|
|
|
expect(Vote.public_for_api).not_to include(vote)
|
|
end
|
|
|
|
it "blocks any other kind of votes" do
|
|
budget_investment = create(:budget_investment)
|
|
vote = create(:vote, votable: budget_investment)
|
|
|
|
expect(Vote.public_for_api).not_to include(vote)
|
|
end
|
|
|
|
it "blocks votes without votable" do
|
|
vote = build(:vote, votable: nil).save!(validate: false)
|
|
|
|
expect(Vote.public_for_api).not_to include(vote)
|
|
end
|
|
end
|
|
end
|