40 lines
960 B
Python
40 lines
960 B
Python
import sqlalchemy as sa
|
|
from tests import TestCase
|
|
from sqlalchemy_utils import UUIDType
|
|
import uuid
|
|
|
|
|
|
class TestUUIDType(TestCase):
|
|
def create_models(self):
|
|
class User(self.Base):
|
|
__tablename__ = 'user'
|
|
id = sa.Column(UUIDType, default=uuid.uuid4, primary_key=True)
|
|
|
|
def __repr__(self):
|
|
return 'User(%r)' % self.id
|
|
|
|
self.User = User
|
|
|
|
def test_commit(self):
|
|
obj = self.User()
|
|
obj.id = uuid.uuid4().hex
|
|
|
|
self.session.add(obj)
|
|
self.session.commit()
|
|
|
|
u = self.session.query(self.User).one()
|
|
|
|
assert u.id == obj.id
|
|
|
|
def test_coerce(self):
|
|
obj = self.User()
|
|
obj.id = identifier = uuid.uuid4().hex
|
|
|
|
assert isinstance(obj.id, uuid.UUID)
|
|
assert obj.id.hex == identifier
|
|
|
|
obj.id = identifier = uuid.uuid4().bytes
|
|
|
|
assert isinstance(obj.id, uuid.UUID)
|
|
assert obj.id.bytes == identifier
|