Add show results and stats form to budgets

This commit is contained in:
Javi Martín
2019-04-24 14:18:19 +02:00
parent e3d6dbacab
commit 4f4dc2c2af
17 changed files with 73 additions and 26 deletions

View File

@@ -61,6 +61,8 @@ FactoryBot.define do
trait :finished do
phase "finished"
results_enabled true
stats_enabled true
end
end

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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