Files
@ 08163db8fa7d
Branch filter:
Location: rattail-project/rattail/tests/db/batches/test_util.py - annotation
08163db8fa7d
2.9 KiB
text/x-python
Add `'uid'` and `'username'` to logger adapter context dict.
177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 177478f7d054 |
import datetime
from sqlalchemy import func
from sqlalchemy import MetaData
from ... import DataTestCase
from rattail.db.batches import util
from rattail.db import model
class TestPurgeBatches(DataTestCase):
def setUp(self):
super(TestPurgeBatches, self).setUp()
batch = model.Batch(purge=datetime.date(2014, 1, 1))
batch.add_column('F01')
batch.add_column('F02')
self.session.add(batch)
batch.create_table()
batch = model.Batch(purge=datetime.date(2014, 2, 1))
batch.add_column('F01')
batch.add_column('F02')
self.session.add(batch)
batch.create_table()
batch = model.Batch(purge=datetime.date(2014, 3, 1))
batch.add_column('F01')
batch.add_column('F02')
self.session.add(batch)
batch.create_table()
self.session.commit()
def get_batch_tables_metadata(self):
def batch_tables(name, metadata):
return util.batch_pattern.match(name)
metadata = MetaData(bind=self.engine)
metadata.reflect(only=batch_tables)
return metadata
def test_purging_honors_batch_purge_dates(self):
self.assertEqual(self.session.query(model.Batch).count(), 3)
self.assertEqual(util.purge_batches(effective_date=datetime.date(2014, 1, 15)), 1)
self.assertEqual(self.session.query(model.Batch).count(), 2)
self.assertEqual(self.session.query(func.min(model.Batch.purge)).scalar(), datetime.date(2014, 2, 1))
def test_purging_everything_does_just_that(self):
self.assertEqual(self.session.query(model.Batch).count(), 3)
self.assertEqual(util.purge_batches(purge_everything=True), 3)
self.assertEqual(self.session.query(model.Batch).count(), 0)
# TODO: The next two tests each work if only one is enabled...but if both
# are enabled, one will fail. This needs more investigation, but one
# possible cause is the "corruption" of Base.metadata when Batch.rowclass
# is accessed? In particular it seems *not* to be a SQLite problem, as it
# occurred when using a PostgreSQL engine as well.
# def test_purging_does_not_leave_orphaned_tables(self):
# self.assertEqual(self.session.query(model.Batch).count(), 3)
# self.assertEqual(util.purge_batches(purge_everything=True), 3)
# self.assertEqual(self.session.query(model.Batch).count(), 0)
# metadata = self.get_batch_tables_metadata()
# self.assertEqual(len(metadata.tables), 0)
# def test_purging_does_not_delete_previously_orphaned_tables(self):
# metadata = self.get_batch_tables_metadata()
# self.assertEqual(len(metadata.tables), 3)
# batch = self.session.query(model.Batch).first()
# batch.drop_table()
# self.assertEqual(self.session.query(model.Batch).count(), 3)
# metadata = self.get_batch_tables_metadata()
# self.assertEqual(len(metadata.tables), 2)
|