diff --git a/lib/tasks/proposals.rake b/lib/tasks/proposals.rake new file mode 100644 index 000000000..d648909e2 --- /dev/null +++ b/lib/tasks/proposals.rake @@ -0,0 +1,23 @@ +namespace :proposals do + + desc "Move external_url to description" + task move_external_url_to_description: :environment do + include ActionView::Helpers::SanitizeHelper + include TextWithLinksHelper + + models = [Proposal, Legislation::Proposal] + + models.each do |model| + print "Move external_url to description for #{model}s" + model.find_each do |resource| + if resource.external_url.present? + resource.update_columns(description: "#{resource.description} "\ + "
#{text_with_links(resource.external_url)}
", + external_url: "") + print "." + end + end + puts " ✅ " + end + end +end diff --git a/spec/lib/tasks/proposals_spec.rb b/spec/lib/tasks/proposals_spec.rb new file mode 100644 index 000000000..fc464872d --- /dev/null +++ b/spec/lib/tasks/proposals_spec.rb @@ -0,0 +1,66 @@ +require "rails_helper" + +describe Proposals do + + describe "Move external_url to description" do + + let :run_rake_task do + Rake::Task["proposals:move_external_url_to_description"].reenable + Rake.application.invoke_task "proposals:move_external_url_to_description" + end + + context "Move external_url to description for Proposals" do + + it "When proposal has external_url" do + proposal = create(:proposal, description: "Lorem ipsum dolor sit amet
", + external_url: "http://consul.dev") + + run_rake_task + proposal.reload + + expect(proposal.description).to eq "Lorem ipsum dolor sit amet
"\ + '" + expect(proposal.external_url).to eq "" + end + + it "When proposal has not external_url" do + proposal = create(:proposal, description: "Lorem ipsum dolor sit amet
", + external_url: "") + + run_rake_task + proposal.reload + + expect(proposal.description).to eq "Lorem ipsum dolor sit amet
" + expect(proposal.external_url).to eq "" + end + end + + context "Move external_url to description for Legislation proposals" do + + it "When legislation proposal has external_url" do + legislation_proposal = create(:legislation_proposal, description: "Ut enim ad minim
", + external_url: "http://consulproject.org") + run_rake_task + legislation_proposal.reload + + expect(legislation_proposal.description).to eq "Ut enim ad minim
"\ + ''\ + "http://consulproject.org
" + expect(legislation_proposal.external_url).to eq "" + end + + it "When legislation proposal has not external_url" do + legislation_proposal = create(:legislation_proposal, description: "Ut enim ad minim
", + external_url: "") + run_rake_task + legislation_proposal.reload + + expect(legislation_proposal.description).to eq "Ut enim ad minim
" + expect(legislation_proposal.external_url).to eq "" + end + end + end +end