test_dashboard.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. from __future__ import absolute_import
  2. from django.utils import timezone
  3. from sentry.testutils import AcceptanceTestCase, SnubaTestCase
  4. from sentry.models import GroupAssignee, Release, Environment, Deploy, ReleaseProjectEnvironment, OrganizationOnboardingTask, OnboardingTask, OnboardingTaskStatus
  5. from sentry.utils.samples import load_data
  6. from datetime import datetime
  7. class DashboardTest(AcceptanceTestCase, SnubaTestCase):
  8. def setUp(self):
  9. super(DashboardTest, self).setUp()
  10. self.user = self.create_user('foo@example.com')
  11. self.org = self.create_organization(
  12. name='Rowdy Tiger',
  13. owner=None,
  14. )
  15. self.team = self.create_team(organization=self.org, name='Mariachi Band')
  16. self.project = self.create_project(
  17. organization=self.org,
  18. teams=[self.team],
  19. name='Bengal-Elephant-Giraffe-Tree-House',
  20. )
  21. self.create_member(
  22. user=self.user,
  23. organization=self.org,
  24. role='owner',
  25. teams=[self.team],
  26. )
  27. release = Release.objects.create(
  28. organization_id=self.org.id,
  29. version='1',
  30. )
  31. environment = Environment.objects.create(
  32. organization_id=self.org.id,
  33. name='production',
  34. )
  35. deploy = Deploy.objects.create(
  36. environment_id=environment.id,
  37. organization_id=self.org.id,
  38. release=release,
  39. date_finished='2018-05-23'
  40. )
  41. ReleaseProjectEnvironment.objects.create(
  42. project_id=self.project.id,
  43. release_id=release.id,
  44. environment_id=environment.id,
  45. last_deploy_id=deploy.id
  46. )
  47. self.login_as(self.user)
  48. self.path = u'/organizations/{}/projects/'.format(self.org.slug)
  49. def test_no_issues(self):
  50. # I think no "activity" would be more accurate?
  51. self.project.update(first_event=None)
  52. self.browser.get(self.path)
  53. self.browser.wait_until_not('.loading-indicator')
  54. self.browser.wait_until_test_id('awaiting-events')
  55. self.browser.snapshot('org dash no issues')
  56. def test_one_issue(self):
  57. self.init_snuba()
  58. event_data = load_data('python')
  59. event_data['event_id'] = 'd964fdbd649a4cf8bfc35d18082b6b0e'
  60. event_data['timestamp'] = 1452683305
  61. event = self.store_event(
  62. project_id=self.project.id,
  63. data=event_data,
  64. assert_no_errors=False
  65. )
  66. event.group.update(
  67. first_seen=datetime(2018, 1, 12, 3, 8, 25, tzinfo=timezone.utc),
  68. last_seen=datetime(2018, 1, 13, 3, 8, 25, tzinfo=timezone.utc),
  69. )
  70. GroupAssignee.objects.create(
  71. user=self.user,
  72. group=event.group,
  73. project=self.project,
  74. )
  75. OrganizationOnboardingTask.objects.create_or_update(
  76. organization_id=self.project.organization_id,
  77. task=OnboardingTask.FIRST_EVENT,
  78. status=OnboardingTaskStatus.COMPLETE,
  79. )
  80. self.project.update(first_event=timezone.now())
  81. self.browser.get(self.path)
  82. self.browser.wait_until_not('.loading-indicator')
  83. self.browser.wait_until('[data-test-id] figure')
  84. self.browser.snapshot('org dash one issue')
  85. class EmptyDashboardTest(AcceptanceTestCase):
  86. def setUp(self):
  87. super(EmptyDashboardTest, self).setUp()
  88. self.user = self.create_user('foo@example.com')
  89. self.org = self.create_organization(
  90. name='Rowdy Tiger',
  91. owner=None,
  92. )
  93. self.team = self.create_team(organization=self.org, name='Mariachi Band')
  94. self.create_member(
  95. user=self.user,
  96. organization=self.org,
  97. role='owner',
  98. teams=[self.team],
  99. )
  100. self.login_as(self.user)
  101. self.path = u'/organizations/{}/projects/'.format(self.org.slug)
  102. def test_new_dashboard_empty(self):
  103. self.browser.get(self.path)
  104. self.browser.wait_until_not('.loading-indicator')
  105. self.browser.snapshot('new dashboard empty')