Skip to content

Commit 0729902

Browse files
authored
1 parent 34269b7 commit 0729902

File tree

3 files changed

+59
-0
lines changed

3 files changed

+59
-0
lines changed

static/gsApp/utils/trackGetsentryAnalytics.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,10 @@ type OnDemandBudgetStrategy = 'per_category' | 'shared';
2828
type OnDemandBudgetUpdate = {
2929
attachment_budget: number;
3030
error_budget: number;
31+
log_byte_budget: number;
3132
previous_attachment_budget: number;
3233
previous_error_budget: number;
34+
previous_log_byte_budget: number;
3335
previous_strategy: OnDemandBudgetStrategy;
3436
previous_total_budget: number;
3537
previous_transaction_budget: number;

static/gsApp/views/onDemandBudgets/utils.spec.tsx

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,17 @@ import {
88
import {DataCategory} from 'sentry/types/core';
99

1010
import {OnDemandBudgetMode, type OnDemandBudgets} from 'getsentry/types';
11+
import trackGetsentryAnalytics from 'getsentry/utils/trackGetsentryAnalytics';
1112
import {
1213
exceedsInvoicedBudgetLimit,
1314
getOnDemandBudget,
1415
getTotalBudget,
1516
parseOnDemandBudgetsFromSubscription,
17+
trackOnDemandBudgetAnalytics,
1618
} from 'getsentry/views/onDemandBudgets/utils';
1719

20+
jest.mock('getsentry/utils/trackGetsentryAnalytics');
21+
1822
describe('parseOnDemandBudgetsFromSubscription', function () {
1923
it('returns per-category budget for non-AM plans - with on-demand budget', function () {
2024
const organization = OrganizationFixture();
@@ -548,3 +552,54 @@ describe('getOnDemandBudget', function () {
548552
expect(getOnDemandBudget(budget, DataCategory.LOG_BYTE)).toBe(1000);
549553
});
550554
});
555+
556+
describe('trackOnDemandBudgetAnalytics', function () {
557+
it('tracks all budget categories in analytics when budget changes', function () {
558+
const organization = OrganizationFixture();
559+
560+
const previousBudget: OnDemandBudgets = {
561+
budgetMode: OnDemandBudgetMode.PER_CATEGORY,
562+
errorsBudget: 100,
563+
transactionsBudget: 200,
564+
attachmentsBudget: 300,
565+
replaysBudget: 0,
566+
budgets: {
567+
errors: 100,
568+
transactions: 200,
569+
attachments: 300,
570+
logBytes: 400,
571+
},
572+
};
573+
574+
const newBudget: OnDemandBudgets = {
575+
budgetMode: OnDemandBudgetMode.PER_CATEGORY,
576+
errorsBudget: 150,
577+
transactionsBudget: 250,
578+
attachmentsBudget: 350,
579+
replaysBudget: 0,
580+
budgets: {
581+
errors: 150,
582+
transactions: 250,
583+
attachments: 350,
584+
logBytes: 500,
585+
},
586+
};
587+
588+
trackOnDemandBudgetAnalytics(organization, previousBudget, newBudget);
589+
590+
expect(trackGetsentryAnalytics).toHaveBeenCalledWith(
591+
'ondemand_budget_modal.ondemand_budget.update',
592+
expect.objectContaining({
593+
organization,
594+
error_budget: 150,
595+
transaction_budget: 250,
596+
attachment_budget: 350,
597+
log_byte_budget: 500,
598+
previous_error_budget: 100,
599+
previous_transaction_budget: 200,
600+
previous_attachment_budget: 300,
601+
previous_log_byte_budget: 400,
602+
})
603+
);
604+
});
605+
});

static/gsApp/views/onDemandBudgets/utils.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ export function trackOnDemandBudgetAnalytics(
207207
error_budget: getOnDemandBudget(newBudget, DataCategory.ERRORS),
208208
transaction_budget: getOnDemandBudget(newBudget, DataCategory.TRANSACTIONS),
209209
attachment_budget: getOnDemandBudget(newBudget, DataCategory.ATTACHMENTS),
210+
log_byte_budget: getOnDemandBudget(newBudget, DataCategory.LOG_BYTE),
210211

211212
// previous budget
212213
previous_strategy: getBudgetMode(previousBudget),
@@ -220,6 +221,7 @@ export function trackOnDemandBudgetAnalytics(
220221
previousBudget,
221222
DataCategory.ATTACHMENTS
222223
),
224+
previous_log_byte_budget: getOnDemandBudget(previousBudget, DataCategory.LOG_BYTE),
223225
});
224226
return;
225227
}

0 commit comments

Comments
 (0)