1919
2020from google .cloud .bigquery import external_config
2121from google .cloud .bigquery import schema
22+ from google .cloud .bigquery .enums import SourceColumnMatch
2223
2324import pytest
2425
2526
2627class TestExternalConfig (unittest .TestCase ):
2728 SOURCE_URIS = ["gs://foo" , "gs://bar" ]
29+ SOURCE_COLUMN_MATCH = SourceColumnMatch .NAME
2830
2931 BASE_RESOURCE = {
3032 "sourceFormat" : "" ,
@@ -121,6 +123,20 @@ def test_schema_empty(self):
121123 want = {"sourceFormat" : "" , "schema" : {"fields" : []}}
122124 self .assertEqual (got , want )
123125
126+ def test_source_column_match_None (self ):
127+ ec = external_config .ExternalConfig ("" )
128+ ec .source_column_match = None
129+ expected = None
130+ result = ec .source_column_match
131+ self .assertEqual (expected , result )
132+
133+ def test_source_column_match_valid_input (self ):
134+ ec = external_config .ExternalConfig ("" )
135+ ec .source_column_match = SourceColumnMatch .NAME
136+ expected = "NAME"
137+ result = ec .source_column_match
138+ self .assertEqual (expected , result )
139+
124140 def _verify_base (self , ec ):
125141 self .assertEqual (ec .autodetect , True )
126142 self .assertEqual (ec .compression , "compression" )
@@ -251,6 +267,7 @@ def test_from_api_repr_csv(self):
251267 "allowJaggedRows" : False ,
252268 "encoding" : "encoding" ,
253269 "preserveAsciiControlCharacters" : False ,
270+ "sourceColumnMatch" : self .SOURCE_COLUMN_MATCH ,
254271 },
255272 },
256273 )
@@ -267,6 +284,10 @@ def test_from_api_repr_csv(self):
267284 self .assertEqual (ec .options .allow_jagged_rows , False )
268285 self .assertEqual (ec .options .encoding , "encoding" )
269286 self .assertEqual (ec .options .preserve_ascii_control_characters , False )
287+ self .assertEqual (
288+ ec .options .source_column_match ,
289+ self .SOURCE_COLUMN_MATCH ,
290+ )
270291
271292 got_resource = ec .to_api_repr ()
272293
@@ -288,6 +309,7 @@ def test_to_api_repr_csv(self):
288309 options .skip_leading_rows = 123
289310 options .allow_jagged_rows = False
290311 options .preserve_ascii_control_characters = False
312+ options .source_column_match = self .SOURCE_COLUMN_MATCH
291313 ec .csv_options = options
292314
293315 exp_resource = {
@@ -300,6 +322,7 @@ def test_to_api_repr_csv(self):
300322 "allowJaggedRows" : False ,
301323 "encoding" : "encoding" ,
302324 "preserveAsciiControlCharacters" : False ,
325+ "sourceColumnMatch" : self .SOURCE_COLUMN_MATCH ,
303326 },
304327 }
305328
@@ -852,6 +875,8 @@ def test_to_api_repr(self):
852875
853876
854877class CSVOptions (unittest .TestCase ):
878+ SOURCE_COLUMN_MATCH = SourceColumnMatch .NAME
879+
855880 def test_to_api_repr (self ):
856881 options = external_config .CSVOptions ()
857882 options .field_delimiter = "\t "
@@ -861,6 +886,7 @@ def test_to_api_repr(self):
861886 options .allow_jagged_rows = False
862887 options .encoding = "UTF-8"
863888 options .preserve_ascii_control_characters = False
889+ options .source_column_match = self .SOURCE_COLUMN_MATCH
864890
865891 resource = options .to_api_repr ()
866892
@@ -874,6 +900,7 @@ def test_to_api_repr(self):
874900 "allowJaggedRows" : False ,
875901 "encoding" : "UTF-8" ,
876902 "preserveAsciiControlCharacters" : False ,
903+ "sourceColumnMatch" : self .SOURCE_COLUMN_MATCH ,
877904 },
878905 )
879906
0 commit comments