test_organization_discover.py 4.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. from __future__ import absolute_import
  2. import pytz
  3. from sentry.utils.compat.mock import patch
  4. from sentry.testutils import AcceptanceTestCase, SnubaTestCase
  5. from sentry.testutils.helpers.datetime import iso_format, before_now
  6. class OrganizationDiscoverTest(AcceptanceTestCase, SnubaTestCase):
  7. def setUp(self):
  8. super(OrganizationDiscoverTest, self).setUp()
  9. self.login_as(user=self.user, superuser=False)
  10. self.org = self.create_organization(owner=self.user, name="foo")
  11. self.project = self.create_project(organization=self.org, name="Bengal")
  12. sec_ago = iso_format(before_now(seconds=1))
  13. self.event = self.store_event(
  14. data={
  15. "event_id": "a" * 32,
  16. "platform": "python",
  17. "environment": "staging",
  18. "fingerprint": ["group_1"],
  19. "message": "message!",
  20. "tags": {"sentry:release": "foo"},
  21. "exception": {
  22. "values": [
  23. {
  24. "type": "ValidationError",
  25. "value": "Bad request",
  26. "mechanism": {"type": "1", "value": "1"},
  27. "stacktrace": {
  28. "frames": [
  29. {
  30. "function": "?",
  31. "filename": "http://localhost:1337/error.js",
  32. "lineno": 29,
  33. "colno": 3,
  34. "in_app": False,
  35. }
  36. ]
  37. },
  38. }
  39. ]
  40. },
  41. "timestamp": sec_ago,
  42. },
  43. project_id=self.project.id,
  44. )
  45. self.path = u"/organizations/{}/discover/".format(self.org.slug)
  46. self.dismiss_assistant("discover_sidebar")
  47. def test_no_access(self):
  48. self.browser.get(self.path)
  49. self.browser.wait_until_not(".loading")
  50. self.browser.snapshot("discover - no access")
  51. def test_query_builder(self):
  52. with self.feature("organizations:discover"):
  53. self.browser.get(self.path)
  54. self.browser.wait_until_not(".loading")
  55. self.browser.wait_until_not(".is-disabled")
  56. self.browser.snapshot("discover - query builder")
  57. @patch("django.utils.timezone.now")
  58. def test_run_query(self, mock_now):
  59. mock_now.return_value = before_now().replace(tzinfo=pytz.utc)
  60. with self.feature("organizations:discover"):
  61. self.browser.get(self.path)
  62. self.browser.wait_until_not(".loading")
  63. self.browser.click_when_visible('[aria-label="Run"]')
  64. self.browser.wait_until_not(".loading")
  65. self.browser.wait_until_test_id("result")
  66. self.browser.snapshot("discover - query results")
  67. def test_save_query_edit(self):
  68. with self.feature("organizations:discover"):
  69. self.browser.get(self.path)
  70. self.browser.wait_until_not(".loading")
  71. self.browser.find_element_by_xpath("//button//span[contains(text(), 'Save')]").click()
  72. self.browser.get(self.path + "saved/1/?editing=true")
  73. self.browser.wait_until_test_id("result")
  74. self.browser.wait_until_not(".loading")
  75. self.browser.snapshot("discover - saved query")
  76. def test_saved_query_list(self):
  77. with self.feature("organizations:discover"):
  78. self.browser.get(self.path)
  79. self.browser.wait_until_not(".loading")
  80. self.browser.find_element_by_xpath("//button//span[contains(text(), 'Save')]").click()
  81. self.browser.get(self.path + "?view=saved")
  82. self.browser.wait_until_test_id("result")
  83. self.browser.wait_until_not(".loading")
  84. self.browser.snapshot("discover - saved query list")