test_organization_switch.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from __future__ import absolute_import
  2. from sentry.testutils import AcceptanceTestCase, SnubaTestCase
  3. class OrganizationSwitchTest(AcceptanceTestCase, SnubaTestCase):
  4. def setUp(self):
  5. super(OrganizationSwitchTest, self).setUp()
  6. self.primary_projects = [
  7. self.create_project(organization=self.organization, teams=[self.team], name=name)
  8. for name in ["Bengal", "Sumatra", "Siberian"]
  9. ]
  10. self.secondary_organization = self.create_organization(owner=self.user, name="Banana Duck")
  11. self.secondary_team = self.create_team(
  12. organization=self.secondary_organization, name="Second", members=[self.user]
  13. )
  14. self.secondary_projects = [
  15. self.create_project(
  16. organization=self.secondary_organization, teams=[self.secondary_team], name=name
  17. )
  18. for name in ["Gone Goose", "Peaceful Platypus"]
  19. ]
  20. self.login_as(self.user)
  21. def test_organization_switches(self):
  22. def navigate_to_issues_page_and_select_projects(org_slug):
  23. issues_url = OrganizationSwitchTest.url_creator("issues", org_slug)
  24. self.browser.get(issues_url)
  25. self.browser.wait_until_not(".loading-indicator")
  26. self.browser.click_when_visible(
  27. selector='[data-test-id="global-header-project-selector"]', timeout=10
  28. )
  29. def get_project_elements_from_project_selector_dropdown():
  30. return self.browser.driver.find_elements_by_css_selector(
  31. '[data-test-id="autocomplete-list"] [data-test-id="badge-display-name"]'
  32. )
  33. transition_urls = [
  34. OrganizationSwitchTest.url_creator(page, self.organization.slug)
  35. for page in ["issues", "releases" "discover", "user-feedback"]
  36. ]
  37. with self.settings(SENTRY_SINGLE_ORGANIZATION=False), self.feature(
  38. "organizations:discover"
  39. ):
  40. for transition_url in transition_urls:
  41. navigate_to_issues_page_and_select_projects(self.organization.slug)
  42. primary_projects_elements = get_project_elements_from_project_selector_dropdown()
  43. OrganizationSwitchTest.expect_projects_element_text_to_match_projects_slug(
  44. primary_projects_elements, self.primary_projects
  45. )
  46. self.browser.get(transition_url)
  47. self.browser.wait_until_not(".loading-indicator")
  48. navigate_to_issues_page_and_select_projects(self.secondary_organization.slug)
  49. secondary_projects_elements = get_project_elements_from_project_selector_dropdown()
  50. OrganizationSwitchTest.expect_projects_element_text_to_match_projects_slug(
  51. secondary_projects_elements, self.secondary_projects
  52. )
  53. @staticmethod
  54. def expect_projects_element_text_to_match_projects_slug(elements, projects):
  55. assert len(elements) == len(projects)
  56. assert {e.text for e in elements} == {p.slug for p in projects}
  57. @staticmethod
  58. def url_creator(page_path, org_slug):
  59. return u"organizations/{org_id}/{page_path}/".format(org_id=org_slug, page_path=page_path)