123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- import {act, render, screen} from 'sentry-test/reactTestingLibrary';
- import PageFiltersStore from 'sentry/stores/pageFiltersStore';
- import {PageFilters} from 'sentry/types';
- import withPageFilters from 'sentry/utils/withPageFilters';
- describe('withPageFilters HoC', function () {
- beforeEach(() => {
- PageFiltersStore.reset();
- PageFiltersStore.init();
- });
- it('handles projects', function () {
- const PrintProjectsComponent = ({selection}: {selection: PageFilters}) => {
- return (
- <div>
- {selection.projects.map(project => (
- <div data-test-id="project" key={project}>
- {project}
- </div>
- ))}
- </div>
- );
- };
- const Container = withPageFilters(PrintProjectsComponent);
- render(<Container />);
- expect(screen.queryByTestId('project')).not.toBeInTheDocument();
- act(() => PageFiltersStore.updateProjects([1, 2], []));
- expect(screen.getAllByTestId('project')).toHaveLength(2);
- expect(screen.getAllByTestId('project')[0]).toHaveTextContent('1');
- expect(screen.getAllByTestId('project')[1]).toHaveTextContent('2');
- });
- it('handles datetime', function () {
- const PrintDatetimeComponent = ({selection}) => {
- return (
- <div>
- <div data-test-id="period">{selection.datetime.period}</div>
- <div data-test-id="start">{selection.datetime.start}</div>
- <div data-test-id="end">{selection.datetime.end}</div>
- </div>
- );
- };
- const Container = withPageFilters(PrintDatetimeComponent);
- render(<Container />);
- expect(screen.getByTestId('period')).toHaveTextContent('14d');
- expect(screen.getByTestId('start')).toBeEmptyDOMElement();
- expect(screen.getByTestId('end')).toBeEmptyDOMElement();
- act(() =>
- PageFiltersStore.updateDateTime({
- period: '7d',
- start: null,
- end: null,
- utc: true,
- })
- );
- expect(screen.getByTestId('period')).toHaveTextContent('7d');
- expect(screen.getByTestId('start')).toBeEmptyDOMElement();
- expect(screen.getByTestId('end')).toBeEmptyDOMElement();
- act(() =>
- PageFiltersStore.updateDateTime({
- period: null,
- start: '2018-08-08T00:00:00',
- end: '2018-08-09T00:00:00',
- utc: true,
- })
- );
- expect(screen.getByTestId('period')).toBeEmptyDOMElement();
- expect(screen.getByTestId('start')).toHaveTextContent('2018-08-08T00:00:00');
- expect(screen.getByTestId('end')).toHaveTextContent('2018-08-09T00:00:00');
- });
- it('handles environments', function () {
- const PrintProjectsComponent = ({selection}) => {
- return (
- <div>
- {selection.environments.map(env => (
- <div data-test-id="environment" key={env}>
- {env}
- </div>
- ))}
- </div>
- );
- };
- const Container = withPageFilters(PrintProjectsComponent);
- render(<Container />);
- expect(screen.queryByTestId('environment')).not.toBeInTheDocument();
- act(() => PageFiltersStore.updateEnvironments(['beta', 'alpha']));
- expect(screen.getAllByTestId('environment')).toHaveLength(2);
- expect(screen.getAllByTestId('environment')[0]).toHaveTextContent('beta');
- expect(screen.getAllByTestId('environment')[1]).toHaveTextContent('alpha');
- });
- });
|