Skip to content

Commit 4c33807

Browse files
committed
feat: in tests, always group images after creating them, and DRY it up
1 parent ee4bdb1 commit 4c33807

File tree

2 files changed

+11
-16
lines changed

2 files changed

+11
-16
lines changed

ami/main/tests.py

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ def test_grouping(self):
6666
def test_pruning_empty_events(self):
6767
from ami.main.models import delete_empty_events
6868

69-
create_captures(deployment=self.deployment)
70-
events = group_images_into_events(deployment=self.deployment)
69+
captures = create_captures(deployment=self.deployment)
70+
events = Event.objects.filter(captures__in=captures).distinct()
7171

7272
for event in events:
7373
event.captures.all().delete()
@@ -83,8 +83,8 @@ def test_setting_image_dimensions(self):
8383

8484
image_width, image_height = 100, 100
8585

86-
create_captures(deployment=self.deployment)
87-
events = group_images_into_events(deployment=self.deployment)
86+
captures = create_captures(deployment=self.deployment)
87+
events = Event.objects.filter(captures__in=captures).distinct()
8888

8989
for event in events:
9090
first_image = event.captures.first()
@@ -125,7 +125,6 @@ class TestEvents(TestCase):
125125
def setUp(self) -> None:
126126
project, deployment = setup_test_project()
127127
create_captures(deployment=deployment, num_nights=2, images_per_night=5)
128-
group_images_into_events(deployment=deployment)
129128
self.project = project
130129
self.deployment = deployment
131130
return super().setUp()
@@ -200,7 +199,7 @@ def setUp(self) -> None:
200199
self.deployment = Deployment.objects.create(name="Test Deployment", project=self.project_one)
201200

202201
create_captures(deployment=self.deployment)
203-
group_images_into_events(deployment=self.deployment)
202+
self.deployment.save(regroup_async=False) # Ensure events are grouped immediately
204203
create_taxa(project=self.project_one)
205204
create_taxa(project=self.project_two)
206205
create_occurrences(deployment=self.deployment, num=1)
@@ -244,7 +243,6 @@ def setUp(self) -> None:
244243
self.deployment = Deployment.objects.create(name="Test Deployment", project=self.project_one)
245244

246245
create_captures(deployment=self.deployment, num_nights=2, images_per_night=10, interval_minutes=1)
247-
group_images_into_events(deployment=self.deployment)
248246

249247
return super().setUp()
250248

@@ -402,8 +400,6 @@ def test_common_combined_deployment_ids(self):
402400
# Create captures for each deployment
403401
create_captures(deployment=deployment_two, num_nights=2, images_per_night=10, interval_minutes=1)
404402
create_captures(deployment=deployment_three, num_nights=2, images_per_night=10, interval_minutes=1)
405-
group_images_into_events(deployment=deployment_two)
406-
group_images_into_events(deployment=deployment_three)
407403

408404
# Verify that we have images from the deployments
409405
assert deployment_two.captures.count() > 0
@@ -593,8 +589,6 @@ def setUp(self) -> None:
593589
print(f"Deployment Two: {deployment_two.pk}")
594590
create_captures(deployment=deployment_one)
595591
create_captures(deployment=deployment_two)
596-
group_images_into_events(deployment=deployment_one)
597-
group_images_into_events(deployment=deployment_two)
598592
create_occurrences(deployment=deployment_one, num=5)
599593
create_occurrences(deployment=deployment_two, num=5)
600594
self.project_one = project_one
@@ -725,7 +719,6 @@ def setUp(self) -> None:
725719
project, deployment = setup_test_project()
726720
create_taxa(project=project)
727721
create_captures(deployment=deployment)
728-
group_images_into_events(deployment=deployment)
729722
create_occurrences(deployment=deployment, num=5)
730723
self.project = project
731724
self.user = User.objects.create_user( # type: ignore
@@ -790,7 +783,6 @@ def setUp(self) -> None:
790783
create_captures(
791784
deployment=deployment, subdir=self.other_subdir, num_nights=1, images_per_night=self.images_per_dir
792785
)
793-
group_images_into_events(deployment=deployment)
794786
self.project = project
795787
self.deployment = deployment
796788
return super().setUp()
@@ -834,9 +826,8 @@ def setUp(self) -> None:
834826
project, deployment = setup_test_project(reuse=False)
835827
create_taxa(project=project)
836828
create_captures(deployment=deployment)
837-
group_images_into_events(deployment=deployment)
838829
create_occurrences(deployment=deployment, num=5)
839-
self.project_ids = [project.id for project in Project.objects.all()]
830+
self.project_ids = [project.pk for project in Project.objects.all()]
840831

841832
self.user = User.objects.create_user( # type: ignore
842833
email="testuser@insectai.org",
@@ -1205,7 +1196,6 @@ def _create_project(self, owner):
12051196
self.deployment = Deployment.objects.create(name="Test Deployment", project=self.project)
12061197
S3StorageSource.objects.create(name="New source", project=self.project, bucket="Test Bucket")
12071198
create_captures(deployment=self.deployment)
1208-
group_images_into_events(deployment=self.deployment)
12091199
create_taxa(project=self.project)
12101200
create_occurrences(deployment=self.deployment, num=1)
12111201
self._create_job()

ami/tests/fixtures/main.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ def create_captures(
136136
images_per_night: int = 3,
137137
interval_minutes: int = 10,
138138
subdir: str = "test",
139+
update_deployment: bool = True,
139140
):
140141
# Create some images over a few monitoring nights
141142
first_night = datetime.datetime.now()
@@ -159,6 +160,10 @@ def create_captures(
159160
)
160161
collection.images.set(created)
161162

163+
if update_deployment:
164+
# This should only be set to False when manually testing grouping images into events
165+
deployment.save(update_calculated_fields=True, regroup_async=False)
166+
162167
return created
163168

164169

0 commit comments

Comments
 (0)