@@ -889,8 +889,9 @@ class TaskTests(TestCase):
889889 @mock .patch ("ietf.sync.tasks.rfceditor.update_docs_from_rfc_index" )
890890 @mock .patch ("ietf.sync.tasks.rfceditor.parse_index" )
891891 @mock .patch ("ietf.sync.tasks.requests.get" )
892+ @mock .patch ("ietf.sync.tasks.rsync_rfcs_from_rfceditor_task.delay" )
892893 def test_rfc_editor_index_update_task (
893- self , requests_get_mock , parse_index_mock , update_docs_mock
894+ self , rsync_task_mock , requests_get_mock , parse_index_mock , update_docs_mock
894895 ) -> None : # the annotation here prevents mypy from complaining about annotation-unchecked
895896 """rfc_editor_index_update_task calls helpers correctly
896897
@@ -922,6 +923,7 @@ def json(self):
922923 rfc = RfcFactory ()
923924
924925 # Test with full_index = False
926+ rsync_task_mock .return_value = None
925927 requests_get_mock .side_effect = (index_response , errata_response ) # will step through these
926928 parse_index_mock .return_value = MockIndexData (length = rfceditor .MIN_INDEX_RESULTS )
927929 update_docs_mock .return_value = (
@@ -947,10 +949,13 @@ def json(self):
947949 )
948950 self .assertIsNotNone (update_docs_kwargs ["skip_older_than_date" ])
949951
952+ self .assertFalse (rsync_task_mock .called )
953+
950954 # Test again with full_index = True
951955 requests_get_mock .reset_mock ()
952956 parse_index_mock .reset_mock ()
953957 update_docs_mock .reset_mock ()
958+ rsync_task_mock .reset_mock ()
954959 requests_get_mock .side_effect = (index_response , errata_response ) # will step through these
955960 tasks .rfc_editor_index_update_task (full_index = True )
956961
@@ -971,40 +976,67 @@ def json(self):
971976 )
972977 self .assertIsNone (update_docs_kwargs ["skip_older_than_date" ])
973978
979+ self .assertFalse (rsync_task_mock .called )
980+
981+ # Test again where the index would cause a new RFC to come into existance
982+ requests_get_mock .reset_mock ()
983+ parse_index_mock .reset_mock ()
984+ update_docs_mock .reset_mock ()
985+ rsync_task_mock .reset_mock ()
986+ requests_get_mock .side_effect = (
987+ index_response ,
988+ errata_response ,
989+ ) # will step through these
990+ update_docs_mock .return_value = (
991+ (rfc .rfc_number , ("something changed" ,), rfc , True ),
992+ )
993+ tasks .rfc_editor_index_update_task (full_index = True )
994+ self .assertTrue (rsync_task_mock .called )
995+ rsync_task_args , rsync_task_kwargs = rsync_task_mock .call_args
996+ self .assertEqual ((([rfc .rfc_number ],), {}), (rsync_task_args , rsync_task_kwargs ))
997+
974998 # Test error handling
975999 requests_get_mock .reset_mock ()
9761000 parse_index_mock .reset_mock ()
9771001 update_docs_mock .reset_mock ()
1002+ rsync_task_mock .reset_mock ()
9781003 requests_get_mock .side_effect = requests .Timeout # timeout on every get()
9791004 tasks .rfc_editor_index_update_task (full_index = False )
9801005 self .assertFalse (parse_index_mock .called )
9811006 self .assertFalse (update_docs_mock .called )
1007+ self .assertFalse (rsync_task_mock .called )
9821008
9831009 requests_get_mock .reset_mock ()
9841010 parse_index_mock .reset_mock ()
9851011 update_docs_mock .reset_mock ()
1012+ rsync_task_mock .reset_mock ()
9861013 requests_get_mock .side_effect = [index_response , requests .Timeout ] # timeout second get()
9871014 tasks .rfc_editor_index_update_task (full_index = False )
9881015 self .assertFalse (update_docs_mock .called )
1016+ self .assertFalse (rsync_task_mock .called )
9891017
9901018 requests_get_mock .reset_mock ()
9911019 parse_index_mock .reset_mock ()
9921020 update_docs_mock .reset_mock ()
1021+ rsync_task_mock .reset_mock ()
9931022 requests_get_mock .side_effect = [index_response , errata_response ]
9941023 # feed in an index that is too short
9951024 parse_index_mock .return_value = MockIndexData (length = rfceditor .MIN_INDEX_RESULTS - 1 )
9961025 tasks .rfc_editor_index_update_task (full_index = False )
9971026 self .assertTrue (parse_index_mock .called )
9981027 self .assertFalse (update_docs_mock .called )
1028+ self .assertFalse (rsync_task_mock .called )
9991029
10001030 requests_get_mock .reset_mock ()
10011031 parse_index_mock .reset_mock ()
10021032 update_docs_mock .reset_mock ()
1033+ rsync_task_mock .reset_mock ()
10031034 requests_get_mock .side_effect = [index_response , errata_response ]
10041035 errata_response .json_length = rfceditor .MIN_ERRATA_RESULTS - 1 # too short
10051036 parse_index_mock .return_value = MockIndexData (length = rfceditor .MIN_INDEX_RESULTS )
10061037 tasks .rfc_editor_index_update_task (full_index = False )
10071038 self .assertFalse (update_docs_mock .called )
1039+ self .assertFalse (rsync_task_mock .called )
10081040
10091041 @override_settings (RFC_EDITOR_QUEUE_URL = "https://rfc-editor.example.com/queue/" )
10101042 @mock .patch ("ietf.sync.tasks.update_drafts_from_queue" )
@@ -1134,3 +1166,51 @@ def test_iana_protocols_update_task(
11341166 self .assertTrue (requests_get_mock .called )
11351167 self .assertFalse (parse_protocols_mock .called )
11361168 self .assertFalse (update_rfc_log_mock .called )
1169+
1170+ @mock .patch ("ietf.sync.tasks.rsync_helper" )
1171+ @mock .patch ("ietf.sync.tasks.load_rfcs_into_blobdb" )
1172+ @mock .patch ("ietf.sync.tasks.rebuild_reference_relations_task.delay" )
1173+ def test_rsync_rfcs_from_rfceditor_task (
1174+ self ,
1175+ rebuild_relations_mock ,
1176+ load_blobs_mock ,
1177+ rsync_helper_mock ,
1178+ ):
1179+ tasks .rsync_rfcs_from_rfceditor_task ([12345 , 54321 ])
1180+ self .assertTrue (rsync_helper_mock .called )
1181+ self .assertTrue (load_blobs_mock .called )
1182+ load_blobs_args , load_blobs_kwargs = load_blobs_mock .call_args
1183+ self .assertEqual (load_blobs_args , ([12345 , 54321 ],))
1184+ self .assertEqual (load_blobs_kwargs , {})
1185+ self .assertTrue (rebuild_relations_mock .called )
1186+ rebuild_args , rebuild_kwargs = rebuild_relations_mock .call_args
1187+ self .assertEqual (rebuild_args , (["rfc12345" , "rfc54321" ],))
1188+ self .assertEqual (rebuild_kwargs , {})
1189+
1190+ @mock .patch ("ietf.sync.tasks.load_rfcs_into_blobdb" )
1191+ def test_load_rfcs_into_blobdb_task (
1192+ self ,
1193+ load_blobs_mock ,
1194+ ):
1195+ tasks .load_rfcs_into_blobdb_task (5 , 3 )
1196+ self .assertFalse (load_blobs_mock .called )
1197+ load_blobs_mock .reset_mock ()
1198+ tasks .load_rfcs_into_blobdb_task (- 1 , 1 )
1199+ self .assertTrue (load_blobs_mock .called )
1200+ mock_args , mock_kwargs = load_blobs_mock .call_args
1201+ self .assertEqual (mock_args , ([1 ],))
1202+ self .assertEqual (mock_kwargs , {})
1203+ load_blobs_mock .reset_mock ()
1204+ tasks .load_rfcs_into_blobdb_task (10999 , 50000 )
1205+ self .assertTrue (load_blobs_mock .called )
1206+ mock_args , mock_kwargs = load_blobs_mock .call_args
1207+ self .assertEqual (mock_args , ([10999 , 11000 ],))
1208+ self .assertEqual (mock_kwargs , {})
1209+ load_blobs_mock .reset_mock ()
1210+ tasks .load_rfcs_into_blobdb_task (3261 , 3263 )
1211+ self .assertTrue (load_blobs_mock .called )
1212+ mock_args , mock_kwargs = load_blobs_mock .call_args
1213+ self .assertEqual (mock_args , ([3261 , 3262 , 3263 ],))
1214+ self .assertEqual (mock_kwargs , {})
1215+
1216+
0 commit comments