fix: add date type coercion logic for CSV importer
This commit is contained in:
parent
30f119ffc7
commit
dec145ada5
2 changed files with 32 additions and 1 deletions
|
|
@ -271,6 +271,9 @@ class Example(Base):
|
|||
flag = sa.Column(sa.Boolean(), nullable=False)
|
||||
optional_flag = sa.Column(sa.Boolean(), nullable=True)
|
||||
|
||||
date = sa.Column(sa.Date(), nullable=False)
|
||||
optional_date = sa.Column(sa.Date(), nullable=True)
|
||||
|
||||
dt = sa.Column(sa.DateTime(), nullable=False)
|
||||
optional_dt = sa.Column(sa.DateTime(), nullable=True)
|
||||
|
||||
|
|
@ -285,7 +288,7 @@ class TestMakeCoercers(TestCase):
|
|||
|
||||
def test_basic(self):
|
||||
coercers = mod.make_coercers(Example)
|
||||
self.assertEqual(len(coercers), 12)
|
||||
self.assertEqual(len(coercers), 14)
|
||||
|
||||
self.assertIs(coercers["id"], mod.coerce_integer)
|
||||
self.assertIs(coercers["optional_id"], mod.coerce_integer)
|
||||
|
|
@ -293,6 +296,8 @@ class TestMakeCoercers(TestCase):
|
|||
self.assertIs(coercers["optional_name"], mod.coerce_string_nullable)
|
||||
self.assertIs(coercers["flag"], mod.coerce_boolean)
|
||||
self.assertIs(coercers["optional_flag"], mod.coerce_boolean_nullable)
|
||||
self.assertIs(coercers["date"], mod.coerce_date)
|
||||
self.assertIs(coercers["optional_date"], mod.coerce_date)
|
||||
self.assertIs(coercers["dt"], mod.coerce_datetime)
|
||||
self.assertIs(coercers["optional_dt"], mod.coerce_datetime)
|
||||
self.assertIs(coercers["dec"], mod.coerce_decimal)
|
||||
|
|
@ -322,6 +327,12 @@ class TestMakeCoercer(TestCase):
|
|||
func = mod.make_coercer(Example.optional_flag)
|
||||
self.assertIs(func, mod.coerce_boolean_nullable)
|
||||
|
||||
func = mod.make_coercer(Example.date)
|
||||
self.assertIs(func, mod.coerce_date)
|
||||
|
||||
func = mod.make_coercer(Example.optional_date)
|
||||
self.assertIs(func, mod.coerce_date)
|
||||
|
||||
func = mod.make_coercer(Example.dt)
|
||||
self.assertIs(func, mod.coerce_datetime)
|
||||
|
||||
|
|
@ -365,6 +376,15 @@ class TestCoercers(TestCase):
|
|||
|
||||
self.assertIsNone(mod.coerce_boolean_nullable(""))
|
||||
|
||||
def test_coerce_date(self):
|
||||
self.assertIsNone(mod.coerce_date(""))
|
||||
|
||||
value = mod.coerce_date("2025-10-19")
|
||||
self.assertIsInstance(value, datetime.date)
|
||||
self.assertEqual(value, datetime.date(2025, 10, 19))
|
||||
|
||||
self.assertRaises(ValueError, mod.coerce_date, "XXX")
|
||||
|
||||
def test_coerce_datetime(self):
|
||||
self.assertIsNone(mod.coerce_datetime(""))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue