@@ -65,6 +65,18 @@ def openpix_fetch_transactions__one_transaction():
6565 return payload .read ()
6666
6767
68+ @pytest .fixture
69+ def openpix_fetch_transactions__withdraw_transaction ():
70+ with open (
71+ Path (
72+ SAMPLE_PAYLOADS_DIR
73+ / "openpix_fetch_transactions__withdraw_transaction.json"
74+ ),
75+ "r" ,
76+ ) as payload :
77+ return payload .read ()
78+
79+
6880@responses .activate
6981def test_fetch_multiple_transactions (
7082 db ,
@@ -87,7 +99,7 @@ def test_fetch_multiple_transactions(
8799 start_date = datetime .date (2026 , 2 , 1 ), end_date = datetime .date (2026 , 2 , 28 )
88100 )
89101
90- assert len (transactions ) == 5
102+ assert len (transactions ) == 6
91103
92104 assert transactions [0 ].reference == "01KH7WTFXGGFDSJKHFKJSDHGDG"
93105 assert transactions [0 ].date == datetime .date (2026 , 2 , 15 )
@@ -111,27 +123,38 @@ def test_fetch_multiple_transactions(
111123 transactions [2 ].description
112124 == "Transferência entre contas bancárias - E54811417202602091301r0gglTvTqLN"
113125 )
114- assert transactions [2 ].amount == Decimal ("511.87" )
126+ assert transactions [2 ].amount == Decimal ("- 511.87" )
115127 assert transactions [2 ].bank_account == openpix_bank_account
116128 assert transactions [2 ].category == bank_account_transfer_category
117129 assert transactions [2 ].created_by == user
118130
119- assert transactions [3 ].reference == "MTBQL"
120- assert transactions [3 ].date == datetime .date (2026 , 2 , 28 )
121- assert transactions [3 ].description == "LUIZ ANTONIO - 12345678910"
122- assert transactions [3 ].amount == Decimal ("42" )
131+ assert transactions [3 ].reference == "E54811417202602091301r0gglTvTqLN-T"
132+ assert transactions [3 ].date == datetime .date (2026 , 2 , 20 )
133+ assert (
134+ transactions [3 ].description
135+ == "Taxa OpenPix - Transferência entre contas bancárias - E54811417202602091301r0gglTvTqLN"
136+ )
137+ assert transactions [3 ].amount == Decimal ("-1" )
123138 assert transactions [3 ].bank_account == openpix_bank_account
124- assert transactions [3 ].category == None
139+ assert transactions [3 ].category == bank_fee_category
125140 assert transactions [3 ].created_by == user
126141
127- assert transactions [4 ].reference == "MTBQL-T "
142+ assert transactions [4 ].reference == "MTBQL"
128143 assert transactions [4 ].date == datetime .date (2026 , 2 , 28 )
129- assert transactions [4 ].description == "Taxa OpenPix - LUIZ ANTONIO - 12345678910"
130- assert transactions [4 ].amount == Decimal ("-0.50 " )
144+ assert transactions [4 ].description == "LUIZ ANTONIO - 12345678910"
145+ assert transactions [4 ].amount == Decimal ("42 " )
131146 assert transactions [4 ].bank_account == openpix_bank_account
132- assert transactions [4 ].category == bank_fee_category
147+ assert transactions [4 ].category == None
133148 assert transactions [4 ].created_by == user
134149
150+ assert transactions [5 ].reference == "MTBQL-T"
151+ assert transactions [5 ].date == datetime .date (2026 , 2 , 28 )
152+ assert transactions [5 ].description == "Taxa OpenPix - LUIZ ANTONIO - 12345678910"
153+ assert transactions [5 ].amount == Decimal ("-0.50" )
154+ assert transactions [5 ].bank_account == openpix_bank_account
155+ assert transactions [5 ].category == bank_fee_category
156+ assert transactions [5 ].created_by == user
157+
135158
136159@responses .activate
137160def test_fetch_already_existing_transactions (
@@ -199,3 +222,48 @@ def test_do_not_return_webhook_processed_transactions(
199222 )
200223
201224 assert len (transactions ) == 0
225+
226+
227+ @responses .activate
228+ def test_fetch_withdraw_transaction (
229+ db ,
230+ openpix_fetch_transactions__withdraw_transaction ,
231+ openpix_bank_account ,
232+ bank_account_transfer_category ,
233+ bank_fee_category ,
234+ user ,
235+ ):
236+ responses .add (
237+ responses .GET ,
238+ f"{ settings .OPENPIX_API_BASE_URL } /api/v1/transaction" ,
239+ body = openpix_fetch_transactions__withdraw_transaction ,
240+ content_type = "application/json" ,
241+ )
242+
243+ transactions = fetch_transactions (
244+ start_date = datetime .date (2026 , 2 , 1 ), end_date = datetime .date (2026 , 2 , 28 )
245+ )
246+
247+ assert len (transactions ) == 2
248+
249+ assert transactions [0 ].reference == "E54811417202602091301r0gglTvTqLN"
250+ assert transactions [0 ].date == datetime .date (2026 , 2 , 20 )
251+ assert (
252+ transactions [0 ].description
253+ == "Transferência entre contas bancárias - E54811417202602091301r0gglTvTqLN"
254+ )
255+ assert transactions [0 ].amount == Decimal ("-511.87" )
256+ assert transactions [0 ].bank_account == openpix_bank_account
257+ assert transactions [0 ].category == bank_account_transfer_category
258+ assert transactions [0 ].created_by == user
259+
260+ assert transactions [1 ].reference == "E54811417202602091301r0gglTvTqLN-T"
261+ assert transactions [1 ].date == datetime .date (2026 , 2 , 20 )
262+ assert (
263+ transactions [1 ].description
264+ == "Taxa OpenPix - Transferência entre contas bancárias - E54811417202602091301r0gglTvTqLN"
265+ )
266+ assert transactions [1 ].amount == Decimal ("-1" )
267+ assert transactions [1 ].bank_account == openpix_bank_account
268+ assert transactions [1 ].category == bank_fee_category
269+ assert transactions [1 ].created_by == user
0 commit comments