diff --git a/app/models/abilities/common.rb b/app/models/abilities/common.rb index b95e5f5b4..4d74ce375 100644 --- a/app/models/abilities/common.rb +++ b/app/models/abilities/common.rb @@ -22,7 +22,6 @@ module Abilities can :create, Comment can :create, Debate can :create, Proposal - can :create, SpendingProposal can [:flag, :unflag], Comment cannot [:flag, :unflag], Comment, user_id: user.id @@ -41,6 +40,7 @@ module Abilities if user.level_two_or_three_verified? can :vote, Proposal can :vote_featured, Proposal + can :create, SpendingProposal end can :create, Annotation diff --git a/app/views/spending_proposals/index.html.erb b/app/views/spending_proposals/index.html.erb index 3d264bc92..0bf276894 100644 --- a/app/views/spending_proposals/index.html.erb +++ b/app/views/spending_proposals/index.html.erb @@ -6,8 +6,11 @@
<%= t('spending_proposals.index.text') %>
- <%= link_to t('spending_proposals.index.create_link'), new_spending_proposal_path, class: 'button radius' %> - + <% if can? :create, SpendingProposal %> + <%= link_to t('spending_proposals.index.create_link'), new_spending_proposal_path, class: 'button radius' %> + <% else %> +<%= t('spending_proposals.index.verified_only', verify_account: link_to(t('spending_proposals.index.verify_account'), verification_path)).html_safe %>
+ <% end %> \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index ee6b26d68..468cdc481 100755 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -251,6 +251,8 @@ en: title: "Participatory budgeting" text: "Here you can send spending proposals to be considered in the frame of the annual participatory budgeting." create_link: "Create spending proposal" + verified_only: "Only verified users can create spending proposals, %{verify_account}." + verify_account: "verify your account" new: back_link: Back start_new: "Create spending proposal" diff --git a/config/locales/es.yml b/config/locales/es.yml index ae160defa..e1d785a17 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -251,6 +251,8 @@ es: title: "Presupuestos participativos" text: "Desde esta sección podrás sugerir propuestas de gasto que irán asociadas a las partidas de presupuestos ciudadanos. El requisito principal es que sean propuestas presupuestables." create_link: "Enviar propuesta de gasto" + verified_only: "Sólo los usuarios verificados pueden crear propuestas de gasto, %{verify_account}." + verify_account: "verifica tu cuenta" new: back_link: Volver start_new: "Crear una propuesta de gasto" diff --git a/spec/features/spending_proposals_spec.rb b/spec/features/spending_proposals_spec.rb index 65b496fa9..6b76b02e0 100644 --- a/spec/features/spending_proposals_spec.rb +++ b/spec/features/spending_proposals_spec.rb @@ -2,14 +2,23 @@ require 'rails_helper' feature 'Spending proposals' do + let(:author) { create(:user, :level_two) } + scenario 'Index' do visit spending_proposals_path + expect(page).to_not have_link('Create spending proposal', href: new_spending_proposal_path) + expect(page).to have_link('verify your account') + + login_as(author) + + visit spending_proposals_path + expect(page).to have_link('Create spending proposal', href: new_spending_proposal_path) + expect(page).to_not have_link('verify your account') end scenario 'Create' do - author = create(:user) login_as(author) visit new_spending_proposal_path @@ -26,7 +35,7 @@ feature 'Spending proposals' do end scenario 'Captcha is required for proposal creation' do - login_as(create(:user)) + login_as(author) visit new_spending_proposal_path fill_in 'spending_proposal_title', with: 'Build a skyscraper' @@ -47,7 +56,6 @@ feature 'Spending proposals' do end scenario 'Errors on create' do - author = create(:user) login_as(author) visit new_spending_proposal_path diff --git a/spec/models/abilities/administrator_spec.rb b/spec/models/abilities/administrator_spec.rb index 66757ddc0..8df88a46f 100644 --- a/spec/models/abilities/administrator_spec.rb +++ b/spec/models/abilities/administrator_spec.rb @@ -51,4 +51,6 @@ describe "Abilities::Administrator" do it { should_not be_able_to(:comment_as_moderator, proposal) } it { should be_able_to(:manage, Annotation) } + + it { should be_able_to(:manage, SpendingProposal) } end diff --git a/spec/models/abilities/common_spec.rb b/spec/models/abilities/common_spec.rb index a24b5f2d9..d942e2d18 100644 --- a/spec/models/abilities/common_spec.rb +++ b/spec/models/abilities/common_spec.rb @@ -29,7 +29,7 @@ describe "Abilities::Common" do it { should_not be_able_to(:vote_featured, Proposal) } it { should be_able_to(:index, SpendingProposal) } - it { should be_able_to(:create, SpendingProposal) } + it { should_not be_able_to(:create, SpendingProposal) } it { should_not be_able_to(:comment_as_administrator, debate) } it { should_not be_able_to(:comment_as_moderator, debate) } @@ -87,6 +87,8 @@ describe "Abilities::Common" do it { should be_able_to(:vote, Proposal) } it { should be_able_to(:vote_featured, Proposal) } + + it { should be_able_to(:create, SpendingProposal) } end describe "when level 3 verified" do @@ -94,5 +96,7 @@ describe "Abilities::Common" do it { should be_able_to(:vote, Proposal) } it { should be_able_to(:vote_featured, Proposal) } + + it { should be_able_to(:create, SpendingProposal) } end end