test_clear_expired_resolutions.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from datetime import timedelta
  2. from django.utils import timezone
  3. from sentry.models.activity import Activity
  4. from sentry.models.group import Group, GroupStatus
  5. from sentry.models.groupresolution import GroupResolution
  6. from sentry.models.release import Release
  7. from sentry.tasks.clear_expired_resolutions import clear_expired_resolutions
  8. from sentry.testutils.cases import TestCase
  9. from sentry.types.activity import ActivityType
  10. class ClearExpiredResolutionsTest(TestCase):
  11. def test_task_persistent_name(self):
  12. assert clear_expired_resolutions.name == "sentry.tasks.clear_expired_resolutions"
  13. def test_simple(self):
  14. project = self.create_project()
  15. old_release = Release.objects.create(organization_id=project.organization_id, version="a")
  16. old_release.add_project(project)
  17. group1 = self.create_group(
  18. project=project, status=GroupStatus.RESOLVED, active_at=timezone.now()
  19. )
  20. resolution1 = GroupResolution.objects.create(
  21. group=group1, release=old_release, type=GroupResolution.Type.in_next_release
  22. )
  23. activity1 = Activity.objects.create(
  24. group=group1,
  25. project=project,
  26. type=ActivityType.SET_RESOLVED_IN_RELEASE.value,
  27. ident=resolution1.id,
  28. data={"version": ""},
  29. )
  30. new_release = Release.objects.create(
  31. organization_id=project.organization_id,
  32. version="b",
  33. date_added=timezone.now() + timedelta(minutes=1),
  34. )
  35. new_release.add_project(project)
  36. group2 = self.create_group(status=GroupStatus.UNRESOLVED, active_at=timezone.now())
  37. resolution2 = GroupResolution.objects.create(
  38. group=group2, release=new_release, type=GroupResolution.Type.in_next_release
  39. )
  40. activity2 = Activity.objects.create(
  41. group=group2,
  42. project=project,
  43. type=ActivityType.SET_RESOLVED_IN_RELEASE.value,
  44. ident=resolution2.id,
  45. data={"version": ""},
  46. )
  47. clear_expired_resolutions(new_release.id)
  48. assert Group.objects.get(id=group1.id).status == GroupStatus.RESOLVED
  49. assert Group.objects.get(id=group2.id).status == GroupStatus.UNRESOLVED
  50. # row should be updated to the in_release type, and reflect
  51. # the release it was resolved in
  52. resolution1 = GroupResolution.objects.get(id=resolution1.id)
  53. assert resolution1.status == GroupResolution.Status.resolved
  54. assert resolution1.release == new_release
  55. assert resolution1.type == GroupResolution.Type.in_release
  56. resolution2 = GroupResolution.objects.get(id=resolution2.id)
  57. assert resolution2.status == GroupResolution.Status.pending
  58. activity1 = Activity.objects.get(id=activity1.id)
  59. assert activity1.data["version"] == new_release.version
  60. activity2 = Activity.objects.get(id=activity2.id)
  61. assert activity2.data["version"] == ""