11import os
22import unittest
3- from logging import ERROR , WARNING
3+ from logging import DEBUG , ERROR , WARNING
44from unittest .mock import patch
55
66import pandas as pd
@@ -26,12 +26,10 @@ def setUpClass(cls):
2626 )
2727 cls .env_patcher .start ()
2828
29- @patch ("pandas.core.generic.NDFrame.to_csv" , name = "Fake csv writer" )
3029 @patch ("dune_client.api.table.TableAPI.create_table" , name = "Fake Table Creator" )
3130 @patch ("dune_client.api.table.TableAPI.insert_table" , name = "Fake Table Inserter" )
32- @patch ("requests.sessions.Session.post" )
3331 def test_ensure_index_disabled_when_uploading (
34- self , mock_to_csv , mock_create_table , mock_insert_table , * _
32+ self , mock_create_table , mock_insert_table , * _
3533 ):
3634 mock_create_table .return_value = {
3735 "namespace" : "my_user" ,
@@ -41,24 +39,28 @@ def test_ensure_index_disabled_when_uploading(
4139 "already_existed" : False ,
4240 "message" : "Table created successfully" ,
4341 }
42+
4443 mock_insert_table .return_value = {"rows_written" : 9000 , "bytes_written" : 90 }
4544
4645 dummy_df = TypedDataFrame (
4746 dataframe = pd .DataFrame (
4847 [
49- {"foo" : "bar" },
50- {"baz" : "daz " },
48+ {"foo" : "bar" , "baz" : "one" },
49+ {"foo" : "two" , " baz" : "two " },
5150 ]
5251 ),
5352 types = {"foo" : "varchar" , "baz" : "varchar" },
5453 )
5554 destination = DuneDestination (
5655 api_key = os .getenv ("DUNE_API_KEY" ),
57- table_name = "foo" ,
56+ table_name = "foo.bar " ,
5857 request_timeout = 10 ,
5958 )
60- destination .save (dummy_df )
61- mock_to_csv .assert_called_once_with (index = False )
59+ with self .assertLogs (level = DEBUG ) as logs :
60+ destination .save (dummy_df )
61+
62+ self .assertIn ("Uploading DF to Dune" , logs .output [0 ])
63+ self .assertIn ("Inserted DF to Dune," , logs .output [1 ])
6264
6365 @patch ("pandas.core.generic.NDFrame.to_csv" , name = "Fake csv writer" )
6466 def test_duneclient_sets_timeout (self , mock_to_csv , * _ ):
@@ -70,13 +72,12 @@ def test_duneclient_sets_timeout(self, mock_to_csv, *_):
7072 )
7173 assert destination .client .request_timeout == timeout
7274
73- @patch ("dune_client.api.table.TableAPI.upload_csv" , name = "Fake CSV uploader" )
7475 @patch ("dune_client.api.table.TableAPI.create_table" , name = "Fake Table Creator" )
7576 @patch ("dune_client.api.table.TableAPI.insert_table" , name = "Fake Table Inserter" )
76- def test_dune_error_handling (
77- self , mock_dune_upload_csv , mock_create_table , mock_insert_table
78- ):
79- dest = DuneDestination ( api_key = "f00b4r" , table_name = "foo" , request_timeout = 10 )
77+ def test_dune_error_handling (self , mock_create_table , mock_insert_table ):
78+ dest = DuneDestination (
79+ api_key = "f00b4r" , table_name = "foo.bar" , request_timeout = 10
80+ )
8081 df = pd .DataFrame ([{"foo" : "bar" }])
8182
8283 mock_create_table .return_value = {
@@ -96,13 +97,13 @@ def test_dune_error_handling(
9697 val_err = ValueError ("Oops" )
9798 runtime_err = RuntimeError ("Big Oops" )
9899
99- mock_dune_upload_csv .side_effect = dune_err
100+ mock_create_table .side_effect = dune_err
100101
101102 data = TypedDataFrame (df , {})
102103 with self .assertLogs (level = ERROR ) as logs :
103104 dest .save (data )
104105
105- mock_dune_upload_csv .assert_called_once ()
106+ mock_create_table .assert_called_once ()
106107
107108 # does this shit really look better just because it's < 88 characters long?
108109 exmsg = (
@@ -111,36 +112,36 @@ def test_dune_error_handling(
111112 )
112113 self .assertIn (exmsg , logs .output [0 ])
113114
114- mock_dune_upload_csv .reset_mock ()
115- mock_dune_upload_csv .side_effect = val_err
115+ mock_create_table .reset_mock ()
116+ mock_create_table .side_effect = val_err
116117
117118 with self .assertLogs (level = ERROR ) as logs :
118119 dest .save (data )
119120
120- mock_dune_upload_csv .assert_called_once ()
121+ mock_create_table .assert_called_once ()
121122 expected_message = "Data processing error: Oops"
122123 self .assertIn (expected_message , logs .output [0 ])
123124
124- mock_dune_upload_csv .reset_mock ()
125- mock_dune_upload_csv .side_effect = runtime_err
125+ mock_create_table .reset_mock ()
126+ mock_create_table .side_effect = runtime_err
126127 with self .assertLogs (level = ERROR ) as logs :
127128 dest .save (data )
128129
129- mock_dune_upload_csv .assert_called_once ()
130+ mock_create_table .assert_called_once ()
130131 expected_message = "Data processing error: Big Oops"
131132 self .assertIn (expected_message , logs .output [0 ])
132133
133- mock_dune_upload_csv .reset_mock ()
134+ mock_create_table .reset_mock ()
134135
135136 # TIL: reset_mock() doesn't clear side effects....
136- mock_dune_upload_csv .side_effect = None
137+ mock_create_table .side_effect = None
137138
138- mock_dune_upload_csv .return_value = None
139+ mock_create_table .return_value = None
139140
140141 with self .assertLogs (level = ERROR ) as logs :
141142 dest .save (data )
142143
143- mock_dune_upload_csv .assert_called_once ()
144+ mock_create_table .assert_called_once ()
144145 self .assertIn ("Dune Upload Failed" , logs .output [0 ])
145146
146147
0 commit comments