import {mountWithTheme} from 'sentry-test/enzyme'; import {Client} from 'sentry/api'; import OrganizationProjectsContainer from 'sentry/views/settings/organizationProjects'; describe('OrganizationProjects', function () { let org; let project; let projectsGetMock; let statsGetMock; let projectsPutMock; const routerContext = TestStubs.routerContext(); beforeEach(function () { project = TestStubs.Project(); org = TestStubs.Organization(); projectsGetMock = Client.addMockResponse({ url: '/organizations/org-slug/projects/', body: [project], }); statsGetMock = Client.addMockResponse({ url: '/organizations/org-slug/stats/', body: [[[], 1]], }); projectsPutMock = Client.addMockResponse({ method: 'PUT', url: '/projects/org-slug/project-slug/', }); }); afterEach(function () { Client.clearMockResponses(); }); it('should render the projects in the store', function () { const wrapper = mountWithTheme( ); expect(wrapper).toSnapshot(); expect(wrapper.find('ProjectBadge').text()).toBe('project-slug'); expect(projectsGetMock).toHaveBeenCalledTimes(1); expect(statsGetMock).toHaveBeenCalledTimes(1); expect(projectsPutMock).toHaveBeenCalledTimes(0); wrapper.find('BookmarkStar').simulate('click'); expect(wrapper.find('BookmarkStar').prop('isBookmarked')).toBeTruthy(); expect(projectsPutMock).toHaveBeenCalledTimes(1); }); it('should search organization projects', function () { const searchMock = MockApiClient.addMockResponse({ url: `/organizations/${org.slug}/projects/`, body: [], }); const wrapper = mountWithTheme( , routerContext ); wrapper .find('AsyncComponentSearchInput Input') .simulate('change', {target: {value: `${project.slug}`}}); expect(searchMock).toHaveBeenLastCalledWith( `/organizations/${org.slug}/projects/`, expect.objectContaining({ method: 'GET', query: { query: project.slug, }, }) ); wrapper.find('SearchWrapper form').simulate('submit'); expect(routerContext.context.router.push).toHaveBeenCalledTimes(1); }); });