diff --git a/lib/tasks/enterprises.rake b/lib/tasks/enterprises.rake index fa735853c26..86c767dddd3 100644 --- a/lib/tasks/enterprises.rake +++ b/lib/tasks/enterprises.rake @@ -12,6 +12,18 @@ namespace :ofn do enterprise.destroy end + namespace :enterprises do + desc "Activate connected app type for ALL enterprises" + task :activate_connected_app_type, [:type] => :environment do |_task, args| + Enterprise.find_each do |enterprise| + next if enterprise.connected_apps.public_send(args.type.underscore).exists? + + "ConnectedApps::#{args.type.camelize}".constantize.new(enterprise:).connect({}) + puts "Enterprise #{enterprise.id} connected." + end + end + end + namespace :dev do desc 'export enterprises to CSV' task export_enterprises: :environment do diff --git a/spec/lib/tasks/enterprises_rake_spec.rb b/spec/lib/tasks/enterprises_rake_spec.rb index 0ebf97b7d72..2e98502f0e1 100644 --- a/spec/lib/tasks/enterprises_rake_spec.rb +++ b/spec/lib/tasks/enterprises_rake_spec.rb @@ -20,4 +20,26 @@ end end end + + describe ':enterprises' do + describe ':activate_connected_app_type' do + it 'updates only disconnected enterprises' do + # enterprise with affiliate sales data + enterprise_asd = create(:enterprise) + enterprise_asd.connected_apps.create type: 'ConnectedApps::AffiliateSalesData' + # enterprise with different type + enterprise_diff = create(:enterprise) + enterprise_diff.connected_apps.create + + expect { + Rake.application.invoke_task( + "ofn:enterprises:activate_connected_app_type[affiliate_sales_data]" + ) + }.to change { ConnectedApps::AffiliateSalesData.count }.by(1) + + expect(enterprise_asd.connected_apps.affiliate_sales_data.count).to eq 1 + expect(enterprise_diff.connected_apps.affiliate_sales_data.count).to eq 1 + end + end + end end