@@ -298,14 +298,90 @@ def test_grant_pivot_role_all_database_permissions_to_source_database(
298298 )
299299
300300
301- def test_check_if_exists_and_create_shared_database_in_target (manager_with_mocked_clients , dataset1 : S3Dataset ):
301+ def test_check_if_exists_and_create_shared_database_in_target_with_source_description (
302+ manager_with_mocked_clients , dataset1 : S3Dataset
303+ ):
304+ """Test that source database description is retrieved and passed to create_database"""
305+ manager , lf_client , glue_client , mock_glue_client = manager_with_mocked_clients
306+ glue_client .create_database .return_value = True
307+ glue_client .get_glue_database .return_value = {
308+ 'Database' : {
309+ 'Name' : dataset1 .GlueDatabaseName ,
310+ 'Description' : 'Production customer data - PII encrypted' ,
311+ }
312+ }
313+ # When
314+ manager .check_if_exists_and_create_shared_database_in_target ()
315+ # Then
316+ glue_client .get_glue_database .assert_called_once ()
317+ glue_client .create_database .assert_called_once ()
318+ glue_client .create_database .assert_called_with (
319+ location = f's3://{ dataset1 .S3BucketName } ' ,
320+ description = 'Production customer data - PII encrypted' ,
321+ )
322+
323+
324+ def test_check_if_exists_and_create_shared_database_in_target_without_source_description (
325+ manager_with_mocked_clients , dataset1 : S3Dataset
326+ ):
327+ """Test that None description is passed when source database has no description"""
328+ manager , lf_client , glue_client , mock_glue_client = manager_with_mocked_clients
329+ glue_client .create_database .return_value = True
330+ glue_client .get_glue_database .return_value = {
331+ 'Database' : {
332+ 'Name' : dataset1 .GlueDatabaseName ,
333+ }
334+ }
335+ # When
336+ manager .check_if_exists_and_create_shared_database_in_target ()
337+ # Then
338+ glue_client .get_glue_database .assert_called_once ()
339+ glue_client .create_database .assert_called_once ()
340+ glue_client .create_database .assert_called_with (
341+ location = f's3://{ dataset1 .S3BucketName } ' ,
342+ description = None ,
343+ )
344+
345+
346+ def test_check_if_exists_and_create_shared_database_in_target_source_db_not_found (
347+ manager_with_mocked_clients , dataset1 : S3Dataset
348+ ):
349+ """Test that None description is passed when source database doesn't exist"""
350+ manager , lf_client , glue_client , mock_glue_client = manager_with_mocked_clients
351+ glue_client .create_database .return_value = True
352+ glue_client .get_glue_database .return_value = False
353+ # When
354+ manager .check_if_exists_and_create_shared_database_in_target ()
355+ # Then
356+ glue_client .get_glue_database .assert_called_once ()
357+ glue_client .create_database .assert_called_once ()
358+ glue_client .create_database .assert_called_with (
359+ location = f's3://{ dataset1 .S3BucketName } ' ,
360+ description = None ,
361+ )
362+
363+
364+ def test_check_if_exists_and_create_shared_database_in_target_empty_description (
365+ manager_with_mocked_clients , dataset1 : S3Dataset
366+ ):
367+ """Test that empty string description is passed through (fallback handled in GlueClient)"""
302368 manager , lf_client , glue_client , mock_glue_client = manager_with_mocked_clients
303369 glue_client .create_database .return_value = True
370+ glue_client .get_glue_database .return_value = {
371+ 'Database' : {
372+ 'Name' : dataset1 .GlueDatabaseName ,
373+ 'Description' : '' ,
374+ }
375+ }
304376 # When
305377 manager .check_if_exists_and_create_shared_database_in_target ()
306378 # Then
379+ glue_client .get_glue_database .assert_called_once ()
307380 glue_client .create_database .assert_called_once ()
308- glue_client .create_database .assert_called_with (location = f's3://{ dataset1 .S3BucketName } ' )
381+ glue_client .create_database .assert_called_with (
382+ location = f's3://{ dataset1 .S3BucketName } ' ,
383+ description = '' ,
384+ )
309385
310386
311387def test_grant_pivot_role_all_database_permissions_to_shared_database (
0 commit comments