@@ -5401,6 +5401,174 @@ def test_set_expiration_w_none(self):
54015401 assert time_partitioning ._properties ["expirationMs" ] is None
54025402
54035403
5404+ class TestPrimaryKey (unittest .TestCase ):
5405+ @staticmethod
5406+ def _get_target_class ():
5407+ from google .cloud .bigquery .table import PrimaryKey
5408+
5409+ return PrimaryKey
5410+
5411+ @classmethod
5412+ def _make_one (cls , * args , ** kwargs ):
5413+ return cls ._get_target_class ()(* args , ** kwargs )
5414+
5415+ def test_constructor_explicit (self ):
5416+ columns = ["id" , "product_id" ]
5417+ primary_key = self ._make_one (columns )
5418+
5419+ self .assertEqual (primary_key .columns , columns )
5420+
5421+ def test__eq__columns_mismatch (self ):
5422+ primary_key = self ._make_one (columns = ["id" , "product_id" ])
5423+ other_primary_key = self ._make_one (columns = ["id" ])
5424+
5425+ self .assertNotEqual (primary_key , other_primary_key )
5426+
5427+ def test__eq__other_type (self ):
5428+ primary_key = self ._make_one (columns = ["id" , "product_id" ])
5429+
5430+ self .assertNotEqual (primary_key , object ())
5431+
5432+
5433+ class TestColumnReference (unittest .TestCase ):
5434+ @staticmethod
5435+ def _get_target_class ():
5436+ from google .cloud .bigquery .table import ColumnReference
5437+
5438+ return ColumnReference
5439+
5440+ @classmethod
5441+ def _make_one (cls , * args , ** kwargs ):
5442+ return cls ._get_target_class ()(* args , ** kwargs )
5443+
5444+ def test_constructor_explicit (self ):
5445+ referencing_column = "product_id"
5446+ referenced_column = "id"
5447+ column_reference = self ._make_one (referencing_column , referenced_column )
5448+
5449+ self .assertEqual (column_reference .referencing_column , referencing_column )
5450+ self .assertEqual (column_reference .referenced_column , referenced_column )
5451+
5452+ def test__eq__referencing_column_mismatch (self ):
5453+ column_reference = self ._make_one (
5454+ referencing_column = "product_id" ,
5455+ referenced_column = "id" ,
5456+ )
5457+ other_column_reference = self ._make_one (
5458+ referencing_column = "item_id" ,
5459+ referenced_column = "id" ,
5460+ )
5461+
5462+ self .assertNotEqual (column_reference , other_column_reference )
5463+
5464+ def test__eq__referenced_column_mismatch (self ):
5465+ column_reference = self ._make_one (
5466+ referencing_column = "product_id" ,
5467+ referenced_column = "id" ,
5468+ )
5469+ other_column_reference = self ._make_one (
5470+ referencing_column = "product_id" ,
5471+ referenced_column = "id_1" ,
5472+ )
5473+
5474+ self .assertNotEqual (column_reference , other_column_reference )
5475+
5476+ def test__eq__other_type (self ):
5477+ column_reference = self ._make_one (
5478+ referencing_column = "product_id" ,
5479+ referenced_column = "id" ,
5480+ )
5481+
5482+ self .assertNotEqual (column_reference , object ())
5483+
5484+
5485+ class TestForeignKey (unittest .TestCase ):
5486+ @staticmethod
5487+ def _get_target_class ():
5488+ from google .cloud .bigquery .table import ForeignKey
5489+
5490+ return ForeignKey
5491+
5492+ @classmethod
5493+ def _make_one (cls , * args , ** kwargs ):
5494+ return cls ._get_target_class ()(* args , ** kwargs )
5495+
5496+ def test_constructor_explicit (self ):
5497+ name = "my_fk"
5498+ referenced_table = TableReference .from_string ("my-project.mydataset.mytable" )
5499+ column_references = []
5500+ foreign_key = self ._make_one (name , referenced_table , column_references )
5501+
5502+ self .assertEqual (foreign_key .name , name )
5503+ self .assertEqual (foreign_key .referenced_table , referenced_table )
5504+ self .assertEqual (foreign_key .column_references , column_references )
5505+
5506+ def test__eq__name_mismatch (self ):
5507+ referenced_table = TableReference .from_string ("my-project.mydataset.mytable" )
5508+ column_references = []
5509+ foreign_key = self ._make_one (
5510+ name = "my_fk" ,
5511+ referenced_table = referenced_table ,
5512+ column_references = column_references ,
5513+ )
5514+ other_foreign_key = self ._make_one (
5515+ name = "my_other_fk" ,
5516+ referenced_table = referenced_table ,
5517+ column_references = column_references ,
5518+ )
5519+
5520+ self .assertNotEqual (foreign_key , other_foreign_key )
5521+
5522+ def test__eq__referenced_table_mismatch (self ):
5523+ name = "my_fk"
5524+ column_references = []
5525+ foreign_key = self ._make_one (
5526+ name = name ,
5527+ referenced_table = TableReference .from_string ("my-project.mydataset.mytable" ),
5528+ column_references = column_references ,
5529+ )
5530+ other_foreign_key = self ._make_one (
5531+ name = name ,
5532+ referenced_table = TableReference .from_string (
5533+ "my-project.mydataset.my-other-table"
5534+ ),
5535+ column_references = column_references ,
5536+ )
5537+
5538+ self .assertNotEqual (foreign_key , other_foreign_key )
5539+
5540+ def test__eq__column_references_mismatch (self ):
5541+ from google .cloud .bigquery .table import ColumnReference
5542+
5543+ name = "my_fk"
5544+ referenced_table = TableReference .from_string ("my-project.mydataset.mytable" )
5545+ foreign_key = self ._make_one (
5546+ name = name ,
5547+ referenced_table = referenced_table ,
5548+ column_references = [],
5549+ )
5550+ other_foreign_key = self ._make_one (
5551+ name = name ,
5552+ referenced_table = referenced_table ,
5553+ column_references = [
5554+ ColumnReference (
5555+ referencing_column = "product_id" , referenced_column = "id"
5556+ ),
5557+ ],
5558+ )
5559+
5560+ self .assertNotEqual (foreign_key , other_foreign_key )
5561+
5562+ def test__eq__other_type (self ):
5563+ foreign_key = self ._make_one (
5564+ name = "my_fk" ,
5565+ referenced_table = TableReference .from_string ("my-project.mydataset.mytable" ),
5566+ column_references = [],
5567+ )
5568+
5569+ self .assertNotEqual (foreign_key , object ())
5570+
5571+
54045572class TestTableConstraint (unittest .TestCase ):
54055573 @staticmethod
54065574 def _get_target_class ():
0 commit comments