3
0
Fork 0

feat: add basic batch feature, data model and partial handler

hopefully data model is complete enough for now, but handler does not
yet have all methods, e.g. execute()
This commit is contained in:
Lance Edgar 2024-12-13 20:38:00 -06:00
parent 51accc5a93
commit a514d9cfba
9 changed files with 813 additions and 1 deletions

View file

@ -0,0 +1,52 @@
# -*- coding: utf-8; -*-
import uuid as _uuid
from wuttjamaican.testing import DataTestCase
try:
import sqlalchemy as sa
from wuttjamaican.db import model
from wuttjamaican.db.model import batch as mod
except ImportError:
pass
else:
class TestBatchMixin(DataTestCase):
def test_basic(self):
class MyBatch(mod.BatchMixin, model.Base):
__tablename__ = 'testing_mybatch'
model.Base.metadata.create_all(bind=self.session.bind)
metadata = sa.MetaData()
metadata.reflect(self.session.bind)
self.assertIn('testing_mybatch', metadata.tables)
batch = MyBatch(id=42, uuid=_uuid.UUID('0675cdac-ffc9-7690-8000-6023de1c8cfd'))
self.assertEqual(repr(batch), "MyBatch(uuid=UUID('0675cdac-ffc9-7690-8000-6023de1c8cfd'))")
self.assertEqual(str(batch), "00000042")
class TestBatchRowMixin(DataTestCase):
def test_basic(self):
class MyBatch2(mod.BatchMixin, model.Base):
__tablename__ = 'testing_mybatch2'
class MyBatchRow2(mod.BatchRowMixin, model.Base):
__tablename__ = 'testing_mybatch_row2'
__batch_class__ = MyBatch2
model.Base.metadata.create_all(bind=self.session.bind)
metadata = sa.MetaData()
metadata.reflect(self.session.bind)
self.assertIn('testing_mybatch2', metadata.tables)
self.assertIn('testing_mybatch_row2', metadata.tables)
# nb. this gives coverage but doesn't really test much
batch = MyBatch2(id=42, uuid=_uuid.UUID('0675cdac-ffc9-7690-8000-6023de1c8cfd'))
row = MyBatchRow2()
batch.rows.append(row)