Files
2024-02-15 17:01:50 +00:00

51 lines
1.8 KiB
Python

from datetime import timedelta
from django.utils import timezone
from sentry.models.environment import Environment
from sentry.models.grouprelease import GroupRelease
from sentry.models.release import Release
from sentry.testutils.cases import TestCase
from sentry.testutils.silo import region_silo_test
@region_silo_test
class GetOrCreateTest(TestCase):
def test_simple(self):
project = self.create_project()
group = self.create_group(project=project)
release = Release.objects.create(version="abc", organization_id=project.organization_id)
release.add_project(project)
env = Environment.objects.create(organization_id=project.organization_id, name="prod")
datetime = timezone.now()
grouprelease = GroupRelease.get_or_create(
group=group, release=release, environment=env, datetime=datetime
)
assert grouprelease.project_id == project.id
assert grouprelease.group_id == group.id
assert grouprelease.release_id == release.id
assert grouprelease.environment == "prod"
assert grouprelease.first_seen == datetime
assert grouprelease.last_seen == datetime
datetime_new = timezone.now() + timedelta(days=1)
grouprelease = GroupRelease.get_or_create(
group=group, release=release, environment=env, datetime=datetime_new
)
assert grouprelease.first_seen == datetime
assert grouprelease.last_seen == datetime_new
datetime_new2 = datetime_new + timedelta(seconds=1)
# this should not update immediately as the window is too close
grouprelease = GroupRelease.get_or_create(
group=group, release=release, environment=env, datetime=datetime_new2
)
assert grouprelease.first_seen == datetime
assert grouprelease.last_seen == datetime_new