Skip to content

Commit f0cfa32

Browse files
committed
updates tests
1 parent a29a3eb commit f0cfa32

File tree

2 files changed

+52
-63
lines changed

2 files changed

+52
-63
lines changed

google/cloud/bigquery/table.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3574,10 +3574,9 @@ def __init__(
35743574
def __eq__(self, other):
35753575
if not isinstance(other, TableConstraints) and other is not None:
35763576
raise TypeError("The value provided is not a BigQuery TableConstraints.")
3577-
return (
3578-
self.primary_key == (other.primary_key if other.primary_key else None)
3579-
and self.foreign_keys == (other.foreign_keys if other.foreign_keys else None)
3580-
)
3577+
return self.primary_key == (
3578+
other.primary_key if other.primary_key else None
3579+
) and self.foreign_keys == (other.foreign_keys if other.foreign_keys else None)
35813580

35823581
@classmethod
35833582
def from_api_repr(cls, resource: Dict[str, Any]) -> "TableConstraints":

tests/unit/test_table.py

Lines changed: 49 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -6322,81 +6322,71 @@ def test_constructor_explicit_with_none(self):
63226322
self.assertIsNone(table_constraint.primary_key)
63236323
self.assertIsNone(table_constraint.foreign_keys)
63246324

6325-
def test__eq__primary_key_mismatch(self):
6326-
from google.cloud.bigquery.table import (
6327-
PrimaryKey,
6328-
ForeignKey,
6329-
TableReference,
6330-
ColumnReference,
6331-
)
6332-
6333-
foriegn_keys = [
6334-
ForeignKey(
6335-
name="my_fk_id",
6336-
referenced_table=TableReference.from_string(
6337-
"my-project.my-dataset.my-table"
6338-
),
6339-
column_references=[
6340-
ColumnReference(referencing_column="id", referenced_column="id"),
6341-
],
6342-
),
6325+
@pytest.mark.parametrize(
6326+
"self_pk_name,self_fk_name,other_pk_name,other_fk_name,expected_equal",
6327+
[
6328+
(None, None, None, None, True),
6329+
('pkey', None, 'pkey', None, True),
6330+
('pkey', 'fkey', 'pkey', 'fkey', True),
6331+
(None, 'fkey', None, 'fkey', True),
6332+
('pkey', None, 'pkey_no_match', None, False),
6333+
('pkey', 'fkey', 'pkey_no_match', 'fkey_no_match', False),
6334+
(None, 'fkey', None, 'fkey_no_match', False),
6335+
('pkey', 'fkey', 'pkey_no_match', 'fkey', False),
6336+
('pkey', 'fkey', 'pkey', 'fkey_no_match', False),
63436337
]
6344-
6345-
table_constraint = self._make_one(
6346-
primary_key=PrimaryKey(columns=["my_pk_id"]),
6347-
foreign_keys=foriegn_keys,
6348-
)
6349-
other_table_constraint = self._make_one(
6350-
primary_key=PrimaryKey(columns=["my_other_pk_id"]),
6351-
foreign_keys=foriegn_keys,
6352-
)
6353-
6354-
self.assertNotEqual(table_constraint, other_table_constraint)
6355-
6356-
def test__eq__foreign_keys_mismatch(self):
6338+
)
6339+
def test_eq_parametrized(self, self_pk_name, self_fk_name, other_pk_name, other_fk_name, expected_equal):
6340+
# Imports are placed here to ensure they are self-contained for this example.
6341+
# In a real test file, they would likely be at the top of the file.
63576342
from google.cloud.bigquery.table import (
6358-
PrimaryKey,
6343+
ColumnReference,
63596344
ForeignKey,
6345+
PrimaryKey,
63606346
TableReference,
6361-
ColumnReference,
6347+
TableConstraints,
63626348
)
63636349

6364-
primary_key = PrimaryKey(columns=["my_pk_id"])
6350+
# Helper function to create a PrimaryKey object or None
6351+
def _create_primary_key(name):
6352+
if name is None:
6353+
return None
6354+
return PrimaryKey(columns=[name])
63656355

6366-
table_constraint = self._make_one(
6367-
primary_key=primary_key,
6368-
foreign_keys=[
6356+
# Helper function to create a list of ForeignKey objects or None
6357+
def _create_foreign_keys(name):
6358+
if name is None:
6359+
return None
6360+
# Using a generic referenced_table and column_references for simplicity
6361+
# The 'name' parameter ensures different ForeignKey objects for different names
6362+
return [
63696363
ForeignKey(
6370-
name="my_fk_id",
6364+
name=name,
63716365
referenced_table=TableReference.from_string(
6372-
"my-project.my-dataset.my-table"
6366+
f"my-project.my-dataset.{name}_referenced_table"
63736367
),
63746368
column_references=[
63756369
ColumnReference(
6376-
referencing_column="id", referenced_column="id"
6377-
),
6370+
referencing_column=f"{name}_ref_col",
6371+
referenced_column=f"{name}_pk_col",
6372+
)
63786373
],
6379-
),
6380-
],
6374+
)
6375+
]
6376+
6377+
# Create the two TableConstraints instances for comparison
6378+
tc1 = TableConstraints(
6379+
primary_key=_create_primary_key(self_pk_name),
6380+
foreign_keys=_create_foreign_keys(self_fk_name),
63816381
)
6382-
other_table_constraint = self._make_one(
6383-
primary_key=primary_key,
6384-
foreign_keys=[
6385-
ForeignKey(
6386-
name="my_other_fk_id",
6387-
referenced_table=TableReference.from_string(
6388-
"my-project.my-dataset.my-other-table"
6389-
),
6390-
column_references=[
6391-
ColumnReference(
6392-
referencing_column="other_id", referenced_column="other_id"
6393-
),
6394-
],
6395-
),
6396-
],
6382+
tc2 = TableConstraints(
6383+
primary_key=_create_primary_key(other_pk_name),
6384+
foreign_keys=_create_foreign_keys(other_fk_name),
63976385
)
63986386

6399-
self.assertNotEqual(table_constraint, other_table_constraint)
6387+
# Assert the equality based on the expected outcome
6388+
assert (tc1 == tc2) == expected_equal
6389+
64006390

64016391
def test__eq__other_type(self):
64026392
from google.cloud.bigquery.table import (

0 commit comments

Comments
 (0)