test_concrete_base.py 文件源码

python
阅读 17 收藏 0 点赞 0 评论 0

项目:temporal-sqlalchemy 作者: CloverHealth 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号