|
7 | 7 | import sqlalchemy as sa |
8 | 8 | import ydb |
9 | 9 | from sqlalchemy import Column, Integer, String, Table, Unicode |
| 10 | +from sqlalchemy.orm import declarative_base, sessionmaker |
10 | 11 | from sqlalchemy.testing.fixtures import TablesTest, TestBase, config |
11 | 12 | from ydb._grpc.v4.protos import ydb_common_pb2 |
12 | 13 |
|
@@ -89,6 +90,46 @@ def test_sa_crud_with_add_declare(self): |
89 | 90 | self.test_sa_crud(connection) |
90 | 91 |
|
91 | 92 |
|
| 93 | +class TestDirectories(TablesTest): |
| 94 | + __backend__ = True |
| 95 | + |
| 96 | + def prepare_table(self, engine): |
| 97 | + base = declarative_base() |
| 98 | + class Table(base): |
| 99 | + __tablename__ = 'dir/test' |
| 100 | + id = Column(Integer, primary_key=True) |
| 101 | + text = Column(Unicode) |
| 102 | + base.metadata.create_all(engine) |
| 103 | + session = sessionmaker(bind=engine)() |
| 104 | + session.add(Table(id=2, text="foo")) |
| 105 | + session.commit() |
| 106 | + return base, Table, session |
| 107 | + |
| 108 | + def try_update(self, session, Table): |
| 109 | + row = session.query(Table).first() |
| 110 | + row.text = "bar" |
| 111 | + session.commit() |
| 112 | + return row |
| 113 | + |
| 114 | + def drop_table(self, base, engine): |
| 115 | + base.metadata.drop_all(engine) |
| 116 | + |
| 117 | + def test_directories(self): |
| 118 | + engine_good = sa.create_engine(config.db_url, directories=["dir"]) |
| 119 | + base, Table, session = self.prepare_table(engine_good) |
| 120 | + row = self.try_update(session, Table) |
| 121 | + assert row.id == 2 |
| 122 | + assert row.text == "bar" |
| 123 | + self.drop_table(base, engine_good) |
| 124 | + |
| 125 | + engine_bad = sa.create_engine(config.db_url) |
| 126 | + base, Table, session = self.prepare_table(engine_bad) |
| 127 | + with pytest.raises(Exception) as excinfo: |
| 128 | + self.try_update(session, Table) |
| 129 | + assert "Unknown name: $dir" in str(excinfo.value) |
| 130 | + self.drop_table(base, engine_bad) |
| 131 | + |
| 132 | + |
92 | 133 | class TestSimpleSelect(TablesTest): |
93 | 134 | __backend__ = True |
94 | 135 |
|
|
0 commit comments