@@ -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