test_organization_discover.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  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. def test_no_access(self):
  47. self.browser.get(self.path)
  48. self.browser.wait_until_not(".loading")
  49. self.browser.snapshot("discover - no access")
  50. def test_query_builder(self):
  51. with self.feature("organizations:discover"):
  52. self.browser.get(self.path)
  53. self.browser.wait_until_not(".loading")
  54. self.browser.wait_until_not(".is-disabled")
  55. self.browser.snapshot("discover - query builder")
  56. @patch("django.utils.timezone.now")
  57. def test_run_query(self, mock_now):
  58. mock_now.return_value = before_now().replace(tzinfo=pytz.utc)
  59. with self.feature("organizations:discover"):
  60. self.browser.get(self.path)
  61. self.browser.wait_until_not(".loading")
  62. self.browser.click_when_visible('[aria-label="Run"]')
  63. self.browser.wait_until_not(".loading")
  64. self.browser.wait_until_test_id("result")
  65. self.browser.snapshot("discover - query results")
  66. def test_save_query_edit(self):
  67. with self.feature("organizations:discover"):
  68. self.browser.get(self.path)
  69. self.browser.wait_until_not(".loading")
  70. self.browser.find_element_by_xpath("//button//span[contains(text(), 'Save')]").click()
  71. self.browser.get(self.path + "saved/1/?editing=true")
  72. self.browser.wait_until_test_id("result")
  73. self.browser.wait_until_not(".loading")
  74. self.browser.snapshot("discover - saved query")
  75. def test_saved_query_list(self):
  76. with self.feature("organizations:discover"):
  77. self.browser.get(self.path)
  78. self.browser.wait_until_not(".loading")
  79. self.browser.find_element_by_xpath("//button//span[contains(text(), 'Save')]").click()
  80. self.browser.get(self.path + "?view=saved")
  81. self.browser.wait_until_test_id("result")
  82. self.browser.wait_until_not(".loading")
  83. self.browser.snapshot("discover - saved query list")