Add task to connect all enterprises

Example usage:
 rake ofn:enterprises:activate_connected_app_type[affiliate_sales_data]
This commit is contained in:
David Cook
2024-07-25 17:37:44 +10:00
parent e9d7a0b099
commit df81e8ed35
2 changed files with 34 additions and 0 deletions

View File

@@ -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

View File

@@ -20,4 +20,26 @@ RSpec.describe 'enterprises.rake' do
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