Skip to content

Commit

Permalink
fix: updates tests on getters to resolve coverage issues (#2080)
Browse files Browse the repository at this point in the history
* fix: updates tests on getters to resolve coverage issues

* fix: updates formatting and linting

* Updates tests of getters in test_schema.py

* updates to correct coverage and fix tests

* removes proof of concept code that is no longer needed
  • Loading branch information
chalmerlowe authored Dec 4, 2024
1 parent 48c8cc6 commit 1fcbc09
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 57 deletions.
17 changes: 0 additions & 17 deletions google/cloud/bigquery/_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
"""Shared helper functions for BigQuery API classes."""

import base64
import copy
import datetime
import decimal
import json
Expand Down Expand Up @@ -1038,19 +1037,3 @@ def _isinstance_or_raise(

msg = f"Pass {value} as a '{dtype}'{or_none}. Got {type(value)}."
raise TypeError(msg)


def _from_api_repr(cls, resource: dict):
"""Factory: constructs an instance of the class (cls)
given its API representation.
Args:
resource (Dict[str, Any]):
API representation of the object to be instantiated.
Returns:
An instance of the class initialized with data from 'resource'.
"""
config = cls
config._properties = copy.deepcopy(resource)
return config
25 changes: 2 additions & 23 deletions tests/unit/test__helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import google.api_core
from google.cloud.bigquery._helpers import (
_isinstance_or_raise,
_from_api_repr,
)


Expand Down Expand Up @@ -1695,25 +1694,5 @@ def test__valid_isinstance_or_raise(self, value, dtype, none_allowed, expected):
],
)
def test__invalid_isinstance_or_raise(self, value, dtype, none_allowed, expected):
with expected as e:
result = _isinstance_or_raise(value, dtype, none_allowed=none_allowed)

assert result == e


class _MockClass:
def __init__(self):
self._properties = {}


@pytest.fixture
def mock_class():
return _MockClass


class Test__from_api_repr:
def test_from_api_repr(self, mock_class):
resource = {"foo": "bar", "baz": {"qux": 1}}
config = _from_api_repr(mock_class, resource)
assert config._properties == resource
assert config._properties is not resource
with expected:
_isinstance_or_raise(value, dtype, none_allowed=none_allowed)
14 changes: 6 additions & 8 deletions tests/unit/test_external_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -930,10 +930,8 @@ def test_ctor_initialization(
parameters=parameters,
)

assert instance._properties == {
"defaultStorageLocationUri": default_storage_location_uri,
"parameters": parameters,
}
assert instance.default_storage_location_uri == default_storage_location_uri
assert instance.parameters == parameters

def test_ctor_invalid_input(self):
"""Test ExternalCatalogDatasetOptions constructor with invalid input."""
Expand Down Expand Up @@ -1025,15 +1023,15 @@ def test_ctor_initialization(
storage_descriptor=storage_descriptor,
)

assert instance._properties["connectionId"] == connection_id
assert instance._properties["parameters"] == parameters
assert instance.connection_id == connection_id
assert instance.parameters == parameters
if storage_descriptor is not None:
assert (
instance._properties["storageDescriptor"]
instance.storage_descriptor.to_api_repr()
== storage_descriptor.to_api_repr()
)
else:
assert instance._properties["storageDescriptor"] == storage_descriptor
assert instance.storage_descriptor is None

@pytest.mark.parametrize(
"connection_id, parameters, storage_descriptor",
Expand Down
18 changes: 9 additions & 9 deletions tests/unit/test_schema.py
Original file line number Diff line number Diff line change
Expand Up @@ -1197,7 +1197,7 @@ def _make_one(self, *args, **kw):
def test_ctor_valid_input(self, type_system, expected):
result = self._make_one(type_system=type_system)

assert result._properties["typeSystem"] == expected
assert result.type_system == expected

def test_ctor_invalid_input(self):
with pytest.raises(TypeError) as e:
Expand Down Expand Up @@ -1293,15 +1293,15 @@ def test_ctor_valid_input(
output_format=output_format,
serde_info=serde_info,
)
assert storage_descriptor._properties["inputFormat"] == input_format
assert storage_descriptor._properties["locationUri"] == location_uri
assert storage_descriptor._properties["outputFormat"] == output_format
assert storage_descriptor.input_format == input_format
assert storage_descriptor.location_uri == location_uri
assert storage_descriptor.output_format == output_format
if serde_info is not None:
assert (
storage_descriptor._properties["serDeInfo"] == serde_info.to_api_repr()
storage_descriptor.serde_info.to_api_repr() == serde_info.to_api_repr()
)
else:
assert storage_descriptor._properties["serDeInfo"] == serde_info
assert storage_descriptor.serde_info is None

@pytest.mark.parametrize(
"input_format,location_uri,output_format,serde_info",
Expand Down Expand Up @@ -1397,9 +1397,9 @@ def test_ctor_valid_input(self, serialization_library, name, parameters):
name=name,
parameters=parameters,
)
assert serde_info._properties["serializationLibrary"] == serialization_library
assert serde_info._properties["name"] == name
assert serde_info._properties["parameters"] == parameters
assert serde_info.serialization_library == serialization_library
assert serde_info.name == name
assert serde_info.parameters == parameters

@pytest.mark.parametrize(
"serialization_library,name,parameters",
Expand Down

0 comments on commit 1fcbc09

Please sign in to comment.