From c46639dbb0a0d39c6d33c1c4aac2d2dbecae293b Mon Sep 17 00:00:00 2001 From: Angel Perez Date: Mon, 18 Dec 2017 09:50:05 -0400 Subject: [PATCH 01/19] Add 'image_url' SEO properties to Proposal & Budget::Investment 'show' views --- app/views/budgets/investments/_investment_show.html.erb | 9 +++++++++ app/views/proposals/show.html.erb | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/views/budgets/investments/_investment_show.html.erb b/app/views/budgets/investments/_investment_show.html.erb index fc42e1a3a..946952bd9 100644 --- a/app/views/budgets/investments/_investment_show.html.erb +++ b/app/views/budgets/investments/_investment_show.html.erb @@ -1,3 +1,12 @@ +<% provide :social_media_meta_tags do %> +<%= render "shared/social_media_meta_tags", + social_url: budget_investments_path(investment), + social_title: investment.title, + social_description: investment.description, + twitter_image_url: (investment.image.present? ? investment.image_url(:thumb) : nil), + og_image_url: (investment.image.present? ? investment.image_url(:thumb) : nil) %> +<% end %> +
diff --git a/app/views/proposals/show.html.erb b/app/views/proposals/show.html.erb index d028a3f7f..dbeb110ce 100644 --- a/app/views/proposals/show.html.erb +++ b/app/views/proposals/show.html.erb @@ -4,7 +4,9 @@ <%= render "shared/social_media_meta_tags", social_url: proposal_url(@proposal), social_title: @proposal.title, - social_description: @proposal.summary %> + social_description: @proposal.summary, + twitter_image_url: (@proposal.image.present? ? @proposal.image_url(:thumb) : nil), + og_image_url: (@proposal.image.present? ? @proposal.image_url(:thumb) : nil) %> <% end %> <% content_for :canonical do %> <%= render "shared/canonical", href: proposal_url(@proposal) %> From 53842ba919dc4d8ff9487798d9b391f4f15653a8 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 18:46:50 +0100 Subject: [PATCH 02/19] Add Update scenario to admin budget feature spec --- spec/features/admin/budgets_spec.rb | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/spec/features/admin/budgets_spec.rb b/spec/features/admin/budgets_spec.rb index 7be11abba..587f2fe8a 100644 --- a/spec/features/admin/budgets_spec.rb +++ b/spec/features/admin/budgets_spec.rb @@ -109,6 +109,25 @@ feature 'Admin budgets' do end + context 'Update' do + + background do + create(:budget) + end + + scenario 'Update budget' do + visit admin_budgets_path + click_link 'Edit budget' + + fill_in 'budget_name', with: 'More trees on the streets' + click_button 'Update Participatory budget' + + expect(page).to have_content('More trees on the streets') + expect(page).to have_current_path(admin_budgets_path) + end + + end + context "Calculate Budget's Winner Investments" do scenario 'For a Budget in reviewing balloting' do From 03e1481fb1e51ff021fa126b75f9c5cb446d5b6e Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 18:47:09 +0100 Subject: [PATCH 03/19] Redirect admin to budget lists after editing a budget --- app/controllers/admin/budgets_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/admin/budgets_controller.rb b/app/controllers/admin/budgets_controller.rb index 7caf4f35c..f9a529220 100644 --- a/app/controllers/admin/budgets_controller.rb +++ b/app/controllers/admin/budgets_controller.rb @@ -27,7 +27,7 @@ class Admin::BudgetsController < Admin::BaseController def update if @budget.update(budget_params) - redirect_to admin_budget_path(@budget), notice: t('admin.budgets.update.notice') + redirect_to admin_budgets_path, notice: t('admin.budgets.update.notice') else render :edit end From 4ca0a48df60f8b79fe90e98211012958867f1d97 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 19:11:04 +0100 Subject: [PATCH 04/19] Reduce rubocop's Metrics/LineLength max to 100 chars by common agreement --- .rubocop.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.rubocop.yml b/.rubocop.yml index ae486cc1c..0c56b53fc 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -20,7 +20,7 @@ Rails: Enabled: true Metrics/LineLength: - Max: 140 + Max: 100 Layout/IndentationConsistency: EnforcedStyle: rails From 377a5141284da10681260b9212c53de20deeb9fd Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 19:40:27 +0100 Subject: [PATCH 05/19] Refactor commmon budget creation to a shared one at budget feature spec --- spec/features/budgets/budgets_spec.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/spec/features/budgets/budgets_spec.rb b/spec/features/budgets/budgets_spec.rb index f7d194524..c098c3fd2 100644 --- a/spec/features/budgets/budgets_spec.rb +++ b/spec/features/budgets/budgets_spec.rb @@ -2,6 +2,8 @@ require 'rails_helper' feature 'Budgets' do + let(:budget) { create(:budget) } + scenario 'Index' do budgets = create_list(:budget, 3) visit budgets_path @@ -11,7 +13,6 @@ feature 'Budgets' do context 'Show' do scenario "List all groups" do - budget = create(:budget) group1 = create(:budget_group, budget: budget) group2 = create(:budget_group, budget: budget) @@ -63,8 +64,6 @@ feature 'Budgets' do context 'Accepting' do - let(:budget) { create(:budget) } - background do budget.update(phase: 'accepting') end @@ -97,4 +96,4 @@ feature 'Budgets' do end end -end \ No newline at end of file +end From 506293fc80d3e7f5ddfc3c80a1b46ab249ad3e9d Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 19:59:14 +0100 Subject: [PATCH 06/19] Move level two user creation to a shared let on budget feature --- spec/features/budgets/budgets_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/features/budgets/budgets_spec.rb b/spec/features/budgets/budgets_spec.rb index c098c3fd2..57edfd66e 100644 --- a/spec/features/budgets/budgets_spec.rb +++ b/spec/features/budgets/budgets_spec.rb @@ -3,6 +3,7 @@ require 'rails_helper' feature 'Budgets' do let(:budget) { create(:budget) } + let(:level_two_user) { create(:user, :level_two) } scenario 'Index' do budgets = create_list(:budget, 3) @@ -71,8 +72,7 @@ feature 'Budgets' do context "Permissions" do scenario "Verified user" do - user = create(:user, :level_two) - login_as(user) + login_as(level_two_user) visit budget_path(budget) From 2026f537e6413916b8f420a60208857ba2134b3a Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 20:00:06 +0100 Subject: [PATCH 07/19] Add drafting phase scenario to budget feature spec for list & show checks --- spec/features/budgets/budgets_spec.rb | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/spec/features/budgets/budgets_spec.rb b/spec/features/budgets/budgets_spec.rb index 57edfd66e..ee537a854 100644 --- a/spec/features/budgets/budgets_spec.rb +++ b/spec/features/budgets/budgets_spec.rb @@ -63,6 +63,58 @@ feature 'Budgets' do end + context "In Drafting phase" do + + let(:admin) { create(:administrator).user } + + background do + logout + budget.update(phase: 'drafting') + end + + context "Listed" do + scenario "Not listed to guest users at the public budgets list" do + visit budgets_path + + expect(page).not_to have_content(budget.name) + end + + scenario "Not listed to logged users at the public budgets list" do + login_as(level_two_user) + visit budgets_path + + expect(page).not_to have_content(budget.name) + end + + scenario "Is listed to admins at the public budgets list" do + login_as(admin) + visit budgets_path + + expect(page).to have_content(budget.name) + end + end + + context "Shown" do + scenario "Not accesible to guest users" do + expect { visit budget_path(budget) }.to raise_error(ActionController::RoutingError) + end + + scenario "Not accesible to logged users" do + login_as(level_two_user) + + expect { visit budget_path(budget) }.to raise_error(ActionController::RoutingError) + end + + scenario "Is accesible to admin users" do + login_as(admin) + visit budget_path(budget) + + expect(page.status_code).to eq(200) + end + end + + end + context 'Accepting' do background do From 63694b5bae8bcab1f91ae47e3fd79ee137adf44d Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 22:52:56 +0100 Subject: [PATCH 08/19] Increase admin budget feature spec for drafting phase --- spec/features/admin/budgets_spec.rb | 40 ++++++++++++++--------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/spec/features/admin/budgets_spec.rb b/spec/features/admin/budgets_spec.rb index 7be11abba..2585dfe96 100644 --- a/spec/features/admin/budgets_spec.rb +++ b/spec/features/admin/budgets_spec.rb @@ -34,32 +34,32 @@ feature 'Admin budgets' do end scenario 'Filters by phase' do - budget1 = create(:budget) - budget2 = create(:budget, :accepting) - budget3 = create(:budget, :selecting) - budget4 = create(:budget, :balloting) - budget5 = create(:budget, :finished) + drafting_budget = create(:budget, :drafting) + accepting_budget = create(:budget, :accepting) + selecting_budget = create(:budget, :selecting) + balloting_budget = create(:budget, :balloting) + finished_budget = create(:budget, :finished) visit admin_budgets_path - expect(page).to have_content(budget1.name) - expect(page).to have_content(budget2.name) - expect(page).to have_content(budget3.name) - expect(page).to have_content(budget4.name) - expect(page).not_to have_content(budget5.name) + expect(page).to have_content(drafting_budget.name) + expect(page).to have_content(accepting_budget.name) + expect(page).to have_content(selecting_budget.name) + expect(page).to have_content(balloting_budget.name) + expect(page).not_to have_content(finished_budget.name) click_link 'Finished' - expect(page).not_to have_content(budget1.name) - expect(page).not_to have_content(budget2.name) - expect(page).not_to have_content(budget3.name) - expect(page).not_to have_content(budget4.name) - expect(page).to have_content(budget5.name) + expect(page).not_to have_content(drafting_budget.name) + expect(page).not_to have_content(accepting_budget.name) + expect(page).not_to have_content(selecting_budget.name) + expect(page).not_to have_content(balloting_budget.name) + expect(page).to have_content(finished_budget.name) click_link 'Open' - expect(page).to have_content(budget1.name) - expect(page).to have_content(budget2.name) - expect(page).to have_content(budget3.name) - expect(page).to have_content(budget4.name) - expect(page).not_to have_content(budget5.name) + expect(page).to have_content(drafting_budget.name) + expect(page).to have_content(accepting_budget.name) + expect(page).to have_content(selecting_budget.name) + expect(page).to have_content(balloting_budget.name) + expect(page).not_to have_content(finished_budget.name) end scenario 'Open filter is properly highlighted' do From 1f0eb49ddcf8520f39b01bb937335b3789523779 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 22:53:14 +0100 Subject: [PATCH 09/19] Increase budget model spec for drafting phase --- spec/models/budget_spec.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/spec/models/budget_spec.rb b/spec/models/budget_spec.rb index b7926eb7b..b86db7e6e 100644 --- a/spec/models/budget_spec.rb +++ b/spec/models/budget_spec.rb @@ -40,6 +40,9 @@ describe Budget do end it "produces auxiliary methods" do + budget.phase = "drafting" + expect(budget).to be_drafting + budget.phase = "accepting" expect(budget).to be_accepting @@ -63,6 +66,9 @@ describe Budget do end it "on_hold?" do + budget.phase = "drafting" + expect(budget).not_to be_on_hold + budget.phase = "accepting" expect(budget).not_to be_on_hold @@ -86,6 +92,9 @@ describe Budget do end it "balloting_or_later?" do + budget.phase = "drafting" + expect(budget).not_to be_balloting_or_later + budget.phase = "accepting" expect(budget).not_to be_balloting_or_later From 9739576e4ea7003feedabccff73567f502fc75ff Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 22:54:10 +0100 Subject: [PATCH 10/19] Add drafting phase trait to budget factory --- spec/factories.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/factories.rb b/spec/factories.rb index fd67fc4fc..900545155 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -231,6 +231,10 @@ FactoryBot.define do description_reviewing_ballots "This budget is reviewing ballots" description_finished "This budget is finished" + trait :drafting do + phase 'drafting' + end + trait :accepting do phase 'accepting' end From d0937d7022fff307b8733392adcc697240932909 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 22:54:49 +0100 Subject: [PATCH 11/19] Add description_drafting column to budgets table --- db/migrate/20180108182839_add_drafting_phase_to_budget.rb | 5 +++++ db/schema.rb | 3 ++- spec/factories.rb | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 db/migrate/20180108182839_add_drafting_phase_to_budget.rb diff --git a/db/migrate/20180108182839_add_drafting_phase_to_budget.rb b/db/migrate/20180108182839_add_drafting_phase_to_budget.rb new file mode 100644 index 000000000..9a8febb97 --- /dev/null +++ b/db/migrate/20180108182839_add_drafting_phase_to_budget.rb @@ -0,0 +1,5 @@ +class AddDraftingPhaseToBudget < ActiveRecord::Migration + def change + add_column :budgets, :description_drafting, :text + end +end diff --git a/db/schema.rb b/db/schema.rb index ab6decc80..d599658c1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171220010000) do +ActiveRecord::Schema.define(version: 20180108182839) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -201,6 +201,7 @@ ActiveRecord::Schema.define(version: 20171220010000) do t.text "description_reviewing_ballots" t.text "description_finished" t.string "slug" + t.text "description_drafting" end create_table "campaigns", force: :cascade do |t| diff --git a/spec/factories.rb b/spec/factories.rb index 900545155..86988e5e9 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -223,6 +223,7 @@ FactoryBot.define do sequence(:name) { |n| "Budget #{n}" } currency_symbol "€" phase 'accepting' + description_drafting "This budget is drafting" description_accepting "This budget is accepting" description_reviewing "This budget is reviewing" description_selecting "This budget is selecting" From f9803ce9ca3e8b230477ef335d398c9820e8b381 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 22:56:11 +0100 Subject: [PATCH 12/19] Add drafting phase to budget model & translations --- app/models/budget.rb | 8 +++++++- config/locales/en/budgets.yml | 1 + config/locales/es/budgets.yml | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/models/budget.rb b/app/models/budget.rb index 024602730..ce8bc4dfa 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -3,7 +3,8 @@ class Budget < ActiveRecord::Base include Measurable include Sluggable - PHASES = %w(accepting reviewing selecting valuating balloting reviewing_ballots finished).freeze + PHASES = %w(drafting accepting reviewing selecting valuating balloting + reviewing_ballots finished).freeze CURRENCY_SYMBOLS = %w(€ $ £ ¥).freeze validates :name, presence: true, uniqueness: true @@ -19,6 +20,7 @@ class Budget < ActiveRecord::Base before_validation :sanitize_descriptions scope :on_hold, -> { where(phase: %w(reviewing valuating reviewing_ballots")) } + scope :drafting, -> { where(phase: "drafting") } scope :accepting, -> { where(phase: "accepting") } scope :reviewing, -> { where(phase: "reviewing") } scope :selecting, -> { where(phase: "selecting") } @@ -41,6 +43,10 @@ class Budget < ActiveRecord::Base 80 end + def drafting? + phase == "drafting" + end + def accepting? phase == "accepting" end diff --git a/config/locales/en/budgets.yml b/config/locales/en/budgets.yml index 3710daf8a..bffa6965d 100644 --- a/config/locales/en/budgets.yml +++ b/config/locales/en/budgets.yml @@ -29,6 +29,7 @@ en: unselected_title: Investments not selected for balloting phase unselected: See investments not selected for balloting phase phase: + drafting: Draft (Not visible to the public) accepting: Accepting projects reviewing: Reviewing projects selecting: Selecting projects diff --git a/config/locales/es/budgets.yml b/config/locales/es/budgets.yml index 367bcecdc..d746772eb 100644 --- a/config/locales/es/budgets.yml +++ b/config/locales/es/budgets.yml @@ -29,6 +29,7 @@ es: unselected_title: Propuestas no seleccionadas para la votación final unselected: Ver las propuestas no seleccionadas para la votación final phase: + drafting: Borrador (No visible para el público) accepting: Presentación de proyectos reviewing: Revisión interna de proyectos selecting: Fase de apoyos From 03f4fce2dd13aef6428f65f588f195d54dbc9695 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 22:56:47 +0100 Subject: [PATCH 13/19] Add budget_published? helper method to BudgetHelper We need to check if the budget is in drafting phase to avoid showing it to the users, unless the current user is an administrator. --- app/helpers/budgets_helper.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/helpers/budgets_helper.rb b/app/helpers/budgets_helper.rb index fefda85ab..3b4c81f7e 100644 --- a/app/helpers/budgets_helper.rb +++ b/app/helpers/budgets_helper.rb @@ -42,4 +42,9 @@ module BudgetsHelper def investment_tags_select_options Budget::Investment.tags_on(:valuation).order(:name).select(:name).distinct end + + def budget_published?(budget) + !budget.drafting? || current_user&.administrator? + end + end From 76e05d58b1fe05bde6abdb2f1083852f062fce04 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 22:59:20 +0100 Subject: [PATCH 14/19] Return 404 status for non-published Budget access Why: Non-admin users shouldn't be able to access, or know of the existence of a non-published Budget. How: Raising an ActionController::RoutingError (404 error) to simulate the same behaviour as accesing a non-existing Budget. We could have used CanCanCan abilities for this but then an user could be aware of existing but not published Budgets by trying different urls --- app/controllers/budgets_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/budgets_controller.rb b/app/controllers/budgets_controller.rb index 2a53c410b..4f215c46f 100644 --- a/app/controllers/budgets_controller.rb +++ b/app/controllers/budgets_controller.rb @@ -1,5 +1,6 @@ class BudgetsController < ApplicationController include FeatureFlags + include BudgetsHelper feature_flag :budgets load_and_authorize_resource @@ -9,6 +10,7 @@ class BudgetsController < ApplicationController respond_to :html, :js def show + raise ActionController::RoutingError, 'Not Found' unless budget_published?(@budget) end def index From 4916f9a3c313da2d420dfe21276520dbd7e8aa3f Mon Sep 17 00:00:00 2001 From: Bertocq Date: Mon, 8 Jan 2018 23:02:18 +0100 Subject: [PATCH 15/19] Avoid listing non-published Budgets to the public Why: Non-admins shouldn't be aware of non-published Budgets How: Using the budget_published? helper method --- app/views/budgets/index.html.erb | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/app/views/budgets/index.html.erb b/app/views/budgets/index.html.erb index 8cde29bc7..0ccc8bcef 100644 --- a/app/views/budgets/index.html.erb +++ b/app/views/budgets/index.html.erb @@ -16,14 +16,16 @@ <% @budgets.each do |budget| %> - - - <%= link_to budget.name, budget %> - - - <%= budget.translated_phase %> - - + <% if budget_published?(budget) %> + + + <%= link_to budget.name, budget %> + + + <%= budget.translated_phase %> + + + <% end %> <% end %> From 0f5999fb8dac26aa82cf0701927897d634e8420f Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 9 Jan 2018 00:33:55 +0100 Subject: [PATCH 16/19] Move admin creation into shared let on spec --- spec/features/tags/budget_investments_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/features/tags/budget_investments_spec.rb b/spec/features/tags/budget_investments_spec.rb index 74523f81b..7164db8d0 100644 --- a/spec/features/tags/budget_investments_spec.rb +++ b/spec/features/tags/budget_investments_spec.rb @@ -8,6 +8,7 @@ feature 'Tags' do let!(:heading) { create(:budget_heading, name: "More hospitals", group: group) } let!(:tag_medio_ambiente) { create(:tag, :category, name: 'Medio Ambiente') } let!(:tag_economia) { create(:tag, :category, name: 'Economía') } + let(:admin) { create(:administrator).user } scenario 'Index' do earth = create(:budget_investment, heading: heading, tag_list: tag_medio_ambiente.name) @@ -282,8 +283,7 @@ feature 'Tags' do investment.set_tag_list_on(:valuation, 'Education') investment.save - admin = create(:administrator) - login_as(admin.user) + login_as(admin) visit admin_budget_budget_investment_path(budget, investment) click_link 'Edit classification' From beee890285b20ec8981608c0207e6462d1dac410 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 9 Jan 2018 00:34:16 +0100 Subject: [PATCH 17/19] Login as admin before visiting drafting budget on spec --- spec/features/tags/budget_investments_spec.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/spec/features/tags/budget_investments_spec.rb b/spec/features/tags/budget_investments_spec.rb index 7164db8d0..f244583a6 100644 --- a/spec/features/tags/budget_investments_spec.rb +++ b/spec/features/tags/budget_investments_spec.rb @@ -186,6 +186,7 @@ feature 'Tags' do Budget::PHASES.each do |phase| budget.update(phase: phase) + login_as(admin) if budget.drafting? visit budget_investments_path(budget, heading_id: heading.id) within "#tag-cloud" do @@ -205,6 +206,7 @@ feature 'Tags' do end end + login_as(admin) if budget.drafting? visit budget_path(budget) click_link group.name @@ -231,6 +233,7 @@ feature 'Tags' do Budget::PHASES.each do |phase| budget.update(phase: phase) + login_as(admin) if budget.drafting? visit budget_investments_path(budget, heading_id: heading.id) within "#categories" do @@ -250,6 +253,7 @@ feature 'Tags' do end end + login_as(admin) if budget.drafting? visit budget_path(budget) click_link group.name From 2c3d8e9fd5ca5417e83d96ebaffa31e4d3d16092 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 9 Jan 2018 01:16:09 +0100 Subject: [PATCH 18/19] Avoid creating a budget in drafting phase to test results access --- spec/features/budgets/results_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/features/budgets/results_spec.rb b/spec/features/budgets/results_spec.rb index 178f3007a..5e194a393 100644 --- a/spec/features/budgets/results_spec.rb +++ b/spec/features/budgets/results_spec.rb @@ -65,7 +65,7 @@ feature 'Results' do end scenario "If budget is in a phase different from finished results can't be accessed" do - budget.update phase: (Budget::PHASES - ["finished"]).sample + budget.update(phase: (Budget::PHASES - ['drafting', 'finished']).sample) visit budget_path(budget) expect(page).not_to have_link "See results" From 7c7f903ed0935bb4c50fa57654a32c8ed818c9e6 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Tue, 9 Jan 2018 01:33:44 +0100 Subject: [PATCH 19/19] Make customization engine spec less prone to flaky failures --- spec/customization_engine_spec.rb | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/spec/customization_engine_spec.rb b/spec/customization_engine_spec.rb index e4259b49a..c36ee68a7 100644 --- a/spec/customization_engine_spec.rb +++ b/spec/customization_engine_spec.rb @@ -8,21 +8,33 @@ describe 'Customization Engine' do let(:test_key) { I18n.t('account.show.change_credentials_link') } let!(:default_path) { I18n.load_path } + before do + reset_load_path_and_reload(default_path) + end + + after do + reset_load_path_and_reload(default_path) + end + it "loads custom and override original locales" do - I18n.load_path += Dir[Rails.root.join('spec', 'support', 'locales', 'custom', '*.{rb,yml}')] - I18n.reload! + increase_load_path_and_reload(Dir[Rails.root.join('spec', 'support', + 'locales', 'custom', '*.{rb,yml}')]) expect(test_key).to eq 'Overriden string with custom locales' end it "does not override original locales" do - I18n.load_path.delete_if {|item| item =~ /spec\/support\/locales\/custom/ } - I18n.load_path += Dir[Rails.root.join('spec', 'support', 'locales', '**', '*.{rb,yml}')] - I18n.reload! + increase_load_path_and_reload(Dir[Rails.root.join('spec', 'support', + 'locales', '**', '*.{rb,yml}')]) expect(test_key).to eq 'Not overriden string with custom locales' end - after do - I18n.load_path = default_path + def reset_load_path_and_reload(path) + I18n.load_path = path + I18n.reload! + end + + def increase_load_path_and_reload(path) + I18n.load_path += path I18n.reload! end