import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, screen} from 'sentry-test/reactTestingLibrary';
import {CustomMeasurementsProvider} from 'sentry/utils/customMeasurements/customMeasurementsProvider';
import useCustomMeasurements from 'sentry/utils/useCustomMeasurements';
function TestComponent({other}: {other: string}) {
const {customMeasurements} = useCustomMeasurements();
return (
{other}
{customMeasurements &&
Object.keys(customMeasurements).map(customMeasurement => (
{customMeasurement}
))}
);
}
function mockMeasurementsMeta() {
return MockApiClient.addMockResponse({
url: `/organizations/org-slug/measurements-meta/`,
body: {
'measurements.custom.measurement': {
functions: ['p99'],
},
'measurements.another.custom.measurement': {
functions: ['p99'],
},
},
});
}
describe('useCustomMeasurements', function () {
it('provides customMeasurements from the custom measurements context', async function () {
const {organization} = initializeOrg({
organization: {features: ['dashboards-mep']},
project: undefined,
projects: [],
router: {},
});
const measurementsMetaMock = mockMeasurementsMeta();
render(
);
// Should forward prop
expect(screen.getByText('value')).toBeInTheDocument();
expect(measurementsMetaMock).toHaveBeenCalledTimes(1);
// Renders custom measurements
expect(
await screen.findByText('measurements.custom.measurement')
).toBeInTheDocument();
expect(
screen.getByText('measurements.another.custom.measurement')
).toBeInTheDocument();
});
});