1
1
from time import time
2
- from unittest .mock import patch
2
+ from unittest .mock import MagicMock , patch
3
3
4
4
from sentry .models .grouphash import GroupHash
5
5
from sentry .tasks .delete_seer_grouping_records import (
6
6
call_delete_seer_grouping_records_by_hash ,
7
- call_seer_delete_project_grouping_records ,
8
7
delete_seer_grouping_records_by_hash ,
9
8
)
10
9
from sentry .testutils .cases import TestCase
@@ -19,9 +18,9 @@ class TestDeleteSeerGroupingRecordsByHash(TestCase):
19
18
)
20
19
def test_delete_seer_grouping_records_by_hash_batches (
21
20
self ,
22
- mock_delete_seer_grouping_records_by_hash_apply_async ,
23
- mock_delete_grouping_records_by_hash ,
24
- ):
21
+ mock_delete_seer_grouping_records_by_hash_apply_async : MagicMock ,
22
+ mock_delete_grouping_records_by_hash : MagicMock ,
23
+ ) -> None :
25
24
"""
26
25
Test that when delete_seer_grouping_records_by_hash is called with over 20 hashes, it spawns
27
26
another task with the end index of the previous batch.
@@ -33,50 +32,52 @@ def test_delete_seer_grouping_records_by_hash_batches(
33
32
"args" : [project_id , hashes , 100 ]
34
33
}
35
34
36
- @patch ("sentry.tasks.delete_seer_grouping_records.logger" )
37
- def test_call_delete_seer_grouping_records_by_hash_simple (self , mock_logger ):
35
+ @patch (
36
+ "sentry.tasks.delete_seer_grouping_records.delete_seer_grouping_records_by_hash.apply_async"
37
+ )
38
+ def test_call_delete_seer_grouping_records_by_hash_simple (
39
+ self , mock_apply_async : MagicMock
40
+ ) -> None :
41
+ """
42
+ Test that call_delete_seer_grouping_records_by_hash correctly collects hashes
43
+ and calls the deletion task with the expected parameters.
44
+ """
38
45
self .project .update_option ("sentry:similarity_backfill_completed" , int (time ()))
39
46
40
- group_ids , hashes = [], []
47
+ group_ids , expected_hashes = [], []
41
48
for i in range (5 ):
42
49
group = self .create_group (project = self .project )
43
50
group_ids .append (group .id )
44
51
group_hash = GroupHash .objects .create (
45
52
project = self .project , hash = str (i ) * 32 , group_id = group .id
46
53
)
47
- hashes .append (group_hash .hash )
54
+ expected_hashes .append (group_hash .hash )
55
+
48
56
call_delete_seer_grouping_records_by_hash (group_ids )
49
- mock_logger .info .assert_called_with (
50
- "calling seer record deletion by hash" ,
51
- extra = {"project_id" : self .project .id , "hashes" : hashes },
52
- )
53
57
54
- @patch ("sentry.tasks.delete_seer_grouping_records.delete_seer_grouping_records_by_hash" )
55
- @patch ("sentry.tasks.delete_seer_grouping_records.logger" )
58
+ # Verify that the task was called with the correct parameters
59
+ mock_apply_async .assert_called_once_with (args = [self .project .id , expected_hashes , 0 ])
60
+
61
+ @patch (
62
+ "sentry.tasks.delete_seer_grouping_records.delete_seer_grouping_records_by_hash.apply_async"
63
+ )
56
64
def test_call_delete_seer_grouping_records_by_hash_no_hashes (
57
- self , mock_logger , mock_delete_seer_grouping_records_by_hash
58
- ):
65
+ self , mock_apply_async : MagicMock
66
+ ) -> None :
59
67
self .project .update_option ("sentry:similarity_backfill_completed" , int (time ()))
60
68
61
69
group_ids = []
62
70
for _ in range (5 ):
63
71
group = self .create_group (project = self .project )
64
72
group_ids .append (group .id )
65
73
call_delete_seer_grouping_records_by_hash (group_ids )
66
- mock_logger .info .assert_called_with (
67
- "calling seer record deletion by hash" ,
68
- extra = {"project_id" : self .project .id , "hashes" : []},
69
- )
70
- mock_delete_seer_grouping_records_by_hash .assert_not_called ()
74
+ mock_apply_async .assert_not_called ()
71
75
72
- @patch ("sentry.tasks.delete_seer_grouping_records.logger" )
73
- def test_call_delete_seer_grouping_records_by_hash_no_group_ids (self , mock_logger ):
76
+ @patch (
77
+ "sentry.tasks.delete_seer_grouping_records.delete_seer_grouping_records_by_hash.apply_async"
78
+ )
79
+ def test_call_delete_seer_grouping_records_by_hash_no_group_ids (
80
+ self , mock_apply_async : MagicMock
81
+ ) -> None :
74
82
call_delete_seer_grouping_records_by_hash ([])
75
- mock_logger .info .assert_not_called ()
76
-
77
- @patch ("sentry.tasks.delete_seer_grouping_records.delete_project_grouping_records" )
78
- def test_call_delete_project_and_delete_grouping_records (
79
- self , mock_delete_project_grouping_records
80
- ):
81
- call_seer_delete_project_grouping_records (self .project .id )
82
- mock_delete_project_grouping_records .assert_called_once ()
83
+ mock_apply_async .assert_not_called ()
0 commit comments