helpSearchModal.spec.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import {MembersFixture} from 'sentry-fixture/members';
  2. import {OrganizationFixture} from 'sentry-fixture/organization';
  3. import {ProjectFixture} from 'sentry-fixture/project';
  4. import {TeamFixture} from 'sentry-fixture/team';
  5. import {act, renderGlobalModal, screen} from 'sentry-test/reactTestingLibrary';
  6. import {openHelpSearchModal} from 'sentry/actionCreators/modal';
  7. describe('Docs Search Modal', function () {
  8. beforeEach(function () {
  9. const organization = OrganizationFixture();
  10. MockApiClient.addMockResponse({
  11. url: '/organizations/',
  12. body: [organization],
  13. });
  14. MockApiClient.addMockResponse({
  15. url: '/organizations/org-slug/',
  16. body: organization,
  17. });
  18. MockApiClient.addMockResponse({
  19. url: '/organizations/org-slug/projects/',
  20. body: [ProjectFixture({slug: 'foo-project'})],
  21. });
  22. MockApiClient.addMockResponse({
  23. url: '/organizations/org-slug/teams/',
  24. body: [TeamFixture({slug: 'foo-team'})],
  25. });
  26. MockApiClient.addMockResponse({
  27. url: '/organizations/org-slug/members/',
  28. body: MembersFixture(),
  29. });
  30. MockApiClient.addMockResponse({
  31. url: '/organizations/org-slug/plugins/?plugins=_all',
  32. body: [],
  33. });
  34. MockApiClient.addMockResponse({
  35. url: '/organizations/org-slug/config/integrations/',
  36. body: [],
  37. });
  38. MockApiClient.addMockResponse({
  39. url: '/assistant/',
  40. body: [],
  41. });
  42. });
  43. it('can open help search modal', async function () {
  44. renderGlobalModal();
  45. // No Modal
  46. expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
  47. // Open Modal
  48. await act(() => openHelpSearchModal());
  49. // Should have Modal + input
  50. expect(await screen.findByRole('dialog')).toBeInTheDocument();
  51. expect(screen.getByRole('textbox')).toHaveAttribute(
  52. 'placeholder',
  53. 'Search for documentation, FAQs, blog posts...'
  54. );
  55. });
  56. });