def test_merge_field_schemas_no_same_id(self): field_schemas_1 = [ bigquery.TableFieldSchema(name='II', type=TableFieldConstants.TYPE_INTEGER, mode=TableFieldConstants.MODE_NULLABLE, description='INFO foo desc'), bigquery.TableFieldSchema(name='IFR', type=TableFieldConstants.TYPE_FLOAT, mode=TableFieldConstants.MODE_REPEATED, description='INFO foo desc') ] field_schemas_2 = [ bigquery.TableFieldSchema(name='AB', type=TableFieldConstants.TYPE_FLOAT, mode=TableFieldConstants.MODE_NULLABLE, description='INFO foo desc') ] merged_field_schemas = bigquery_util._get_merged_field_schemas( field_schemas_1, field_schemas_2) expected_merged_field_schemas = [ bigquery.TableFieldSchema(name='II', type=TableFieldConstants.TYPE_INTEGER, mode=TableFieldConstants.MODE_NULLABLE, description='INFO foo desc'), bigquery.TableFieldSchema(name='IFR', type=TableFieldConstants.TYPE_FLOAT, mode=TableFieldConstants.MODE_REPEATED, description='INFO foo desc'), bigquery.TableFieldSchema(name='AB', type=TableFieldConstants.TYPE_FLOAT, mode=TableFieldConstants.MODE_NULLABLE, description='INFO foo desc') ] self.assertEqual(merged_field_schemas, expected_merged_field_schemas)
def test_merge_field_schemas_merge_record_fields(self): call_record_1 = bigquery.TableFieldSchema( name=ColumnKeyConstants.CALLS, type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='One record for each call.') call_record_1.fields.append(bigquery.TableFieldSchema( name='FB', type=TableFieldConstants.TYPE_BOOLEAN, mode=TableFieldConstants.MODE_NULLABLE, description='FORMAT foo desc')) field_schemas_1 = [call_record_1] call_record_2 = bigquery.TableFieldSchema( name=ColumnKeyConstants.CALLS, type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='One record for each call.') call_record_2.fields.append(bigquery.TableFieldSchema( name='GQ', type=TableFieldConstants.TYPE_INTEGER, mode=TableFieldConstants.MODE_NULLABLE, description='FORMAT foo desc')) field_schemas_2 = [call_record_2] call_record_3 = bigquery.TableFieldSchema( name=ColumnKeyConstants.CALLS, type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='One record for each call.') call_record_3.fields.append(bigquery.TableFieldSchema( name='FB', type=TableFieldConstants.TYPE_BOOLEAN, mode=TableFieldConstants.MODE_NULLABLE, description='FORMAT foo desc')) call_record_3.fields.append(bigquery.TableFieldSchema( name='GQ', type=TableFieldConstants.TYPE_INTEGER, mode=TableFieldConstants.MODE_NULLABLE, description='FORMAT foo desc')) expected_merged_field_schemas = [call_record_3] self.assertEqual( bigquery_util._get_merged_field_schemas(field_schemas_1, field_schemas_2), expected_merged_field_schemas)
def test_merge_field_schemas_merge_inner_record_fields(self): record_1 = bigquery.TableFieldSchema( name=ColumnKeyConstants.CALLS, type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='One record for each call.') inner_record_1 = bigquery.TableFieldSchema( name='inner record', type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='One record for each call.') inner_record_1.fields.append(bigquery.TableFieldSchema( name='FB', type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='FORMAT foo desc')) record_1.fields.append(inner_record_1) field_schemas_1 = [record_1] record_2 = bigquery.TableFieldSchema( name=ColumnKeyConstants.CALLS, type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='One record for each call.') inner_record_2 = bigquery.TableFieldSchema( name='inner record', type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='One record for each call.') inner_record_2.fields.append(bigquery.TableFieldSchema( name='AB', type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='FORMAT foo desc')) record_2.fields.append(inner_record_2) field_schemas_2 = [record_2] merged_record = bigquery.TableFieldSchema( name=ColumnKeyConstants.CALLS, type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='One record for each call.') merged_inner_record = bigquery.TableFieldSchema( name='inner record', type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='One record for each call.') merged_inner_record.fields.append(bigquery.TableFieldSchema( name='FB', type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='FORMAT foo desc')) merged_inner_record.fields.append(bigquery.TableFieldSchema( name='AB', type=TableFieldConstants.TYPE_RECORD, mode=TableFieldConstants.MODE_REPEATED, description='FORMAT foo desc')) merged_record.fields.append(merged_inner_record) expected_merged_field_schemas = [merged_record] self.assertEqual( bigquery_util._get_merged_field_schemas(field_schemas_1, field_schemas_2), expected_merged_field_schemas)