11import datetime
22import decimal
3+ import uuid
34from enum import Enum
45
56import databases
@@ -30,6 +31,7 @@ class Example(orm.Model):
3031 __database__ = database
3132
3233 id = orm .Integer (primary_key = True )
34+ uuid = orm .UUID (allow_null = True )
3335 huge_number = orm .BigInteger (default = 9223372036854775807 )
3436 created = orm .DateTime (default = datetime .datetime .now )
3537 created_day = orm .Date (default = datetime .date .today )
@@ -43,7 +45,13 @@ class Example(orm.Model):
4345
4446@pytest .fixture (autouse = True , scope = "module" )
4547def create_test_database ():
46- engine = sqlalchemy .create_engine (DATABASE_URL )
48+ database_url = databases .DatabaseURL (DATABASE_URL )
49+ if database_url .scheme == "mysql" :
50+ url = str (database_url .replace (driver = "pymysql" ))
51+ else :
52+ url = str (database_url )
53+
54+ engine = sqlalchemy .create_engine (url )
4755 metadata .create_all (engine )
4856 yield
4957 metadata .drop_all (engine )
@@ -62,15 +70,19 @@ async def test_model_crud():
6270 assert example .price is None
6371 assert example .data == {}
6472 assert example .status == StatusEnum .DRAFT
73+ assert example .uuid is None
6574
6675 await example .update (
6776 data = {"foo" : 123 },
6877 value = 123.456 ,
6978 status = StatusEnum .RELEASED ,
7079 price = decimal .Decimal ("999.99" ),
80+ uuid = uuid .UUID ("01175cde-c18f-4a13-a492-21bd9e1cb01b" ),
7181 )
82+
7283 example = await Example .objects .get ()
7384 assert example .value == 123.456
7485 assert example .data == {"foo" : 123 }
7586 assert example .status == StatusEnum .RELEASED
7687 assert example .price == decimal .Decimal ("999.99" )
88+ assert example .uuid == uuid .UUID ("01175cde-c18f-4a13-a492-21bd9e1cb01b" )
0 commit comments