@@ -154,6 +154,7 @@ def test_from_api_repr(target_class):
154154 "foo" : "bar" ,
155155 },
156156 },
157+ "dataGovernanceType" : "DATA_MASKING" ,
157158 }
158159 actual_routine = target_class .from_api_repr (resource )
159160
@@ -192,6 +193,7 @@ def test_from_api_repr(target_class):
192193 assert actual_routine .remote_function_options .connection == "connection_string"
193194 assert actual_routine .remote_function_options .max_batching_rows == 50
194195 assert actual_routine .remote_function_options .user_defined_context == {"foo" : "bar" }
196+ assert actual_routine .data_governance_type == "DATA_MASKING"
195197
196198
197199def test_from_api_repr_tvf_function (target_class ):
@@ -294,6 +296,7 @@ def test_from_api_repr_w_minimal_resource(target_class):
294296 assert actual_routine .description is None
295297 assert actual_routine .determinism_level is None
296298 assert actual_routine .remote_function_options is None
299+ assert actual_routine .data_governance_type is None
297300
298301
299302def test_from_api_repr_w_unknown_fields (target_class ):
@@ -428,6 +431,20 @@ def test_from_api_repr_w_unknown_fields(target_class):
428431 "determinismLevel" : bigquery .DeterminismLevel .DETERMINISM_LEVEL_UNSPECIFIED
429432 },
430433 ),
434+ (
435+ {
436+ "arguments" : [{"name" : "x" , "dataType" : {"typeKind" : "INT64" }}],
437+ "definitionBody" : "x * 3" ,
438+ "language" : "SQL" ,
439+ "returnType" : {"typeKind" : "INT64" },
440+ "routineType" : "SCALAR_FUNCTION" ,
441+ "description" : "A routine description." ,
442+ "determinismLevel" : bigquery .DeterminismLevel .DETERMINISM_LEVEL_UNSPECIFIED ,
443+ "dataGovernanceType" : "DATA_MASKING" ,
444+ },
445+ ["data_governance_type" ],
446+ {"dataGovernanceType" : "DATA_MASKING" },
447+ ),
431448 (
432449 {},
433450 [
@@ -554,6 +571,36 @@ def test_set_remote_function_options_w_none(object_under_test):
554571 assert object_under_test ._properties ["remoteFunctionOptions" ] is None
555572
556573
574+ def test_set_data_governance_type_w_none (object_under_test ):
575+ object_under_test .data_governance_type = None
576+ assert object_under_test .data_governance_type is None
577+ assert object_under_test ._properties ["dataGovernanceType" ] is None
578+
579+
580+ def test_set_data_governance_type_valid (object_under_test ):
581+ object_under_test .data_governance_type = "DATA_MASKING"
582+ assert object_under_test .data_governance_type == "DATA_MASKING"
583+ assert object_under_test ._properties ["dataGovernanceType" ] == "DATA_MASKING"
584+
585+
586+ def test_set_data_governance_type_wrong_type (object_under_test ):
587+ with pytest .raises (ValueError ) as exp :
588+ object_under_test .data_governance_type = 1
589+ assert "invalid data_governance_type" in str (exp )
590+ assert object_under_test .data_governance_type is None
591+ assert object_under_test ._properties .get ("dataGovernanceType" ) is None
592+
593+
594+ def test_set_data_governance_type_wrong_str (object_under_test ):
595+ """Client does not verify the content of data_governance_type string to be
596+ compatible with future upgrades. If the value is not supported, BigQuery
597+ itself will report an error.
598+ """
599+ object_under_test .data_governance_type = "RANDOM_STRING"
600+ assert object_under_test .data_governance_type == "RANDOM_STRING"
601+ assert object_under_test ._properties ["dataGovernanceType" ] == "RANDOM_STRING"
602+
603+
557604def test_repr (target_class ):
558605 model = target_class ("my-proj.my_dset.my_routine" )
559606 actual_routine = repr (model )
0 commit comments