62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
# -*- 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")
|
|
self.assertEqual(batch.id_str, "00000042")
|
|
|
|
batch2 = MyBatch()
|
|
self.assertIsNone(batch2.id_str)
|
|
|
|
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)
|