Skip to content

Commit 11f4ebb

Browse files
committed
chore(pr): Update to align with #97969
1 parent 2aee9eb commit 11f4ebb

File tree

4 files changed

+36
-31
lines changed

4 files changed

+36
-31
lines changed

static/app/types/hooks.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -330,9 +330,11 @@ type ReactHooks = {
330330
'react-hook:use-button-tracking': (props: ButtonProps) => () => void;
331331
'react-hook:use-get-max-retention-days': () => number | undefined;
332332
'react-hook:use-metric-detector-limit': () => {
333-
isLimitExceeded: boolean;
334-
limit: number;
335-
numMetricMonitors: number;
333+
detectorCount: number;
334+
detectorLimit: number;
335+
hasReachedLimit: boolean;
336+
isError: boolean;
337+
isLoading: boolean;
336338
} | null;
337339
};
338340

static/gsApp/components/metricAlertQuotaMessage.spec.tsx

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ jest.mock('getsentry/actionCreators/modal', () => ({
1515
openUpsellModal: jest.fn(),
1616
}));
1717

18-
const mockUseMetricDetectorLimit = useMetricDetectorLimit as unknown as jest.Mock;
18+
const mockuseMetricDetectorLimit = useMetricDetectorLimit as unknown as jest.Mock;
1919

2020
describe('MetricAlertQuotaMessage', () => {
2121
beforeEach(() => {
2222
jest.clearAllMocks();
2323
});
2424

2525
it('renders nothing when hook returns null', () => {
26-
mockUseMetricDetectorLimit.mockReturnValue(null);
26+
mockuseMetricDetectorLimit.mockReturnValue(null);
2727

2828
const {container} = render(<MetricAlertQuotaMessage />, {
2929
organization: OrganizationFixture(),
@@ -32,20 +32,18 @@ describe('MetricAlertQuotaMessage', () => {
3232
expect(container).toBeEmptyDOMElement();
3333
});
3434

35-
it('renders approaching limit message with upgrade action', async () => {
36-
mockUseMetricDetectorLimit.mockReturnValue({
37-
isLimitExceeded: false,
38-
limit: 11,
39-
numMetricMonitors: 10,
35+
it('renders approaching detectorLimit message with upgrade action', async () => {
36+
mockuseMetricDetectorLimit.mockReturnValue({
37+
hasReachedLimit: false,
38+
detectorLimit: 11,
39+
detectorCount: 10,
4040
});
4141

4242
const organization = OrganizationFixture({slug: 'acme'});
4343

4444
render(<MetricAlertQuotaMessage />, {organization});
4545

46-
expect(
47-
await screen.findByText(/approaching the limit of 11 metric monitors/i)
48-
).toBeInTheDocument();
46+
expect(await screen.findByText(/used 10 of 11 metric monitors/i)).toBeInTheDocument();
4947

5048
const upgrade = screen.getByRole('button', {name: /upgrade your plan/i});
5149
await userEvent.click(upgrade);
@@ -56,11 +54,11 @@ describe('MetricAlertQuotaMessage', () => {
5654
});
5755
});
5856

59-
it('renders reached limit message with remove and upgrade actions when at limit', async () => {
60-
mockUseMetricDetectorLimit.mockReturnValue({
61-
isLimitExceeded: true,
62-
limit: 20,
63-
numMetricMonitors: 20,
57+
it('renders reached detectorLimit message with remove and upgrade actions when at detectorLimit', async () => {
58+
mockuseMetricDetectorLimit.mockReturnValue({
59+
hasReachedLimit: true,
60+
detectorLimit: 20,
61+
detectorCount: 20,
6462
});
6563

6664
const organization = OrganizationFixture({slug: 'acme'});

static/gsApp/components/metricAlertQuotaMessage.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export function MetricAlertQuotaIcon() {
3333
const metricAlertQuota = useMetricDetectorLimit();
3434
const organization = useOrganization();
3535

36-
if (metricAlertQuota?.isLimitExceeded) {
36+
if (metricAlertQuota?.hasReachedLimit) {
3737
return (
3838
<Tooltip
3939
isHoverable
@@ -57,13 +57,13 @@ export function MetricAlertQuotaMessage() {
5757
const organization = useOrganization();
5858
const metricAlertQuota = useMetricDetectorLimit();
5959

60-
if (metricAlertQuota?.isLimitExceeded) {
60+
if (metricAlertQuota?.hasReachedLimit) {
6161
return (
6262
<DisabledAlertMessageContainer>
6363
{tct(
6464
"You have reached your plan's limit on metric monitors ([limit]). [removeLink:Remove existing monitors] or [upgradeLink:upgrade your plan].",
6565
{
66-
limit: metricAlertQuota.limit.toLocaleString(),
66+
limit: metricAlertQuota.detectorLimit.toLocaleString(),
6767
removeLink: <Link to={makeAlertsPathname({organization, path: '/rules/'})} />,
6868
upgradeLink: <UpgradeLink />,
6969
}
@@ -74,14 +74,15 @@ export function MetricAlertQuotaMessage() {
7474

7575
if (
7676
metricAlertQuota &&
77-
metricAlertQuota.limit === metricAlertQuota.numMetricMonitors + 1
77+
metricAlertQuota.detectorLimit === metricAlertQuota.detectorCount + 1
7878
) {
7979
return (
8080
<DisabledAlertMessageContainer>
8181
{tct(
82-
'You are approaching the limit of [limit] metric monitors for your plan. To increase the limit, [upgradeLink:upgrade your plan].',
82+
'You have used [count] of [limit] metric monitors for your plan. To increase the limit, [upgradeLink:upgrade your plan].',
8383
{
84-
limit: metricAlertQuota.limit.toLocaleString(),
84+
count: metricAlertQuota.detectorCount.toLocaleString(),
85+
limit: metricAlertQuota.detectorLimit.toLocaleString(),
8586
upgradeLink: <UpgradeLink />,
8687
}
8788
)}
Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import useOrganization from 'sentry/utils/useOrganization';
22

33
type MetricDetectorLimitResponse = {
4-
isLimitExceeded: boolean;
5-
limit: number;
6-
numMetricMonitors: number;
7-
} | null; // null means there is no limit
4+
detectorCount: number;
5+
detectorLimit: number;
6+
hasReachedLimit: boolean;
7+
isError: boolean;
8+
isLoading: boolean;
9+
} | null;
810

911
// TODO: Replace with actual hook
1012
export function useMetricDetectorLimit(): MetricDetectorLimitResponse {
@@ -15,8 +17,10 @@ export function useMetricDetectorLimit(): MetricDetectorLimitResponse {
1517
}
1618

1719
return {
18-
isLimitExceeded: true,
19-
numMetricMonitors: 20,
20-
limit: 20,
20+
hasReachedLimit: true,
21+
detectorCount: 20,
22+
detectorLimit: 20,
23+
isError: false,
24+
isLoading: false,
2125
};
2226
}

0 commit comments

Comments
 (0)