Files
grecia/spec/models/abilities/everyone_spec.rb
Juan Salvador Pérez García e5f9cf6710 Fixed #239
Proposals dashboard refactored to dashboard.
Added missing specs for the dashboard.
2018-07-24 15:52:43 +02:00

77 lines
2.3 KiB
Ruby

require 'rails_helper'
require 'cancan/matchers'
describe Abilities::Everyone do
subject(:ability) { Ability.new(user) }
let(:user) { nil }
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) }
it { should_not be_able_to(:vote, Debate) }
it { should_not be_able_to(:flag, Debate) }
it { should_not be_able_to(:unflag, Debate) }
it { should be_able_to(:index, Proposal) }
it { should be_able_to(:show, proposal) }
it { should_not be_able_to(:edit, Proposal) }
it { should_not be_able_to(:vote, Proposal) }
it { should_not be_able_to(:flag, Proposal) }
it { should_not be_able_to(:unflag, Proposal) }
it { should be_able_to(:show, Comment) }
it { should be_able_to(:index, SpendingProposal) }
it { should_not be_able_to(:create, SpendingProposal) }
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
let(:results_enabled) { true }
let(:poll) { create(:poll, :expired, results_enabled: results_enabled) }
it { should be_able_to(:results, poll) }
context 'and results disabled' do
let(:results_enabled) { false }
it { should_not be_able_to(:results, poll) }
end
context 'and not expired' do
let(:poll) { create(:poll, :current, results_enabled: true) }
it { should_not be_able_to(:results, poll) }
end
end
context 'when accessing poll stats' do
let(:stats_enabled) { true }
let(:poll) { create(:poll, :expired, stats_enabled: stats_enabled) }
it { should be_able_to(:stats, poll) }
context 'and stats disabled' do
let(:stats_enabled) { false }
it { should_not be_able_to(:stats, poll) }
end
context 'and not expired' do
let(:poll) { create(:poll, :current, stats_enabled: true) }
it { should_not be_able_to(:stats, poll) }
end
end
end