Add task to migrate enabled poll results and stats
This commit is contained in:
29
lib/migrations/reports.rb
Normal file
29
lib/migrations/reports.rb
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
class Migrations::Reports
|
||||||
|
def migrate
|
||||||
|
migrate_polls
|
||||||
|
migrate_budgets
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def migrate_polls
|
||||||
|
Poll.find_each do |poll|
|
||||||
|
next unless poll.report.new_record?
|
||||||
|
|
||||||
|
poll.report.update!(
|
||||||
|
results: poll.read_attribute(:results_enabled),
|
||||||
|
stats: poll.read_attribute(:stats_enabled),
|
||||||
|
advanced_stats: poll.read_attribute(:stats_enabled),
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
def migrate_budgets
|
||||||
|
Budget.find_each do |budget|
|
||||||
|
next unless budget.report.new_record?
|
||||||
|
|
||||||
|
budget.report.update!(results: true, stats: true, advanced_stats: true)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
6
lib/tasks/stats_and_results.rake
Normal file
6
lib/tasks/stats_and_results.rake
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
namespace :stats_and_results do
|
||||||
|
desc "Migrates stats_enabled and results_enabled data to enabled reports"
|
||||||
|
task migrate_to_reports: :environment do
|
||||||
|
Migrations::Reports.new.migrate
|
||||||
|
end
|
||||||
|
end
|
||||||
53
spec/lib/migrations/reports_spec.rb
Normal file
53
spec/lib/migrations/reports_spec.rb
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
require "rails_helper"
|
||||||
|
|
||||||
|
describe Migrations::Reports do
|
||||||
|
describe "#migrate" do
|
||||||
|
it "ignores polls with existing reports" do
|
||||||
|
create(:poll, results_enabled: true, stats_enabled: true) do |poll|
|
||||||
|
poll.write_attribute(:results_enabled, false)
|
||||||
|
poll.write_attribute(:stats_enabled, false)
|
||||||
|
poll.save
|
||||||
|
end
|
||||||
|
|
||||||
|
Migrations::Reports.new.migrate
|
||||||
|
|
||||||
|
expect(Poll.last.results_enabled).to be true
|
||||||
|
expect(Poll.last.stats_enabled).to be true
|
||||||
|
expect(Poll.last.advanced_stats_enabled).to be nil
|
||||||
|
end
|
||||||
|
|
||||||
|
it "migrates polls with no reports" do
|
||||||
|
create(:poll) do |poll|
|
||||||
|
poll.write_attribute(:results_enabled, true)
|
||||||
|
poll.write_attribute(:stats_enabled, true)
|
||||||
|
poll.save
|
||||||
|
end
|
||||||
|
|
||||||
|
Migrations::Reports.new.migrate
|
||||||
|
|
||||||
|
expect(Poll.last.results_enabled).to be true
|
||||||
|
expect(Poll.last.stats_enabled).to be true
|
||||||
|
expect(Poll.last.advanced_stats_enabled).to be true
|
||||||
|
end
|
||||||
|
|
||||||
|
it "ignores budgets with existing reports" do
|
||||||
|
create(:budget, results_enabled: false, stats_enabled: false, advanced_stats_enabled: false)
|
||||||
|
|
||||||
|
Migrations::Reports.new.migrate
|
||||||
|
|
||||||
|
expect(Budget.last.results_enabled).to be false
|
||||||
|
expect(Budget.last.stats_enabled).to be false
|
||||||
|
expect(Budget.last.advanced_stats_enabled).to be false
|
||||||
|
end
|
||||||
|
|
||||||
|
it "enables results and stats for every budget" do
|
||||||
|
create(:budget)
|
||||||
|
|
||||||
|
Migrations::Reports.new.migrate
|
||||||
|
|
||||||
|
expect(Budget.last.results_enabled).to be true
|
||||||
|
expect(Budget.last.stats_enabled).to be true
|
||||||
|
expect(Budget.last.advanced_stats_enabled).to be true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user