From fa6f34bf5c05199d6215b80254c7caa158cea4c1 Mon Sep 17 00:00:00 2001 From: kikito Date: Tue, 31 May 2016 19:26:56 +0200 Subject: [PATCH] Adds basic Budget controller / views --- app/controllers/budgets_controller.rb | 13 +++++++++++++ app/helpers/budget_helper.rb | 8 ++++++++ app/models/abilities/common.rb | 3 --- app/models/abilities/everyone.rb | 2 ++ app/models/budget.rb | 3 +++ app/views/budgets/index.html.erb | 7 +++++++ app/views/budgets/show.html.erb | 15 +++++++++++++++ config/routes.rb | 6 ++++++ spec/features/budgets_spec.rb | 18 ++++++++++++++++++ 9 files changed, 72 insertions(+), 3 deletions(-) create mode 100644 app/controllers/budgets_controller.rb create mode 100644 app/helpers/budget_helper.rb create mode 100644 app/views/budgets/index.html.erb create mode 100644 app/views/budgets/show.html.erb create mode 100644 spec/features/budgets_spec.rb diff --git a/app/controllers/budgets_controller.rb b/app/controllers/budgets_controller.rb new file mode 100644 index 000000000..db05aafea --- /dev/null +++ b/app/controllers/budgets_controller.rb @@ -0,0 +1,13 @@ +class BudgetsController < ApplicationController + + load_and_authorize_resource + respond_to :html, :js + + def show + end + + def index + @budgets = @budgets.order(:created_at) + end + +end diff --git a/app/helpers/budget_helper.rb b/app/helpers/budget_helper.rb new file mode 100644 index 000000000..47dbbca98 --- /dev/null +++ b/app/helpers/budget_helper.rb @@ -0,0 +1,8 @@ +module BudgetHelper + def format_price(budget, number) + number_to_currency(number, + precision: 0, + locale: I18n.default_locale, + unit: budget.currency_symbol) + end +end diff --git a/app/models/abilities/common.rb b/app/models/abilities/common.rb index 0d1bfd4b9..f2c5ec720 100644 --- a/app/models/abilities/common.rb +++ b/app/models/abilities/common.rb @@ -18,9 +18,6 @@ module Abilities end can [:retire_form, :retire], Proposal, author_id: user.id - can :read, SpendingProposal - can :read, Budget::Investment - can :create, Comment can :create, Debate can :create, Proposal diff --git a/app/models/abilities/everyone.rb b/app/models/abilities/everyone.rb index 21e142c05..327210de8 100644 --- a/app/models/abilities/everyone.rb +++ b/app/models/abilities/everyone.rb @@ -6,6 +6,8 @@ module Abilities can [:read, :map], Debate can [:read, :map, :summary], Proposal can :read, Comment + can :read, Budget + can :read, Budget::Investment can :read, SpendingProposal can :read, Legislation can :read, User diff --git a/app/models/budget.rb b/app/models/budget.rb index b234a8b73..dfcba3214 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -1,8 +1,11 @@ class Budget < ActiveRecord::Base + include Sanitizable + VALID_PHASES = %W{on_hold accepting selecting balloting finished} validates :phase, inclusion: { in: VALID_PHASES } + validates :currency_symbol, presence: true has_many :investments has_many :ballots diff --git a/app/views/budgets/index.html.erb b/app/views/budgets/index.html.erb new file mode 100644 index 000000000..d1f9ebd63 --- /dev/null +++ b/app/views/budgets/index.html.erb @@ -0,0 +1,7 @@ +

Budget Index

+ + diff --git a/app/views/budgets/show.html.erb b/app/views/budgets/show.html.erb new file mode 100644 index 000000000..13574d802 --- /dev/null +++ b/app/views/budgets/show.html.erb @@ -0,0 +1,15 @@ +

<%= @budget.name %>

+ +
<%= @budget.description %>
+ + diff --git a/config/routes.rb b/config/routes.rb index a2035a0b7..bcc6b7b84 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -69,6 +69,12 @@ Rails.application.routes.draw do end end + resources :budgets, only: [:show, :index] do + resources :investments, controller: "budgets/investments", only: [:index, :new, :create, :show, :destroy] do + member { post :vote } + end + end + scope '/participatory_budget' do resources :spending_proposals, only: [:index, :new, :create, :show, :destroy], path: 'investment_projects' do post :vote, on: :member diff --git a/spec/features/budgets_spec.rb b/spec/features/budgets_spec.rb new file mode 100644 index 000000000..4293ef159 --- /dev/null +++ b/spec/features/budgets_spec.rb @@ -0,0 +1,18 @@ +require 'rails_helper' + +feature 'Budgets' do + + scenario 'Index' do + budgets = create_list(:budget, 3) + visit budgets_path + budgets.each {|budget| expect(page).to have_link(budget.name)} + end + + scenario 'Show' do + budget = create(:budget) + heading = create(:budget_heading, budget: budget) + visit budget_path(budget) + expect(page).to have_content(budget.name) + expect(page).to have_content(heading.name) + end +end