@@ -2483,6 +2483,46 @@ def test_set_needs_human_review_on_latest_versions_even_deleted(self):
24832483 == NeedsHumanReview .REASONS .UNKNOWN
24842484 )
24852485
2486+ def test_versions_triggering_needs_human_review_inheritance (self ):
2487+ addon = Addon .objects .get (id = 3615 )
2488+ version = addon .current_version
2489+ version .needshumanreview_set .create (reason = NeedsHumanReview .REASONS .UNKNOWN )
2490+ version2 = version_factory (addon = addon )
2491+ unlisted_version = version_factory (addon = addon , channel = amo .CHANNEL_UNLISTED )
2492+ unlisted_version .needshumanreview_set .create (
2493+ reason = NeedsHumanReview .REASONS .UNKNOWN
2494+ )
2495+ assert set (
2496+ addon .versions_triggering_needs_human_review_inheritance (amo .CHANNEL_LISTED )
2497+ ) == {version }
2498+ assert set (
2499+ addon .versions_triggering_needs_human_review_inheritance (
2500+ amo .CHANNEL_UNLISTED
2501+ )
2502+ ) == {unlisted_version }
2503+
2504+ # Adding any of those NHR should not matter.
2505+ for reason_value , _ in NeedsHumanReview .REASONS .NO_DUE_DATE_INHERITANCE :
2506+ version2 .needshumanreview_set .create (reason = reason_value )
2507+
2508+ assert set (
2509+ addon .versions_triggering_needs_human_review_inheritance (amo .CHANNEL_LISTED )
2510+ ) == {version }
2511+
2512+ # Adding any other NHR should.
2513+ nhr = version2 .needshumanreview_set .create (
2514+ reason = NeedsHumanReview .REASONS .AUTO_APPROVAL_DISABLED
2515+ )
2516+ assert set (
2517+ addon .versions_triggering_needs_human_review_inheritance (amo .CHANNEL_LISTED )
2518+ ) == {version , version2 }
2519+
2520+ # An inactive NHR should not trigger inheritance.
2521+ nhr .update (is_active = False )
2522+ assert set (
2523+ addon .versions_triggering_needs_human_review_inheritance (amo .CHANNEL_LISTED )
2524+ ) == {version }
2525+
24862526 def test_update_all_due_dates (self ):
24872527 addon = Addon .objects .get (id = 3615 )
24882528 versions_that_should_have_due_date = [
@@ -3865,6 +3905,52 @@ def test_pending_queue_needs_human_scanner_action(self):
38653905 NeedsHumanReview .REASONS .SCANNER_ACTION , 'needs_human_review_scanner_action'
38663906 )
38673907
3908+ def test_get_queryset_for_pending_queues_for_specific_due_date_reasons (self ):
3909+ expected_addons = [
3910+ version_factory (
3911+ addon = addon_factory (
3912+ version_kw = {
3913+ 'needshumanreview_kw' : {
3914+ 'reason' : NeedsHumanReview .REASONS .ABUSE_ADDON_VIOLATION
3915+ },
3916+ 'due_date' : self .days_ago (48 ),
3917+ 'version' : '0.1' ,
3918+ }
3919+ ),
3920+ needshumanreview_kw = {
3921+ 'reason' : NeedsHumanReview .REASONS .AUTO_APPROVAL_DISABLED
3922+ },
3923+ due_date = self .days_ago (15 ),
3924+ version = '0.2' ,
3925+ ).addon ,
3926+ addon_factory (
3927+ version_kw = {
3928+ 'needshumanreview_kw' : {
3929+ 'reason' : NeedsHumanReview .REASONS .SCANNER_ACTION
3930+ },
3931+ 'due_date' : self .days_ago (16 ),
3932+ 'version' : '666.0' ,
3933+ }
3934+ ),
3935+ ]
3936+ addon_factory (
3937+ version_kw = {
3938+ 'needshumanreview_kw' : {
3939+ 'reason' : NeedsHumanReview .REASONS .DEVELOPER_REPLY
3940+ },
3941+ 'due_date' : self .days_ago (23 ),
3942+ }
3943+ ) # Should not show up
3944+ addons = Addon .objects .get_queryset_for_pending_queues (
3945+ due_date_reasons_choices = NeedsHumanReview .REASONS .extract_subset (
3946+ 'AUTO_APPROVAL_DISABLED' , 'SCANNER_ACTION'
3947+ )
3948+ )
3949+ expected_version = expected_addons [0 ].versions .get (version = '0.2' )
3950+ assert addons [0 ].first_version_id == expected_version .pk
3951+ assert addons [0 ].first_pending_version == expected_version
3952+ assert addons [0 ].first_version_due_date == expected_version .due_date
3953+
38683954 def test_get_pending_rejection_queue (self ):
38693955 expected_addons = [
38703956 version_review_flags_factory (
0 commit comments