@@ -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 ]
@@ -527,14 +512,56 @@ def test_local_diff(self, mock_diff_tables):
527
512
mock_connect .assert_any_call (connection , "." .join (prod_qualified_list ), tuple (expected_primary_keys ), threads )
528
513
mock_diff .get_stats_string .assert_called_once ()
529
514
515
+ @patch ("data_diff.dbt.diff_tables" )
516
+ def test_local_diff_types_differ (self , mock_diff_tables ):
517
+ connection = {}
518
+ mock_table1 = Mock ()
519
+ mock_table2 = Mock ()
520
+ table1_column_dictionary = {"col1" : ("col1" , "type" ), "col2" : ("col2" , "type" )}
521
+ table2_column_dictionary = {"col1" : ("col1" , "type" ), "col2" : ("col2" , "differing_type" )}
522
+ mock_table1 .get_schema .return_value = table1_column_dictionary
523
+ mock_table2 .get_schema .return_value = table2_column_dictionary
524
+ mock_diff = MagicMock ()
525
+ mock_diff_tables .return_value = mock_diff
526
+ mock_diff .__iter__ .return_value = [1 , 2 , 3 ]
527
+ threads = None
528
+ where = "a_string"
529
+ dev_qualified_list = ["dev_db" , "dev_schema" , "dev_table" ]
530
+ prod_qualified_list = ["prod_db" , "prod_schema" , "prod_table" ]
531
+ expected_primary_keys = ["key" ]
532
+ diff_vars = TDiffVars (
533
+ dev_path = dev_qualified_list ,
534
+ prod_path = prod_qualified_list ,
535
+ primary_keys = expected_primary_keys ,
536
+ connection = connection ,
537
+ threads = threads ,
538
+ where_filter = where ,
539
+ include_columns = [],
540
+ exclude_columns = [],
541
+ )
542
+ with patch ("data_diff.dbt.connect_to_table" , side_effect = [mock_table1 , mock_table2 ]) as mock_connect :
543
+ _local_diff (diff_vars )
544
+
545
+ mock_diff_tables .assert_called_once_with (
546
+ mock_table1 ,
547
+ mock_table2 ,
548
+ threaded = True ,
549
+ algorithm = Algorithm .JOINDIFF ,
550
+ extra_columns = ANY ,
551
+ where = where ,
552
+ )
553
+ self .assertEqual (len (mock_diff_tables .call_args [1 ]["extra_columns" ]), 1 )
554
+ self .assertEqual (mock_connect .call_count , 2 )
555
+ mock_diff .get_stats_string .assert_called_once ()
556
+
530
557
@patch ("data_diff.dbt.diff_tables" )
531
558
def test_local_diff_no_diffs (self , mock_diff_tables ):
532
559
connection = {}
533
- column_set = {"col1" , "col2" }
560
+ column_dictionary = {"col1" : ( "col1" , "type" ), " col2": ( "col2" , "type" ) }
534
561
mock_table1 = Mock ()
535
- mock_table1 .get_schema .return_value = column_set
562
+ mock_table1 .get_schema .return_value = column_dictionary
536
563
mock_table2 = Mock ()
537
- mock_table2 .get_schema .return_value = column_set
564
+ mock_table2 .get_schema .return_value = column_dictionary
538
565
mock_diff = MagicMock ()
539
566
mock_diff_tables .return_value = mock_diff
540
567
mock_diff .__iter__ .return_value = []
0 commit comments