diff --git a/ee/app/models/license.rb b/ee/app/models/license.rb index ebb3af11940086648984857138843fbbe644f7ae..bcba572ab94bc348a95d35012e3e13ee64c32e1c 100644 --- a/ee/app/models/license.rb +++ b/ee/app/models/license.rb @@ -47,6 +47,7 @@ class License < ApplicationRecord after_create :update_trial_setting after_commit :reset_current after_commit :reset_future_dated, on: [:create, :destroy] + after_commit :update_billable_user_counts, on: :create scope :cloud, -> { where(cloud: true) } scope :recent, -> { reorder(id: :desc) } @@ -361,6 +362,11 @@ def update_trial_setting settings.update license_trial_ends_on: license.expires_at end + def update_billable_user_counts + identifier = Analytics::UsageTrends::Measurement.identifiers[:billable_users] + ::Analytics::UsageTrends::CounterJobWorker.perform_async(identifier, User.minimum(:id), User.maximum(:id), Time.zone.now) + end + def paid? [License::STARTER_PLAN, License::PREMIUM_PLAN, License::ULTIMATE_PLAN].include?(plan) end diff --git a/ee/spec/models/license_spec.rb b/ee/spec/models/license_spec.rb index f395a55b5a48a144c9ce066493c411cea9e2cb9c..ac92cee41eb082c7c36c4ada93fcdd25018e6412 100644 --- a/ee/spec/models/license_spec.rb +++ b/ee/spec/models/license_spec.rb @@ -18,6 +18,10 @@ def build_license_with_add_ons(add_ons, plan: nil) build(:license, data: gl_license.export) end + before do + allow(::Analytics::UsageTrends::CounterJobWorker).to receive(:perform_async) + end + describe 'validations' do describe '#valid_license' do subject(:license) { build(:license, data: gl_license.class.encryptor.encrypt(gl_license.to_json)) } @@ -626,6 +630,14 @@ def current_license_cached_value end end end + + describe '#update_billable_user_counts' do + subject!(:license) { create(:license, data: gl_license.export, starts_at: Date.current) } + + it 'updates billable user counts' do + expect(::Analytics::UsageTrends::CounterJobWorker).to have_received(:perform_async).once + end + end end describe 'Scopes' do diff --git a/ee/spec/requests/api/license_spec.rb b/ee/spec/requests/api/license_spec.rb index f8c12a0004c8c9e761503aabe50586f775e78f4c..3dcec170b170c57cf9c801af589382ccc669afdd 100644 --- a/ee/spec/requests/api/license_spec.rb +++ b/ee/spec/requests/api/license_spec.rb @@ -235,7 +235,7 @@ def license_json(license) end describe 'PUT /license/:id/refresh_billable_users' do - let(:license) { create(:license) } + let!(:license) { create(:license) } let(:endpoint) { "/license/#{license.id}/refresh_billable_users" } before do