import unittest from delphi_api.bigtable import BigTableAttribute, IntegerAttribute, ProtoAttribute, TextAttribute from delphi_api.v2.constants import COLUMN_FAMILY_ID from delphi_api.v2.proto.gen.amazon_v2_pb2 import AmazonTrackStreamStats class TestAttributes(unittest.TestCase): def setUp(self) -> None: pass def test_bigtable_attribute(self): inst = BigTableAttribute(column_family=COLUMN_FAMILY_ID, attr_name='isrc') value = 'test' expected = 'test' serialized = inst.serialize(value) self.assertEqual(expected, serialized) self.assertEqual(value, inst.deserialize(serialized)) def test_text_attribute(self): values_expected = [ ('test', b'test'), ('', b''), (123, 123), ] inst = TextAttribute(column_family=COLUMN_FAMILY_ID, attr_name='isrc') for item in values_expected: value, expected = item serialized = inst.serialize(value) self.assertEqual(expected, serialized) self.assertEqual(value, inst.deserialize(serialized)) def test_proto_attribute(self): inst = ProtoAttribute(column_family=COLUMN_FAMILY_ID, attr_name='test', deserialize_class=AmazonTrackStreamStats) value = AmazonTrackStreamStats() value.streams = 123 expected = value.SerializeToString() serialized = inst.serialize(value) self.assertEqual(expected, serialized) self.assertEqual(value, inst.deserialize(serialized)) self.assertEqual(None, inst.deserialize(None)) def test_proto_attribute_empty(self): inst = ProtoAttribute(column_family=COLUMN_FAMILY_ID, attr_name='test', deserialize_class=AmazonTrackStreamStats) value = bytes() expected = value serialized = inst.serialize(value) self.assertEqual(expected, serialized) self.assertEqual(value, inst.deserialize(serialized)) self.assertEqual(None, inst.deserialize(None)) def test_integer_attribute(self): values_expected = [ (-123, b'\xff\xff\xff\x85'), (0, b'\x00\x00\x00\x00'), (123, b'\x00\x00\x00{'), (250, b'\x00\x00\x00\xfa'), ] inst = IntegerAttribute(column_family=COLUMN_FAMILY_ID, attr_name='position') for item in values_expected: value, expected = item serialized = inst.serialize(value) self.assertEqual(expected, serialized) deserialized = inst.deserialize(serialized) self.assertEqual(value, deserialized)