@@ -103,6 +103,7 @@ def test_update_credit_balances_expense(session_factory: DbSessionFactory):
103103 assert expense_record .token is None
104104 assert expense_record .chain is None
105105 assert expense_record .provider == "ALEPH"
106+ assert expense_record .origin is None
106107 assert expense_record .origin_ref == "expense_ref"
107108 assert expense_record .payment_method == "credit_expense"
108109 assert expense_record .credit_ref == "expense_msg_789"
@@ -111,6 +112,57 @@ def test_update_credit_balances_expense(session_factory: DbSessionFactory):
111112 assert expense_record .message_timestamp == message_timestamp
112113
113114
115+ def test_update_credit_balances_expense_with_new_fields (
116+ session_factory : DbSessionFactory ,
117+ ):
118+ """Test direct database insertion for credit expense messages with new fields."""
119+ credits_list = [
120+ {
121+ "address" : "0x456" ,
122+ "amount" : 500 ,
123+ "ref" : "expense_ref" ,
124+ "execution_id" : "exec_12345" ,
125+ "node_id" : "node_67890" ,
126+ "price" : "0.001" ,
127+ "time" : 1640995200000 , # This will be skipped for now
128+ }
129+ ]
130+
131+ message_timestamp = dt .datetime (2023 , 1 , 2 , 12 , 0 , 0 , tzinfo = dt .timezone .utc )
132+
133+ with session_factory () as session :
134+ update_credit_balances_expense (
135+ session = session ,
136+ credits_list = credits_list ,
137+ message_hash = "expense_msg_with_fields_789" ,
138+ message_timestamp = message_timestamp ,
139+ )
140+ session .commit ()
141+
142+ # Verify expense record was inserted with new field mappings
143+ expense_record = (
144+ session .query (AlephCreditHistoryDb )
145+ .filter_by (address = "0x456" , credit_ref = "expense_msg_with_fields_789" )
146+ .first ()
147+ )
148+
149+ assert expense_record is not None
150+ assert expense_record .address == "0x456"
151+ assert expense_record .amount == - 500
152+ assert expense_record .ratio == Decimal ("0.001" ) # price mapped to ratio
153+ assert expense_record .tx_hash == "node_67890" # node_id mapped to tx_hash
154+ assert expense_record .token is None
155+ assert expense_record .chain is None
156+ assert expense_record .provider == "ALEPH"
157+ assert expense_record .origin == "exec_12345" # execution_id mapped to origin
158+ assert expense_record .origin_ref == "expense_ref"
159+ assert expense_record .payment_method == "credit_expense"
160+ assert expense_record .credit_ref == "expense_msg_with_fields_789"
161+ assert expense_record .credit_index == 0
162+ assert expense_record .expiration_date is None
163+ assert expense_record .message_timestamp == message_timestamp
164+
165+
114166def test_update_credit_balances_transfer (session_factory : DbSessionFactory ):
115167 """Test direct database insertion for credit transfer messages."""
116168 credits_list = [
0 commit comments