def test_clock_tick_editing(self, session):
clock_table = models.SimpleConcreteChildTemporalTable \
.temporal_options.clock_table
t = models.SimpleConcreteChildTemporalTable(
prop_a=1,
prop_b='foo',
prop_c=datetime.datetime(2016, 5, 11, 1, 2, 3,
tzinfo=datetime.timezone.utc),
prop_d={'foo': 'old value'},
prop_e=psql_extras.DateRange(datetime.date(2016, 1, 1),
datetime.date(2016, 1, 10)),
prop_f=['old', 'stuff']
)
session.add(t)
session.commit()
with t.clock_tick():
t.prop_a = 2
t.prop_b = 'bar'
t.prop_c = datetime.datetime.now(tz=datetime.timezone.utc)
t.prop_d['foo'] = 'new value'
t.prop_e = psql_extras.DateRange(datetime.date(2016, 2, 1),
datetime.date(2016, 2, 10))
t.prop_f = ['new', 'stuff']
session.commit()
t = session.query(models.SimpleConcreteChildTemporalTable).first()
clock_query = session.query(clock_table)
assert clock_query.count() == 2
create_clock = clock_query.first()
update_clock = clock_query.order_by(
clock_table.timestamp.desc()).first()
assert create_clock.timestamp == t.date_created
assert update_clock.timestamp == t.date_modified
assert t.vclock == 2
assert t.clock.count() == 2
clock = clock_query.order_by(
models.SimpleConcreteChildTemporalTable
.temporal_options.clock_table.tick.desc()
).first()
for history_table in (
models.SimpleConcreteChildTemporalTable
.temporal_options.history_tables.values()):
clock_query = session.query(history_table).count()
assert clock_query == 2
history = session.query(history_table) \
.order_by(history_table.vclock.desc()).first()
assert clock.tick in history.vclock
test_concrete_base.py 文件源码
python
阅读 17
收藏 0
点赞 0
评论 0
评论列表
文章目录