From 80edfe469cb8b1bf11b89e13cc87f1d703a71f7a Mon Sep 17 00:00:00 2001 From: Pau Perez Date: Thu, 24 Oct 2019 12:55:22 +0200 Subject: [PATCH] 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. --- lib/tasks/users.rake | 27 +++++++++++++++++++++++++++ spec/lib/tasks/users_rake_spec.rb | 28 ++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 lib/tasks/users.rake create mode 100644 spec/lib/tasks/users_rake_spec.rb diff --git a/lib/tasks/users.rake b/lib/tasks/users.rake new file mode 100644 index 0000000000..38f888968d --- /dev/null +++ b/lib/tasks/users.rake @@ -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 diff --git a/spec/lib/tasks/users_rake_spec.rb b/spec/lib/tasks/users_rake_spec.rb new file mode 100644 index 0000000000..46a6711944 --- /dev/null +++ b/spec/lib/tasks/users_rake_spec.rb @@ -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