import {ReactElement, useEffect, useMemo} from 'react';
import {initializeOrg} from 'sentry-test/initializeOrg';
import {render, screen} from 'sentry-test/reactTestingLibrary';
import {FunctionsTable} from 'sentry/components/profiling/functionsTable';
import ProjectsStore from 'sentry/stores/projectsStore';
import {OrganizationContext} from 'sentry/views/organizationContext';
import {RouteContext} from 'sentry/views/routeContext';
const organization = TestStubs.Organization();
const project = TestStubs.Project();
function TestContext({children}: {children: ReactElement}) {
const {router} = useMemo(() => initializeOrg({organization, project} as any), []);
useEffect(() => {
ProjectsStore.loadInitialData([project]);
return () => ProjectsStore.reset();
}, []);
return (
{children}
);
}
describe('FunctionsTable', function () {
it('renders loading', function () {
render(
);
expect(screen.getByTestId('loading-indicator')).toBeInTheDocument();
});
it('renders empty data', function () {
render(
);
expect(screen.getByText('No results found for your query')).toBeInTheDocument();
});
it('renders one function', function () {
const func = {
image: 'libnetwork.dylib',
symbol: 'nw_endpoint_flow_setup_socket',
duration_ns: {
p50: 458843541,
p75: 468843541,
p90: 478843541,
p95: 488843541,
p99: 498843541,
},
duration_ns_values: null,
frequency: {
p50: 0,
p75: 0,
p90: 0.6333333333333346,
p95: 1,
p99: 1,
},
frequency_values: null,
thread_name_to_percent: {
'': 1,
},
line: 0,
path: '',
main_thread_percent: 0.33,
profile_ids: ['75a32ee2e6ed44458f4647b024b615bb'],
profile_id_to_thread_id: {
'75a32ee2e6ed44458f4647b024b615bb': 23555,
},
key: '0dd7251302785a3be078d2a5200016fc',
transaction_names: ['iOS_Swift.ViewController'],
};
render(
);
expect(screen.getByText('Symbol')).toBeInTheDocument();
expect(screen.getByText('nw_endpoint_flow_setup_socket')).toBeInTheDocument();
expect(screen.getByText('Binary')).toBeInTheDocument();
expect(screen.getByText('libnetwork.dylib')).toBeInTheDocument();
expect(screen.getByText('P75 Duration')).toBeInTheDocument();
expect(screen.getByText('468.84ms')).toBeInTheDocument();
expect(screen.getByText('P99 Duration')).toBeInTheDocument();
expect(screen.getByText('498.84ms')).toBeInTheDocument();
expect(screen.getByText('Main Thread %')).toBeInTheDocument();
expect(screen.getByText('33%')).toBeInTheDocument();
expect(screen.getByText('P75 Frequency')).toBeInTheDocument();
expect(screen.getByText('0')).toBeInTheDocument();
expect(screen.getByText('P99 Frequency')).toBeInTheDocument();
expect(screen.getByText('1')).toBeInTheDocument();
});
});