from app.adapters.briteverify.models import BriteVerifyValidationList def test_process_unprocessed_validation_lists_skips_when_no_lists( handler, repository_mock, briteverify_client_mock, ) -> None: repository_mock.get_unprocessed_verify_list_ids.return_value = [] handler.process_unprocessed_validation_lists() repository_mock.get_unprocessed_verify_list_ids.assert_called_once_with() briteverify_client_mock.get_validation_list_state.assert_not_called() repository_mock.update_briteverify_results.assert_not_called() def test_create_new_validation_list_uses_validation_start_date( handler, repository_mock, briteverify_client_mock, ) -> None: handler.verify_list_limit = 3 handler.chunk_size = 5 handler.validation_start_date = "2026-04-01" briteverify_client_mock.get_available_credits.return_value = 5 repository_mock.get_unverified_emails.side_effect = [ ["one@example.com", "two@example.com"], [], ] briteverify_client_mock.create_validation_list.return_value = ( BriteVerifyValidationList( id="list-1", state="open", ) ) handler.create_new_validation_list() repository_mock.get_unverified_emails.assert_any_call( start_date="2026-04-01", limit=3, ) briteverify_client_mock.create_validation_list.assert_called_once_with( ["one@example.com", "two@example.com"] ) repository_mock.create_briteverify_list.assert_called_once() repository_mock.create_pending_briteverify_results.assert_called_once_with( "list-1", ["one@example.com", "two@example.com"], ) def test_handle_wraps_work_in_db_session( handler, repository_mock, briteverify_client_mock, db_mock, ) -> None: repository_mock.get_unprocessed_verify_list_ids.return_value = [] briteverify_client_mock.get_available_credits.return_value = 0 handler.handle() db_mock.session_factory.assert_called_once_with()