Add main link to each phase of the budget

Co-authored-by: decabeza <alberto@decabeza.es>
This commit is contained in:
Julian Herrero
2020-03-16 12:54:00 +01:00
committed by taitus
parent 43ad69bbaf
commit db9ac79e05
16 changed files with 99 additions and 2 deletions

View File

@@ -0,0 +1,17 @@
require "rails_helper"
describe Budgets::PhasesComponent, type: :component do
let(:budget) { create(:budget) }
it "shows budget current phase main link when defined" do
render_inline Budgets::PhasesComponent.new(budget)
expect(page).not_to have_css(".main-link")
budget.current_phase.update!(main_link_text: "Phase link!", main_link_url: "https://consulproject.org")
render_inline Budgets::PhasesComponent.new(budget)
expect(page).to have_css(".main-link")
expect(page).to have_link("Phase link!", href: "https://consulproject.org")
end
end

View File

@@ -111,6 +111,29 @@ describe Budget::Phase do
expect(informing_phase).to be_valid
end
end
describe "main_link_url" do
it "is not required if main_link_text is not provided" do
valid_budget = build(:budget, main_link_text: nil)
expect(valid_budget).to be_valid
end
it "is required if main_link_text is provided" do
invalid_budget = build(:budget, main_link_text: "link text")
expect(invalid_budget).not_to be_valid
expect(invalid_budget.errors.count).to be 1
expect(invalid_budget.errors[:main_link_url].count).to be 1
expect(invalid_budget.errors[:main_link_url].first).to eq "can't be blank"
end
it "is valid if main_link_text and main_link_url are both provided" do
budget = build(:budget, main_link_text: "link text", main_link_url: "https://consulproject.org")
expect(budget).to be_valid
end
end
end
describe "#save" do

View File

@@ -13,7 +13,7 @@ shared_examples_for "globalizable" do |factory_name|
let(:attribute) { required_fields.sample || fields.sample }
before do
if factory_name == :budget
if factory_name == :budget || factory_name == :budget_phase
record.main_link_url = "https://consulproject.org"
end
record.update!(attribute => "In English")

View File

@@ -55,5 +55,21 @@ describe "Admin budget phases" do
expect(page).to have_content "Changes saved"
end
scenario "shows CTA link in public site if added" do
visit edit_admin_budget_budget_phase_path(budget, budget.current_phase)
expect(page).to have_content "Main call to action (optional)"
fill_in "Text on the link", with: "Link on the phase"
fill_in "The link takes you to (add a link)", with: "https://consulproject.org"
click_button "Save changes"
expect(page).to have_content("Changes saved")
visit budgets_path
expect(page).to have_link("Link on the phase", href: "https://consulproject.org")
end
end
end

View File

@@ -2,6 +2,7 @@ require "rails_helper"
describe "Admin edit translatable records", :admin do
before do
translatable.main_link_url = "https://consulproject.org" if translatable.is_a?(Budget::Phase)
translatable.update!(attributes)
end