12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import {OrganizationFixture} from 'sentry-fixture/organization';
- import {SubscriptionFixture} from 'getsentry-test/fixtures/subscription';
- import {calculateTotalSpend} from './utils';
- describe('calculateTotalSpend', () => {
- const organization = OrganizationFixture({features: ['ondemand-budgets']});
- it('should calculate reserved usage based on total price', () => {
- const subscription = SubscriptionFixture({
- organization,
- planTier: 'am2',
- plan: 'am2_f',
- onDemandSpendUsed: 0,
- });
- subscription.categories.errors!.onDemandSpendUsed = 0;
- subscription.planDetails.planCategories.errors = [
- {events: 100_000, price: 10000, unitPrice: 0.1, onDemandPrice: 0.2},
- ];
- subscription.categories.errors!.reserved = 100_000;
- subscription.categories.errors!.usage = 50_000;
- expect(calculateTotalSpend(subscription)).toEqual({
- prepaidTotalSpent: 5000,
- prepaidTotalPrice: 10000,
- onDemandTotalSpent: 0,
- });
- });
- it('should calculate on demand usage', () => {
- const subscription = SubscriptionFixture({
- organization,
- planTier: 'am2',
- plan: 'am2_f',
- });
- subscription.categories.errors!.onDemandSpendUsed = 10_000;
- subscription.planDetails.planCategories.errors = [
- {events: 100_000, price: 10000, unitPrice: 0.1, onDemandPrice: 0.2},
- ];
- subscription.categories.errors!.reserved = 100_000;
- // Usage exceeds reserved
- subscription.categories.errors!.usage = 150_000;
- expect(calculateTotalSpend(subscription)).toEqual({
- prepaidTotalSpent: 10_000,
- prepaidTotalPrice: 10_000,
- // Directly from onDemandSpendUsed
- onDemandTotalSpent: 10_000,
- });
- });
- it('should convert annual prepaid price to monthly', () => {
- const subscription = SubscriptionFixture({
- organization,
- planTier: 'am2',
- plan: 'am2_f',
- });
- subscription.planDetails.billingInterval = 'annual';
- const monthlyPrice = 10000;
- subscription.planDetails.planCategories.errors = [
- {events: 100_000, price: monthlyPrice * 12, unitPrice: 0.1, onDemandPrice: 0.2},
- ];
- expect(calculateTotalSpend(subscription)).toEqual({
- prepaidTotalSpent: 0,
- prepaidTotalPrice: monthlyPrice,
- onDemandTotalSpent: 0,
- });
- });
- });
|