withSentryRouter.spec.tsx 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import {WithRouterProps} from 'react-router';
  2. import {initializeOrg} from 'sentry-test/initializeOrg';
  3. import {render, screen} from 'sentry-test/reactTestingLibrary';
  4. // eslint-disable-next-line no-restricted-imports
  5. import withSentryRouter from 'sentry/utils/withSentryRouter';
  6. const mockUsingCustomerDomain = jest.fn();
  7. const mockCustomerDomain = jest.fn();
  8. jest.mock('sentry/constants', () => {
  9. const sentryConstant = jest.requireActual('sentry/constants');
  10. return {
  11. ...sentryConstant,
  12. get usingCustomerDomain() {
  13. return mockUsingCustomerDomain();
  14. },
  15. get customerDomain() {
  16. return mockCustomerDomain();
  17. },
  18. };
  19. });
  20. describe('withSentryRouter', function () {
  21. type Props = WithRouterProps<{orgId: string}>;
  22. const MyComponent = (props: Props) => {
  23. const {params} = props;
  24. return <div>Org slug: {params.orgId ?? 'no org slug'}</div>;
  25. };
  26. it('injects orgId when a customer domain is being used', function () {
  27. mockUsingCustomerDomain.mockReturnValue(true);
  28. mockCustomerDomain.mockReturnValue('albertos-apples');
  29. const organization = TestStubs.Organization({
  30. slug: 'albertos-apples',
  31. features: [],
  32. });
  33. const {routerContext} = initializeOrg({
  34. ...initializeOrg(),
  35. organization,
  36. });
  37. const WrappedComponent = withSentryRouter(MyComponent);
  38. render(<WrappedComponent />, {
  39. context: routerContext,
  40. });
  41. expect(screen.getByText('Org slug: albertos-apples')).toBeInTheDocument();
  42. });
  43. it('does not inject orgId when a customer domain is not being used', function () {
  44. mockUsingCustomerDomain.mockReturnValue(false);
  45. mockCustomerDomain.mockReturnValue(undefined);
  46. const organization = TestStubs.Organization({
  47. slug: 'albertos-apples',
  48. features: [],
  49. });
  50. const params = {
  51. orgId: 'something-else',
  52. };
  53. const {routerContext} = initializeOrg({
  54. ...initializeOrg(),
  55. organization,
  56. router: {
  57. params,
  58. },
  59. });
  60. const WrappedComponent = withSentryRouter(MyComponent);
  61. render(<WrappedComponent />, {
  62. context: routerContext,
  63. });
  64. expect(screen.getByText('Org slug: something-else')).toBeInTheDocument();
  65. });
  66. });