Task to remove limit of ent. that can be created

It does so by updating a user's enterprise_limit attribute to the
maximum integer the database supports.

This is used at least in Katuma to remove the limitation of the number
of enterprises a user can create. This is the agreement the community
reached for the pricing plans.

Eventually, this logic could be triggered with a button from the UI but
for now this is for internal usage only.
This commit is contained in:
Pau Perez
2019-10-24 12:55:22 +02:00
parent 0ac0bdc381
commit 80edfe469c
2 changed files with 55 additions and 0 deletions

27
lib/tasks/users.rake Normal file
View File

@@ -0,0 +1,27 @@
require 'csv'
namespace :ofn do
desc 'remove the limit of enterprises a user can create'
task :remove_enterprise_limit, [:user_id] => :environment do |_task, args|
RemoveEnterpriseLimit.new(args.user_id).call
end
class RemoveEnterpriseLimit
# rubocop:disable Style/NumericLiterals
MAX_INTEGER = 2147483647
# rubocop:enable Style/NumericLiterals
def initialize(user_id)
@user_id = user_id
end
def call
user = Spree::User.find(user_id)
user.update_attribute(:enterprise_limit, MAX_INTEGER)
end
private
attr_reader :user_id
end
end

View File

@@ -0,0 +1,28 @@
require 'spec_helper'
require 'rake'
describe 'users.rake' do
describe ':remove_enterprise_limit' do
context 'when the user exists' do
it 'sets the enterprise_limit to the maximum integer' do
Rake.application.rake_require 'tasks/users'
Rake::Task.define_task(:environment)
max_integer = 2147483647
user = create(:user)
Rake.application.invoke_task "ofn:remove_enterprise_limit[#{user.id}]"
expect(user.reload.enterprise_limit).to eq(max_integer)
end
end
context 'when the user does not exist' do
it 'raises' do
expect {
RemoveEnterpriseLimit.new(-1).call
}.to raise_error(ActiveRecord::RecordNotFound)
end
end
end
end