183 lines
4.7 KiB
Ruby
183 lines
4.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require 'spec_helper'
|
|
|
|
RSpec.describe Gitlab::UsageDataCounters::QuickActionActivityUniqueCounter, :clean_gitlab_redis_shared_state do
|
|
let(:user) { build(:user, id: 1) }
|
|
let(:note) { build(:note, author: user) }
|
|
let(:args) { nil }
|
|
|
|
shared_examples_for 'a tracked quick action unique event' do
|
|
specify do
|
|
expect { 3.times { subject } }
|
|
.to change {
|
|
Gitlab::UsageDataCounters::HLLRedisCounter.unique_events(
|
|
event_names: action,
|
|
start_date: 2.weeks.ago,
|
|
end_date: 2.weeks.from_now
|
|
)
|
|
}
|
|
.by(1)
|
|
end
|
|
end
|
|
|
|
subject { described_class.track_unique_action(quickaction_name, args: args, user: user) }
|
|
|
|
describe '.track_unique_action' do
|
|
let(:quickaction_name) { 'approve' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_approve' }
|
|
end
|
|
end
|
|
|
|
context 'tracking assigns' do
|
|
let(:quickaction_name) { 'assign' }
|
|
|
|
context 'single assignee' do
|
|
let(:args) { '@one' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_assign_single' }
|
|
end
|
|
end
|
|
|
|
context 'multiple assignees' do
|
|
let(:args) { '@one @two' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_assign_multiple' }
|
|
end
|
|
end
|
|
|
|
context 'assigning "me"' do
|
|
let(:args) { 'me' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_assign_self' }
|
|
end
|
|
end
|
|
|
|
context 'assigning a reviewer' do
|
|
let(:quickaction_name) { 'assign_reviewer' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_assign_reviewer' }
|
|
end
|
|
end
|
|
|
|
context 'assigning a reviewer with request review alias' do
|
|
let(:quickaction_name) { 'request_review' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_assign_reviewer' }
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'tracking copy_metadata' do
|
|
let(:quickaction_name) { 'copy_metadata' }
|
|
|
|
context 'for issues' do
|
|
let(:args) { '#123' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_copy_metadata_issue' }
|
|
end
|
|
end
|
|
|
|
context 'for merge requests' do
|
|
let(:args) { '!123' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_copy_metadata_merge_request' }
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'tracking spend' do
|
|
let(:quickaction_name) { 'spend' }
|
|
|
|
context 'adding time' do
|
|
let(:args) { '1d' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_spend_add' }
|
|
end
|
|
end
|
|
|
|
context 'removing time' do
|
|
let(:args) { '-1d' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_spend_subtract' }
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'tracking unassign' do
|
|
let(:quickaction_name) { 'unassign' }
|
|
|
|
context 'unassigning everyone' do
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_unassign_all' }
|
|
end
|
|
end
|
|
|
|
context 'unassigning specific users' do
|
|
let(:args) { '@hello' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_unassign_specific' }
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'tracking unlabel' do
|
|
context 'called as unlabel' do
|
|
let(:quickaction_name) { 'unlabel' }
|
|
|
|
context 'removing all labels' do
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_unlabel_all' }
|
|
end
|
|
end
|
|
|
|
context 'removing specific labels' do
|
|
let(:args) { '~wow' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_unlabel_specific' }
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'called as remove_label' do
|
|
let(:quickaction_name) { 'remove_label' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_unlabel_all' }
|
|
end
|
|
end
|
|
end
|
|
|
|
context 'tracking invite_email' do
|
|
let(:quickaction_name) { 'invite_email' }
|
|
|
|
context 'single email' do
|
|
let(:args) { 'someone@gitlab.com' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_invite_email_single' }
|
|
end
|
|
end
|
|
|
|
context 'multiple emails' do
|
|
let(:args) { 'someone@gitlab.com another@gitlab.com' }
|
|
|
|
it_behaves_like 'a tracked quick action unique event' do
|
|
let(:action) { 'i_quickactions_invite_email_multiple' }
|
|
end
|
|
end
|
|
end
|
|
end
|