@@ -93,10 +93,47 @@ def test_statement_execution_backend_fetch_happy():
9393 assert [Row (id = 1 ), Row (id = 2 ), Row (id = 3 )] == result
9494
9595
96- def test_statement_execution_backend_save_table_overwrite (mocker ):
97- seb = StatementExecutionBackend (mocker .Mock (), "abc" )
98- with pytest .raises (NotImplementedError ):
99- seb .save_table ("a.b.c" , [1 , 2 , 3 ], Bar , mode = "overwrite" )
96+ def test_statement_execution_backend_save_table_overwrite_empty_table ():
97+ ws = create_autospec (WorkspaceClient )
98+ ws .statement_execution .execute_statement .return_value = ExecuteStatementResponse (
99+ status = StatementStatus (state = StatementState .SUCCEEDED )
100+ )
101+ seb = StatementExecutionBackend (ws , "abc" )
102+ seb .save_table ("a.b.c" , [Baz ("1" )], Baz , mode = "overwrite" )
103+ ws .statement_execution .execute_statement .assert_has_calls (
104+ [
105+ mock .call (
106+ warehouse_id = "abc" ,
107+ statement = "CREATE TABLE IF NOT EXISTS a.b.c (first STRING NOT NULL, second STRING) USING DELTA" ,
108+ catalog = None ,
109+ schema = None ,
110+ disposition = None ,
111+ format = Format .JSON_ARRAY ,
112+ byte_limit = None ,
113+ wait_timeout = None ,
114+ ),
115+ mock .call (
116+ warehouse_id = "abc" ,
117+ statement = "TRUNCATE TABLE a.b.c" ,
118+ catalog = None ,
119+ schema = None ,
120+ disposition = None ,
121+ format = Format .JSON_ARRAY ,
122+ byte_limit = None ,
123+ wait_timeout = None ,
124+ ),
125+ mock .call (
126+ warehouse_id = "abc" ,
127+ statement = "INSERT INTO a.b.c (first, second) VALUES ('1', NULL)" ,
128+ catalog = None ,
129+ schema = None ,
130+ disposition = None ,
131+ format = Format .JSON_ARRAY ,
132+ byte_limit = None ,
133+ wait_timeout = None ,
134+ ),
135+ ]
136+ )
100137
101138
102139def test_statement_execution_backend_save_table_empty_records ():
@@ -357,3 +394,16 @@ def test_mock_backend_rows_dsl():
357394 Row (foo = 1 , bar = 2 ),
358395 Row (foo = 3 , bar = 4 ),
359396 ]
397+
398+
399+ def test_mock_backend_overwrite ():
400+ mock_backend = MockBackend ()
401+ mock_backend .save_table ("a.b.c" , [Foo ("a1" , True ), Foo ("c2" , False )], Foo , "append" )
402+ mock_backend .save_table ("a.b.c" , [Foo ("aa" , True ), Foo ("bb" , False )], Foo , "overwrite" )
403+ mock_backend .save_table ("a.b.c" , [Foo ("aaa" , True ), Foo ("bbb" , False )], Foo , "overwrite" )
404+
405+ assert mock_backend .rows_written_for ("a.b.c" , "append" ) == []
406+ assert mock_backend .rows_written_for ("a.b.c" , "overwrite" ) == [
407+ Row (first = "aaa" , second = True ),
408+ Row (first = "bbb" , second = False ),
409+ ]
0 commit comments