@@ -2964,6 +2964,56 @@ def test_rejected_listing_addons_do_not_update(self):
29642964 addon .update_status ()
29652965 assert addon .status == amo .STATUS_APPROVED
29662966
2967+ @patch ('olympia.abuse.tasks.submit_addon_for_content_review.delay' )
2968+ @override_switch ('content-review-in-cinder' , active = True )
2969+ def test_content_review_triggered_for_addon_submission (self , submit_mock ):
2970+ addon = addon_factory ()
2971+ submit_mock .reset_mock ()
2972+ addon .update (status = amo .STATUS_NOMINATED )
2973+ submit_mock .assert_called_once_with (addon_pk = addon .pk )
2974+
2975+ @patch ('olympia.abuse.tasks.submit_addon_for_content_review.delay' )
2976+ @override_switch ('content-review-in-cinder' , active = False )
2977+ def test_content_review_not_triggered_when_waffle_not_enabled (self , submit_mock ):
2978+ addon = addon_factory ()
2979+ submit_mock .reset_mock ()
2980+ addon .update (status = amo .STATUS_NOMINATED )
2981+ submit_mock .assert_not_called ()
2982+
2983+ @patch ('olympia.abuse.tasks.submit_addon_for_content_review.delay' )
2984+ @override_switch ('content-review-in-cinder' , active = True )
2985+ def test_content_review_not_triggered_for_non_valid_status (self , submit_mock ):
2986+ addon = addon_factory ()
2987+ submit_mock .reset_mock ()
2988+ addon .update (status = amo .STATUS_DISABLED )
2989+ submit_mock .assert_not_called ()
2990+
2991+ @patch ('olympia.abuse.tasks.submit_addon_for_content_review.delay' )
2992+ @override_switch ('content-review-in-cinder' , active = True )
2993+ def test_content_review_not_triggered_when_already_pending (self , submit_mock ):
2994+ addon = addon_factory ()
2995+ AddonApprovalsCounter .objects .create (
2996+ addon = addon ,
2997+ content_review_status = AddonApprovalsCounter .CONTENT_REVIEW_STATUSES .PENDING ,
2998+ )
2999+ submit_mock .reset_mock ()
3000+ addon .update (status = amo .STATUS_NOMINATED )
3001+ submit_mock .assert_not_called ()
3002+
3003+ @patch ('olympia.abuse.tasks.submit_addon_for_content_review.delay' )
3004+ @override_switch ('content-review-in-cinder' , active = True )
3005+ def test_content_review_not_triggered_when_content_already_reviewed (
3006+ self , submit_mock
3007+ ):
3008+ addon = addon_factory ()
3009+ AddonApprovalsCounter .objects .create (
3010+ addon = addon ,
3011+ content_review_status = AddonApprovalsCounter .CONTENT_REVIEW_STATUSES .PASS ,
3012+ )
3013+ submit_mock .reset_mock ()
3014+ addon .update (status = amo .STATUS_NOMINATED )
3015+ submit_mock .assert_not_called ()
3016+
29673017
29683018class TestGetVersion (TestCase ):
29693019 fixtures = [
@@ -3750,6 +3800,27 @@ def test_reset_content_existing(self):
37503800 AddonApprovalsCounter .reset_content_for_addon (self .addon )
37513801 assert approval_counter .reload ().content_review_status == previous_status
37523802
3803+ def test_reset_content_existing_initial_status_ignored (self ):
3804+ approval_counter = AddonApprovalsCounter .objects .create (
3805+ addon = self .addon ,
3806+ counter = 42 ,
3807+ last_content_review = self .days_ago (367 ),
3808+ last_human_review = self .days_ago (10 ),
3809+ content_review_status = AddonApprovalsCounter .CONTENT_REVIEW_STATUSES .PASS ,
3810+ )
3811+ # should be ignored
3812+ AddonApprovalsCounter .reset_content_for_addon (
3813+ self .addon ,
3814+ initial_status = AddonApprovalsCounter .CONTENT_REVIEW_STATUSES .REQUESTED ,
3815+ )
3816+ assert approval_counter .reload ().counter == 42 # unchanged
3817+ self .assertCloseToNow (approval_counter .last_human_review , now = self .days_ago (10 ))
3818+ assert approval_counter .last_content_review is None
3819+ assert (
3820+ approval_counter .content_review_status
3821+ == AddonApprovalsCounter .CONTENT_REVIEW_STATUSES .CHANGED
3822+ )
3823+
37533824 def test_reset_content_non_existing (self ):
37543825 assert not AddonApprovalsCounter .objects .filter (addon = self .addon ).exists ()
37553826 AddonApprovalsCounter .reset_content_for_addon (self .addon )
@@ -3761,6 +3832,20 @@ def test_reset_content_non_existing(self):
37613832 == AddonApprovalsCounter .CONTENT_REVIEW_STATUSES .UNREVIEWED
37623833 )
37633834
3835+ def test_reset_content_non_existing_with_initial_status (self ):
3836+ assert not AddonApprovalsCounter .objects .filter (addon = self .addon ).exists ()
3837+ AddonApprovalsCounter .reset_content_for_addon (
3838+ self .addon ,
3839+ initial_status = AddonApprovalsCounter .CONTENT_REVIEW_STATUSES .PENDING ,
3840+ )
3841+ approval_counter = AddonApprovalsCounter .objects .get (addon = self .addon )
3842+ assert approval_counter .counter == 0
3843+ assert approval_counter .last_human_review is None
3844+ assert (
3845+ approval_counter .content_review_status
3846+ == AddonApprovalsCounter .CONTENT_REVIEW_STATUSES .PENDING
3847+ )
3848+
37643849 def test_request_review (self ):
37653850 AddonApprovalsCounter .request_new_content_review_for_addon (self .addon )
37663851 approval_counter = AddonApprovalsCounter .objects .get (addon = self .addon )
0 commit comments