test_organization_group_index.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. from __future__ import absolute_import
  2. import pytz
  3. from datetime import datetime, timedelta
  4. from django.utils import timezone
  5. from sentry.testutils import AcceptanceTestCase, SnubaTestCase
  6. from mock import patch
  7. event_time = (datetime.utcnow() - timedelta(days=3)).replace(tzinfo=pytz.utc)
  8. class OrganizationGroupIndexTest(AcceptanceTestCase, SnubaTestCase):
  9. def setUp(self):
  10. super(OrganizationGroupIndexTest, self).setUp()
  11. self.user = self.create_user('foo@example.com')
  12. self.org = self.create_organization(owner=self.user, name='Rowdy Tiger')
  13. self.team = self.create_team(
  14. organization=self.org,
  15. name='Mariachi Band',
  16. members=[self.user])
  17. self.project = self.create_project(
  18. organization=self.org,
  19. teams=[self.team],
  20. name='Bengal',
  21. )
  22. self.other_project = self.create_project(
  23. organization=self.org,
  24. teams=[self.team],
  25. name='Sumatra',
  26. )
  27. self.login_as(self.user)
  28. self.path = u'/organizations/{}/issues/'.format(self.org.slug)
  29. def test_with_onboarding(self):
  30. self.project.update(first_event=None)
  31. self.browser.get(self.path)
  32. self.wait_until_loaded()
  33. self.browser.wait_until_test_id('awaiting-events')
  34. self.browser.snapshot('organization issues onboarding')
  35. def test_with_no_results(self):
  36. self.project.update(first_event=timezone.now())
  37. self.browser.get(self.path)
  38. self.wait_until_loaded()
  39. self.browser.wait_until_test_id('empty-state')
  40. self.browser.snapshot('organization issues no results')
  41. @patch('django.utils.timezone.now')
  42. def test_with_results(self, mock_now):
  43. mock_now.return_value = datetime.utcnow().replace(tzinfo=pytz.utc)
  44. self.store_event(
  45. data={
  46. 'event_id': 'a' * 32,
  47. 'message': 'oh no',
  48. 'timestamp': event_time.isoformat()[:19],
  49. 'fingerprint': ['group-1']
  50. },
  51. project_id=self.project.id
  52. )
  53. self.store_event(
  54. data={
  55. 'event_id': 'b' * 32,
  56. 'message': 'oh snap',
  57. 'timestamp': event_time.isoformat()[:19],
  58. 'fingerprint': ['group-2']
  59. },
  60. project_id=self.project.id
  61. )
  62. self.browser.get(self.path)
  63. self.wait_until_loaded()
  64. self.browser.wait_until('.event-issue-header')
  65. self.browser.snapshot('organization issues with issues')
  66. groups = self.browser.find_elements_by_class_name('event-issue-header')
  67. assert len(groups) == 2
  68. assert 'oh snap' in groups[0].text
  69. assert 'oh no' in groups[1].text
  70. def wait_until_loaded(self):
  71. self.browser.wait_until_not('.loading')