@@ -442,21 +442,6 @@ def test_get_connection_no_type(self, mock_open, mock_profile_renderer, mock_yam
442
442
_ , _ = DbtParser .get_connection_creds (mock_self )
443
443
444
444
445
- EXAMPLE_DIFF_RESULTS = {
446
- "pks" : {"exclusives" : [5 , 3 ]},
447
- "values" : {
448
- "rows_with_differences" : 2 ,
449
- "total_rows" : 10 ,
450
- "columns_diff_stats" : [
451
- {"column_name" : "name" , "match" : 80.0 },
452
- {"column_name" : "age" , "match" : 100.0 },
453
- {"column_name" : "city" , "match" : 0.0 },
454
- {"column_name" : "country" , "match" : 100.0 },
455
- ],
456
- },
457
- }
458
-
459
-
460
445
class TestDbtDiffer (unittest .TestCase ):
461
446
# Set DATA_DIFF_DBT_PROJ to use your own dbt project, otherwise uses the duckdb project in tests/dbt_artifacts
462
447
def test_integration_basic_dbt (self ):
@@ -488,10 +473,10 @@ def test_integration_cloud_dbt(self):
488
473
def test_local_diff (self , mock_diff_tables ):
489
474
connection = {}
490
475
mock_table1 = Mock ()
491
- column_set = {"col1" , "col2" }
492
- mock_table1 .get_schema .return_value = column_set
476
+ column_dictionary = {"col1" : ( "col1" , "type" ), " col2": ( "col2" , "type" ) }
477
+ mock_table1 .get_schema .return_value = column_dictionary
493
478
mock_table2 = Mock ()
494
- mock_table2 .get_schema .return_value = column_set
479
+ mock_table2 .get_schema .return_value = column_dictionary
495
480
mock_diff = MagicMock ()
496
481
mock_diff_tables .return_value = mock_diff
497
482
mock_diff .__iter__ .return_value = [1 , 2 , 3 ]
@@ -528,14 +513,56 @@ def test_local_diff(self, mock_diff_tables):
528
513
mock_connect .assert_any_call (connection , "." .join (prod_qualified_list ), tuple (expected_primary_keys ), threads )
529
514
mock_diff .get_stats_string .assert_called_once ()
530
515
516
+ @patch ("data_diff.dbt.diff_tables" )
517
+ def test_local_diff_types_differ (self , mock_diff_tables ):
518
+ connection = {}
519
+ mock_table1 = Mock ()
520
+ mock_table2 = Mock ()
521
+ table1_column_dictionary = {"col1" : ("col1" , "type" ), "col2" : ("col2" , "type" )}
522
+ table2_column_dictionary = {"col1" : ("col1" , "type" ), "col2" : ("col2" , "differing_type" )}
523
+ mock_table1 .get_schema .return_value = table1_column_dictionary
524
+ mock_table2 .get_schema .return_value = table2_column_dictionary
525
+ mock_diff = MagicMock ()
526
+ mock_diff_tables .return_value = mock_diff
527
+ mock_diff .__iter__ .return_value = [1 , 2 , 3 ]
528
+ threads = None
529
+ where = "a_string"
530
+ dev_qualified_list = ["dev_db" , "dev_schema" , "dev_table" ]
531
+ prod_qualified_list = ["prod_db" , "prod_schema" , "prod_table" ]
532
+ expected_primary_keys = ["key" ]
533
+ diff_vars = TDiffVars (
534
+ dev_path = dev_qualified_list ,
535
+ prod_path = prod_qualified_list ,
536
+ primary_keys = expected_primary_keys ,
537
+ connection = connection ,
538
+ threads = threads ,
539
+ where_filter = where ,
540
+ include_columns = [],
541
+ exclude_columns = [],
542
+ )
543
+ with patch ("data_diff.dbt.connect_to_table" , side_effect = [mock_table1 , mock_table2 ]) as mock_connect :
544
+ _local_diff (diff_vars )
545
+
546
+ mock_diff_tables .assert_called_once_with (
547
+ mock_table1 ,
548
+ mock_table2 ,
549
+ threaded = True ,
550
+ algorithm = Algorithm .JOINDIFF ,
551
+ extra_columns = ANY ,
552
+ where = where ,
553
+ )
554
+ self .assertEqual (len (mock_diff_tables .call_args [1 ]["extra_columns" ]), 1 )
555
+ self .assertEqual (mock_connect .call_count , 2 )
556
+ mock_diff .get_stats_string .assert_called_once ()
557
+
531
558
@patch ("data_diff.dbt.diff_tables" )
532
559
def test_local_diff_no_diffs (self , mock_diff_tables ):
533
560
connection = {}
534
- column_set = {"col1" , "col2" }
561
+ column_dictionary = {"col1" : ( "col1" , "type" ), " col2": ( "col2" , "type" ) }
535
562
mock_table1 = Mock ()
536
- mock_table1 .get_schema .return_value = column_set
563
+ mock_table1 .get_schema .return_value = column_dictionary
537
564
mock_table2 = Mock ()
538
- mock_table2 .get_schema .return_value = column_set
565
+ mock_table2 .get_schema .return_value = column_dictionary
539
566
mock_diff = MagicMock ()
540
567
mock_diff_tables .return_value = mock_diff
541
568
mock_diff .__iter__ .return_value = []
0 commit comments