Add show results and stats form to budgets
This commit is contained in:
@@ -61,6 +61,8 @@ FactoryBot.define do
|
||||
|
||||
trait :finished do
|
||||
phase "finished"
|
||||
results_enabled true
|
||||
stats_enabled true
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -522,7 +522,7 @@ feature "Budget Investments" do
|
||||
|
||||
context "Results Phase" do
|
||||
|
||||
before { budget.update(phase: "finished") }
|
||||
before { budget.update(phase: "finished", results_enabled: true) }
|
||||
|
||||
scenario "show winners by default" do
|
||||
investment1 = create(:budget_investment, :winner, heading: heading)
|
||||
|
||||
@@ -8,9 +8,6 @@ describe Abilities::Everyone do
|
||||
let(:debate) { create(:debate) }
|
||||
let(:proposal) { create(:proposal) }
|
||||
|
||||
let(:reviewing_ballot_budget) { create(:budget, phase: "reviewing_ballots") }
|
||||
let(:finished_budget) { create(:budget, phase: "finished") }
|
||||
|
||||
it { should be_able_to(:index, Debate) }
|
||||
it { should be_able_to(:show, debate) }
|
||||
it { should_not be_able_to(:edit, Debate) }
|
||||
@@ -32,8 +29,6 @@ describe Abilities::Everyone do
|
||||
|
||||
it { should be_able_to(:index, Budget) }
|
||||
|
||||
it { should be_able_to(:read_results, finished_budget) }
|
||||
it { should_not be_able_to(:read_results, reviewing_ballot_budget) }
|
||||
it { should_not be_able_to(:manage, Dashboard::Action) }
|
||||
|
||||
context "when accessing poll results" do
|
||||
@@ -74,17 +69,43 @@ describe Abilities::Everyone do
|
||||
end
|
||||
end
|
||||
|
||||
context "when accessing budget results" do
|
||||
context "budget is not finished" do
|
||||
let(:budget) { create(:budget, phase: "reviewing_ballots", results_enabled: true) }
|
||||
|
||||
it { should_not be_able_to(:read_results, budget) }
|
||||
end
|
||||
|
||||
context "budget is finished" do
|
||||
let(:budget) { create(:budget, :finished) }
|
||||
|
||||
it { should be_able_to(:read_results, budget) }
|
||||
end
|
||||
|
||||
context "results disabled" do
|
||||
let(:budget) { create(:budget, :finished, results_enabled: false) }
|
||||
|
||||
it { should_not be_able_to(:read_results, budget) }
|
||||
end
|
||||
end
|
||||
|
||||
context "when accessing budget stats" do
|
||||
context "supports phase is not finished" do
|
||||
let(:budget) { create(:budget, phase: "selecting") }
|
||||
let(:budget) { create(:budget, phase: "selecting", stats_enabled: true) }
|
||||
|
||||
it { should_not be_able_to(:read_stats, budget) }
|
||||
end
|
||||
|
||||
context "supports phase is finished" do
|
||||
let(:budget) { create(:budget, phase: "valuating") }
|
||||
let(:budget) { create(:budget, phase: "valuating", stats_enabled: true) }
|
||||
|
||||
it { should be_able_to(:read_stats, budget) }
|
||||
end
|
||||
|
||||
context "stats disabled" do
|
||||
let(:budget) { create(:budget, phase: "valuating", stats_enabled: false) }
|
||||
|
||||
it { should_not be_able_to(:read_stats, budget) }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -5,6 +5,7 @@ describe Budget do
|
||||
let(:budget) { create(:budget) }
|
||||
|
||||
it_behaves_like "sluggable", updatable_slug_trait: :drafting
|
||||
it_behaves_like "reportable"
|
||||
|
||||
describe "name" do
|
||||
before do
|
||||
|
||||
@@ -29,6 +29,8 @@ shared_examples "reportable" do
|
||||
end
|
||||
|
||||
it "uses the `has_one` relation instead of the original column" do
|
||||
skip "there's no original column" unless reportable.has_attribute?(:results_enabled)
|
||||
|
||||
reportable.update(results_enabled: true)
|
||||
|
||||
expect(reportable.read_attribute(:results_enabled)).to be false
|
||||
@@ -63,6 +65,8 @@ shared_examples "reportable" do
|
||||
end
|
||||
|
||||
it "uses the `has_one` relation instead of the original column" do
|
||||
skip "there's no original column" unless reportable.has_attribute?(:stats_enabled)
|
||||
|
||||
reportable.update(stats_enabled: true)
|
||||
|
||||
expect(reportable.read_attribute(:stats_enabled)).to be false
|
||||
|
||||
Reference in New Issue
Block a user