11import datetime
2+ from decimal import Decimal
23from unittest import TestCase
34
45import pytest
89 BigInt ,
910 Date ,
1011 Integer ,
12+ Numeric ,
1113 Time ,
1214 Timestamp ,
1315 Timestamptz ,
@@ -411,21 +413,23 @@ def test_remove_sqlite(self):
411413
412414
413415###############################################################################
414- # Date and time arrays
416+ # Date, time and decimal arrays
415417
416418
417- class DateTimeArrayTable (Table ):
419+ class DateTimeDecimalArrayTable (Table ):
418420 date = Array (Date ())
419421 time = Array (Time ())
420422 timestamp = Array (Timestamp ())
421423 timestamptz = Array (Timestamptz ())
424+ decimal = Array (Numeric (digits = (5 , 2 )))
422425 date_nullable = Array (Date (), null = True )
423426 time_nullable = Array (Time (), null = True )
424427 timestamp_nullable = Array (Timestamp (), null = True )
425428 timestamptz_nullable = Array (Timestamptz (), null = True )
429+ decimal_nullable = Array (Numeric (digits = (5 , 2 )), null = True )
426430
427431
428- class TestDateTimeArray (TestCase ):
432+ class TestDateTimeDecimalArray (TestCase ):
429433 """
430434 Make sure that data can be stored and retrieved when using arrays of
431435 date / time / timestamp.
@@ -436,10 +440,10 @@ class TestDateTimeArray(TestCase):
436440 """
437441
438442 def setUp (self ):
439- DateTimeArrayTable .create_table ().run_sync ()
443+ DateTimeDecimalArrayTable .create_table ().run_sync ()
440444
441445 def tearDown (self ):
442- DateTimeArrayTable .alter ().drop_table ().run_sync ()
446+ DateTimeDecimalArrayTable .alter ().drop_table ().run_sync ()
443447
444448 @engines_only ("postgres" , "sqlite" )
445449 def test_storage (self ):
@@ -456,32 +460,37 @@ def test_storage(self):
456460 minute = 0 ,
457461 tzinfo = datetime .timezone .utc ,
458462 )
463+ test_decimal = Decimal ("50.0" )
459464
460- DateTimeArrayTable (
465+ DateTimeDecimalArrayTable (
461466 {
462- DateTimeArrayTable .date : [test_date ],
463- DateTimeArrayTable .time : [test_time ],
464- DateTimeArrayTable .timestamp : [test_timestamp ],
465- DateTimeArrayTable .timestamptz : [test_timestamptz ],
466- DateTimeArrayTable .date_nullable : None ,
467- DateTimeArrayTable .time_nullable : None ,
468- DateTimeArrayTable .timestamp_nullable : None ,
469- DateTimeArrayTable .timestamptz_nullable : None ,
467+ DateTimeDecimalArrayTable .date : [test_date ],
468+ DateTimeDecimalArrayTable .time : [test_time ],
469+ DateTimeDecimalArrayTable .timestamp : [test_timestamp ],
470+ DateTimeDecimalArrayTable .timestamptz : [test_timestamptz ],
471+ DateTimeDecimalArrayTable .decimal : [test_decimal ],
472+ DateTimeDecimalArrayTable .date_nullable : None ,
473+ DateTimeDecimalArrayTable .time_nullable : None ,
474+ DateTimeDecimalArrayTable .timestamp_nullable : None ,
475+ DateTimeDecimalArrayTable .timestamptz_nullable : None ,
476+ DateTimeDecimalArrayTable .decimal_nullable : None ,
470477 }
471478 ).save ().run_sync ()
472479
473- row = DateTimeArrayTable .objects ().first ().run_sync ()
480+ row = DateTimeDecimalArrayTable .objects ().first ().run_sync ()
474481 assert row is not None
475482
476483 self .assertListEqual (row .date , [test_date ])
477484 self .assertListEqual (row .time , [test_time ])
478485 self .assertListEqual (row .timestamp , [test_timestamp ])
479486 self .assertListEqual (row .timestamptz , [test_timestamptz ])
487+ self .assertListEqual (row .decimal , [test_decimal ])
480488
481489 self .assertIsNone (row .date_nullable )
482490 self .assertIsNone (row .time_nullable )
483491 self .assertIsNone (row .timestamp_nullable )
484492 self .assertIsNone (row .timestamptz_nullable )
493+ self .assertIsNone (row .decimal_nullable )
485494
486495
487496###############################################################################
0 commit comments