def test_should_retrieve_applications_from_new_procedure_id( self, process_beneficiary_application): # given get_all_application_ids = Mock(return_value=[123, 456, 789]) find_applications_ids_to_retry = Mock(return_value=[]) get_details = Mock() get_details.side_effect = [ make_new_beneficiary_application_details(123, "closed"), make_new_beneficiary_application_details(456, "closed"), make_new_beneficiary_application_details(789, "closed"), ] has_already_been_imported = Mock(return_value=False) has_already_been_created = Mock(return_value=False) # when remote_import.run( ONE_WEEK_AGO, get_all_applications_ids=get_all_application_ids, get_applications_ids_to_retry=find_applications_ids_to_retry, get_details=get_details, already_imported=has_already_been_imported, already_existing_user=has_already_been_created, ) # then assert get_all_application_ids.call_count == 1 get_all_application_ids.assert_called_with(6712558, ANY, ANY)
def test_applications_to_retry_are_processed( self, process_beneficiary_application): # given get_all_application_ids = Mock(return_value=[123]) find_applications_ids_to_retry = Mock(return_value=[456, 789]) get_details = Mock() get_details.side_effect = [ make_new_beneficiary_application_details(123, "closed"), make_new_beneficiary_application_details(456, "closed"), make_new_beneficiary_application_details(789, "closed"), ] has_already_been_imported = Mock(return_value=False) has_already_been_created = Mock(return_value=False) # when remote_import.run( ONE_WEEK_AGO, get_all_applications_ids=get_all_application_ids, get_applications_ids_to_retry=find_applications_ids_to_retry, get_details=get_details, already_imported=has_already_been_imported, already_existing_user=has_already_been_created, ) # then assert process_beneficiary_application.call_count == 3
def test_application_with_known_email_are_saved_as_rejected( self, process_beneficiary_application, app): # given get_all_application_ids = Mock(return_value=[123]) find_applications_ids_to_retry = Mock(return_value=[]) get_details = Mock( return_value=make_new_beneficiary_application_details( 123, "closed")) user = User() user.email = "*****@*****.**" has_already_been_imported = Mock(return_value=False) has_already_been_created = Mock(return_value=True) # when remote_import.run( ONE_WEEK_AGO, get_all_applications_ids=get_all_application_ids, get_applications_ids_to_retry=find_applications_ids_to_retry, get_details=get_details, already_imported=has_already_been_imported, already_existing_user=has_already_been_created, ) # then beneficiary_import = BeneficiaryImport.query.first() assert beneficiary_import.currentStatus == ImportStatus.REJECTED assert beneficiary_import.applicationId == 123 assert beneficiary_import.detail == "Compte existant avec cet email" process_beneficiary_application.assert_not_called()
def test_an_error_status_is_saved_when_an_application_is_not_parsable( self, mocked_parse_beneficiary_information, app): # given get_all_application_ids = Mock(return_value=[123]) find_applications_ids_to_retry = Mock(return_value=[]) get_details = Mock(side_effect=[ make_new_beneficiary_application_details(123, "closed") ]) has_already_been_imported = Mock(return_value=False) has_already_been_created = Mock(return_value=False) mocked_parse_beneficiary_information.side_effect = [Exception()] # when remote_import.run( ONE_WEEK_AGO, get_all_applications_ids=get_all_application_ids, get_applications_ids_to_retry=find_applications_ids_to_retry, get_details=get_details, already_imported=has_already_been_imported, already_existing_user=has_already_been_created, ) # then beneficiary_import = BeneficiaryImport.query.first() assert beneficiary_import.currentStatus == ImportStatus.ERROR assert beneficiary_import.applicationId == 123 assert beneficiary_import.detail == "Le dossier 123 contient des erreurs et a été ignoré - Procedure 6712558"
def test_application_with_known_application_id_are_not_processed( self, process_beneficiary_application): # given get_all_application_ids = Mock(return_value=[123, 456]) find_applications_ids_to_retry = Mock(return_value=[]) get_details = Mock( return_value=make_new_beneficiary_application_details( 123, "closed")) user = User() user.email = "*****@*****.**" has_already_been_imported = Mock(return_value=True) has_already_been_created = Mock(return_value=False) # when remote_import.run( ONE_WEEK_AGO, get_all_applications_ids=get_all_application_ids, get_applications_ids_to_retry=find_applications_ids_to_retry, get_details=get_details, already_imported=has_already_been_imported, already_existing_user=has_already_been_created, ) # then process_beneficiary_application.assert_not_called()
def pc_remote_import_beneficiaries() -> None: procedure_id = settings.DMS_NEW_ENROLLMENT_PROCEDURE_ID import_from_date = find_most_recent_beneficiary_creation_date_for_source( BeneficiaryImportSources.demarches_simplifiees, procedure_id) remote_import.run(procedure_id) remote_tag_has_completed.run(import_from_date, procedure_id) archive_dms_applications.archive_applications(procedure_id, dry_run=False)
def test_import_native_app_user(self): # given user = users_api.create_account( email=self.EMAIL, password="******", birthdate=self.BENEFICIARY_BIRTH_DATE, is_email_validated=True, send_activation_mail=False, ) # when remote_import.run( ONE_WEEK_AGO, get_details=self._get_details, get_all_applications_ids=self._get_all_applications_ids, ) # then assert User.query.count() == 1 user = User.query.first() assert user.firstName == "john" assert user.postalCode == "93450" assert BeneficiaryImport.query.count() == 1 beneficiary_import = BeneficiaryImport.query.first() assert beneficiary_import.source == "demarches_simplifiees" assert beneficiary_import.applicationId == 123 assert beneficiary_import.beneficiary == user assert beneficiary_import.currentStatus == ImportStatus.CREATED assert len(mails_testing.outbox) == 1 assert mails_testing.outbox[0].sent_data["Mj-TemplateID"] == 2016025
def pc_import_beneficiaries_from_dms_v3() -> None: procedure_id = settings.DMS_ENROLLMENT_PROCEDURE_ID_AFTER_GENERAL_OPENING import_from_date = find_most_recent_beneficiary_creation_date_for_source( BeneficiaryImportSources.demarches_simplifiees, procedure_id) remote_import.run( procedure_id, use_graphql_api=FeatureToggle.ENABLE_DMS_GRAPHQL_API.is_active()) remote_tag_has_completed.run(import_from_date, procedure_id) archive_dms_applications.archive_applications(procedure_id, dry_run=False)
def pc_remote_import_beneficiaries_from_old_dms() -> None: if not settings.IS_PROD: return procedure_id = 44623 import_from_date = find_most_recent_beneficiary_creation_date_for_source( BeneficiaryImportSources.demarches_simplifiees, procedure_id) remote_import.run(procedure_id) remote_tag_has_completed.run(import_from_date, procedure_id) archive_dms_applications.archive_applications(procedure_id, dry_run=False)
def pc_import_beneficiaries_from_dms_v4() -> None: for procedure_name, procedure_id in ( ("v4_FR", settings.DMS_ENROLLMENT_PROCEDURE_ID_v4_FR), ("v4_ET", settings.DMS_ENROLLMENT_PROCEDURE_ID_v4_ET), ): if not procedure_id: logger.info("Skipping DMS %s because procedure id is empty", procedure_name) continue import_from_date = find_most_recent_beneficiary_creation_date_for_source( BeneficiaryImportSources.demarches_simplifiees, procedure_id) remote_import.run( procedure_id, use_graphql_api=FeatureToggle.ENABLE_DMS_GRAPHQL_API.is_active()) remote_tag_has_completed.run(import_from_date, procedure_id) archive_dms_applications.archive_applications(procedure_id, dry_run=False)
def test_import_user(self): # when remote_import.run( ONE_WEEK_AGO, get_details=self._get_details, get_all_applications_ids=self._get_all_applications_ids, ) # then assert User.query.count() == 1 user = User.query.first() assert user.firstName == "john" assert user.postalCode == "93450" assert BeneficiaryImport.query.count() == 1 beneficiary_import = BeneficiaryImport.query.first() assert beneficiary_import.source == "demarches_simplifiees" assert beneficiary_import.applicationId == 123 assert beneficiary_import.beneficiary == user assert beneficiary_import.currentStatus == ImportStatus.CREATED
def test_import_duplicated_user(self): # given self.test_import_user() # when remote_import.run( ONE_WEEK_AGO, get_details=self._get_details, get_all_applications_ids=self._get_all_applications_ids, ) # then assert User.query.count() == 1 assert BeneficiaryImport.query.count() == 1 user = User.query.first() beneficiary_import = BeneficiaryImport.query.first() assert beneficiary_import.source == "demarches_simplifiees" assert beneficiary_import.applicationId == 123 assert beneficiary_import.beneficiary == user assert beneficiary_import.currentStatus == ImportStatus.REJECTED
def test_beneficiary_is_created_with_procedure_id( self, process_beneficiary_application, app): # given get_all_application_ids = Mock(return_value=[123]) find_applications_ids_to_retry = Mock(return_value=[]) get_details = Mock(side_effect=[ make_new_beneficiary_application_details(123, "closed") ]) has_already_been_imported = Mock(return_value=False) has_already_been_created = Mock(return_value=False) # when remote_import.run( ONE_WEEK_AGO, get_all_applications_ids=get_all_application_ids, get_applications_ids_to_retry=find_applications_ids_to_retry, get_details=get_details, already_imported=has_already_been_imported, already_existing_user=has_already_been_created, ) # then process_beneficiary_application.assert_called_with( information={ "last_name": "Doe", "first_name": "John", "civility": "Mme", "email": "*****@*****.**", "application_id": 123, "department": "67", "phone": "0123456789", "birth_date": datetime(2000, 5, 1, 0, 0), "activity": "Étudiant", "postal_code": "67200", }, error_messages=[], new_beneficiaries=[], retry_ids=[], procedure_id=2567158, )
def pc_remote_import_beneficiaries(app) -> None: procedure_id = settings.DMS_NEW_ENROLLMENT_PROCEDURE_ID import_from_date = find_most_recent_beneficiary_creation_date_for_source( BeneficiaryImportSources.demarches_simplifiees, procedure_id ) remote_import.run(import_from_date)