import {mountWithTheme} from 'sentry-test/enzyme'; import {act} from 'sentry-test/reactTestingLibrary'; import PageFiltersStore from 'sentry/stores/pageFiltersStore'; import withPageFilters from 'sentry/utils/withPageFilters'; describe('withPageFilters HoC', function () { beforeEach(() => { PageFiltersStore.init(); }); afterEach(() => { PageFiltersStore.reset(); }); it('handles projects', function () { const MyComponent = () => null; const Container = withPageFilters(MyComponent); const wrapper = mountWithTheme(); expect(wrapper.find('MyComponent').prop('selection').projects).toEqual([]); act(() => PageFiltersStore.updateProjects([1])); wrapper.update(); expect(wrapper.find('MyComponent').prop('selection').projects).toEqual([1]); }); it('handles datetime', function () { let selection; const MyComponent = () => null; const Container = withPageFilters(MyComponent); const wrapper = mountWithTheme(); selection = wrapper.find('MyComponent').prop('selection'); expect(selection.datetime.period).toEqual('14d'); expect(selection.datetime.start).toEqual(null); expect(selection.datetime.end).toEqual(null); act(() => PageFiltersStore.updateDateTime({ period: '7d', start: null, end: null, }) ); wrapper.update(); selection = wrapper.find('MyComponent').prop('selection'); expect(selection.datetime.period).toEqual('7d'); expect(selection.datetime.start).toEqual(null); expect(selection.datetime.end).toEqual(null); act(() => PageFiltersStore.updateDateTime({ period: null, start: '2018-08-08T00:00:00', end: '2018-08-08T00:00:00', }) ); wrapper.update(); selection = wrapper.find('MyComponent').prop('selection'); expect(selection.datetime.period).toEqual(null); expect(selection.datetime.start).toEqual('2018-08-08T00:00:00'); expect(selection.datetime.end).toEqual('2018-08-08T00:00:00'); }); it('handles environments', function () { const MyComponent = () => null; const Container = withPageFilters(MyComponent); const wrapper = mountWithTheme(); expect(wrapper.find('MyComponent').prop('selection').environments).toEqual([]); act(() => PageFiltersStore.updateEnvironments(['beta', 'alpha'])); wrapper.update(); expect(wrapper.find('MyComponent').prop('selection').environments).toEqual([ 'beta', 'alpha', ]); }); });