Skip to content

Commit db6ef9e

Browse files
committed
update tests based on Schema superclass UserList
1 parent 94e9e6e commit db6ef9e

File tree

2 files changed

+27
-38
lines changed

2 files changed

+27
-38
lines changed

google/cloud/bigquery/schema.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
from __future__ import annotations
1818

1919
import collections
20-
2120
import copy
2221
import enum
2322
from typing import Any, cast, Dict, Iterable, Optional, Union

tests/unit/test_schema.py

Lines changed: 27 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -851,21 +851,8 @@ def test_schema_fields_sequence(self):
851851

852852
def test_unknown_properties(self):
853853
schema = [
854-
{
855-
"name": "full_name",
856-
"type": "STRING",
857-
"mode": "REQUIRED",
858-
"someNewProperty": "test-value",
859-
},
860-
{
861-
"name": "age",
862-
# Note: This type should be included, too. Avoid client-side
863-
# validation, as it could prevent backwards-compatible
864-
# evolution of the server-side behavior.
865-
"typo": "INTEGER",
866-
"mode": "REQUIRED",
867-
"anotherNewProperty": "another-test",
868-
},
854+
{"name": "full_name", "type": "STRING", "mode": "REQUIRED"},
855+
{"name": "address", "invalid_key": "STRING", "mode": "REQUIRED"},
869856
]
870857
with pytest.raises(Exception): # Or a more specific exception if known
871858
_to_schema_fields(schema)
@@ -908,7 +895,7 @@ def test_valid_mapping_representation(self, schema, expected_schema):
908895

909896
def test_valid_schema_object(self):
910897
schema = Schema(
911-
fields=[SchemaField("name", "STRING")],
898+
fields=[SchemaField("name", "STRING", description=None, policy_tags=None)],
912899
foreign_type_info="TestInfo",
913900
)
914901
result = _to_schema_fields(schema)
@@ -919,7 +906,6 @@ def test_valid_schema_object(self):
919906
assert result.to_api_repr() == expected.to_api_repr()
920907

921908

922-
# Testing the new Schema Class =================
923909
class TestSchemaObject: # New test class for Schema object interactions
924910
def test_schema_object_field_access(self):
925911
schema = Schema(
@@ -928,9 +914,10 @@ def test_schema_object_field_access(self):
928914
SchemaField("age", "INTEGER"),
929915
]
930916
)
917+
931918
assert len(schema) == 2
932-
assert schema[0].name == "name" # Access fields using indexing
933-
assert schema[1].field_type == "INTEGER"
919+
assert schema[0]["name"] == "name" # Access fields using indexing
920+
assert schema[1]["type"] == "INTEGER"
934921

935922
def test_schema_object_foreign_type_info(self):
936923
schema = Schema(foreign_type_info="External")
@@ -949,7 +936,7 @@ def test_str(self):
949936
)
950937
assert (
951938
str(schema)
952-
== "Schema([SchemaField('name', 'STRING', 'NULLABLE', None, None, (), None)], TestInfo)"
939+
== "Schema([{'name': 'name', 'mode': 'NULLABLE', 'type': 'STRING'}], TestInfo)"
953940
)
954941

955942
@pytest.mark.parametrize(
@@ -960,12 +947,12 @@ def test_str(self):
960947
fields=[SchemaField("name", "STRING")],
961948
foreign_type_info="TestInfo",
962949
),
963-
"Schema([SchemaField('name', 'STRING', 'NULLABLE', None, None, (), None)], 'TestInfo')",
950+
"Schema([{'name': 'name', 'mode': 'NULLABLE', 'type': 'STRING'}], 'TestInfo')",
964951
id="repr with foreign type info",
965952
),
966953
pytest.param(
967954
Schema(fields=[SchemaField("name", "STRING")]),
968-
"Schema([SchemaField('name', 'STRING', 'NULLABLE', None, None, (), None)], None)",
955+
"Schema([{'name': 'name', 'mode': 'NULLABLE', 'type': 'STRING'}], None)",
969956
id="repr without foreign type info",
970957
),
971958
],
@@ -977,8 +964,7 @@ def test_schema_iteration(self):
977964
schema = Schema(
978965
fields=[SchemaField("name", "STRING"), SchemaField("age", "INTEGER")]
979966
)
980-
981-
field_names = [field.name for field in schema]
967+
field_names = [field["name"] for field in schema]
982968
assert field_names == ["name", "age"]
983969

984970
def test_schema_object_mutability(self): # Tests __setitem__ and __delitem__
@@ -1021,19 +1007,15 @@ def test_schema_extend(self):
10211007
foreign_type_info="TestInfo",
10221008
),
10231009
{
1024-
"_fields": [
1025-
SchemaField("name", "STRING", "NULLABLE", None, None, (), None)
1026-
],
1010+
"fields": [{"name": "name", "mode": "NULLABLE", "type": "STRING"}],
10271011
"foreignTypeInfo": "TestInfo",
10281012
},
10291013
id="repr with foreign type info",
10301014
),
10311015
pytest.param(
10321016
Schema(fields=[SchemaField("name", "STRING")]),
10331017
{
1034-
"_fields": [
1035-
SchemaField("name", "STRING", "NULLABLE", None, None, (), None)
1036-
],
1018+
"fields": [{"name": "name", "mode": "NULLABLE", "type": "STRING"}],
10371019
"foreignTypeInfo": None,
10381020
},
10391021
id="repr without foreign type info",
@@ -1048,25 +1030,35 @@ def test_to_api_repr(self, schema, expected_api_repr):
10481030
[
10491031
pytest.param(
10501032
{
1051-
"_fields": [
1033+
"fields": [
10521034
SchemaField("name", "STRING", "NULLABLE", None, None, (), None)
10531035
],
10541036
"foreignTypeInfo": "TestInfo",
10551037
},
10561038
Schema(
1057-
fields=[SchemaField("name", "STRING")],
1039+
fields=[
1040+
SchemaField(
1041+
"name", "STRING", description=None, policy_tags=None
1042+
)
1043+
],
10581044
foreign_type_info="TestInfo",
10591045
),
10601046
id="repr with foreign type info",
10611047
),
10621048
pytest.param(
10631049
{
1064-
"_fields": [
1050+
"fields": [
10651051
SchemaField("name", "STRING", "NULLABLE", None, None, (), None)
10661052
],
10671053
"foreignTypeInfo": None,
10681054
},
1069-
Schema(fields=[SchemaField("name", "STRING")]),
1055+
Schema(
1056+
fields=[
1057+
SchemaField(
1058+
"name", "STRING", description=None, policy_tags=None
1059+
)
1060+
]
1061+
),
10701062
id="repr without foreign type info",
10711063
),
10721064
],
@@ -1078,13 +1070,11 @@ def test_from_api_repr(self, api_repr, expected):
10781070
THEN it will have the same representation a Schema object created
10791071
directly and displayed as a dict.
10801072
"""
1073+
10811074
result = Schema.from_api_repr(api_repr)
10821075
assert result.to_api_repr() == expected.to_api_repr()
10831076

10841077

1085-
# END PYTEST BASED SCHEMA TESTS ====================
1086-
1087-
10881078
class TestPolicyTags(unittest.TestCase):
10891079
@staticmethod
10901080
def _get_target_class():

0 commit comments

Comments
 (0)