def test_delete_on_delete(self, session, session_cls): session1 = session_cls() translator1 = Translator(Translation, session_cls(), 'language1') translator1.bind(session1) session2 = session_cls() translator2 = Translator(Translation, session_cls(), 'language2') translator2.bind(session2) instance = Model(id=1) session.add(instance) session.commit() instance = session1.query(Model).get(1) instance.name = 'name' session1.commit() instance = session2.query(Model).get(1) instance.name = 'name' session2.commit() assert translator1.session.query(Translation).count() == 2 session2.delete(instance) assert translator1.session.query(Translation).count() == 2 session2.commit() translator1.session.rollback() # expire caches assert translator1.session.query(Translation).count() == 0
def test_set_from_to(first, second): instance = Model(name=first) instance.name = second if second is None: assert instance.name is None else: assert isinstance(instance.name, TranslatableString) assert instance.name.pending_value == second
def test_modify_from_to(bound_session, first, second): instance = Model(name=first) bound_session.add(instance) bound_session.commit() instance.name = second bound_session.commit() if second is None: assert instance.name is None else: assert isinstance(instance.name, TranslatableString) assert instance.name.pending_value is None
def test_removing_translations(session, session_cls, first, second): translator = Translator(Translation, session_cls(), 'language') translator.bind(session) instance = Model(name=first) session.add(instance) session.commit() expected_count = 1 if is_translatable_value(first) else 0 assert translator.session.query(Translation).count() == expected_count instance.name = second session.commit() expected_count = 1 if is_translatable_value(second) else 0 assert translator.session.query(Translation).count() == expected_count
def test_values(self, session_cls): session1 = session_cls() translator1 = Translator(Translation, session_cls(), 'language1') translator1.bind(session1) session2 = session_cls() translator2 = Translator(Translation, session_cls(), 'language2') translator2.bind(session2) instance = Model(name='name') session1.add(instance) session1.commit() pk = instance.id loaded = session2.query(Model).get(pk) assert loaded.name is not None instance.name = None session1.commit() session2.rollback() # expire isn't enough to trigger reloading assert loaded.name is None assert translator1.session.query(Translation).count() == 0