Skip to content

Commit 77417d3

Browse files
committed
test: add system test + fix conformance 1.3 test
1 parent c40f02c commit 77417d3

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

google/cloud/sqlalchemy_spanner/sqlalchemy_spanner.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,9 @@ def get_column_specification(self, column, **kwargs):
410410
colspec += " NOT NULL"
411411

412412
has_identity = (
413-
column.identity is not None and self.dialect.supports_identity_columns
413+
hasattr(column, "identity")
414+
and column.identity is not None
415+
and self.dialect.supports_identity_columns
414416
)
415417
default = self.get_column_default_string(column)
416418

test/system/test_basics.py

+24-3
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@
2323
Index,
2424
MetaData,
2525
Boolean,
26-
BIGINT,
26+
BIGINT, select,
2727
)
2828
from sqlalchemy.orm import Session, DeclarativeBase, Mapped, mapped_column
2929
from sqlalchemy.types import REAL
30-
from sqlalchemy.testing import eq_
30+
from sqlalchemy.testing import eq_, is_true
3131
from sqlalchemy.testing.plugin.plugin_base import fixtures
3232

3333

@@ -50,6 +50,12 @@ def define_tables(cls, metadata):
5050
numbers.c.prime.desc(),
5151
spanner_storing=[numbers.c.alternative_name],
5252
)
53+
Table(
54+
"users",
55+
metadata,
56+
Column("ID", Integer, primary_key=True),
57+
Column("name", String(20)),
58+
)
5359

5460
def test_hello_world(self, connection):
5561
greeting = connection.execute(text("select 'Hello World'"))
@@ -69,7 +75,7 @@ def test_reflect(self, connection):
6975
engine = connection.engine
7076
meta: MetaData = MetaData()
7177
meta.reflect(bind=engine)
72-
eq_(1, len(meta.tables))
78+
eq_(2, len(meta.tables))
7379
table = meta.tables["numbers"]
7480
eq_(5, len(table.columns))
7581
eq_("number", table.columns[0].name)
@@ -127,10 +133,25 @@ class Number(Base):
127133
prime: Mapped[bool] = mapped_column(Boolean)
128134
ln: Mapped[float] = mapped_column(REAL)
129135

136+
class User(Base):
137+
__tablename__ = "users"
138+
ID: Mapped[int] = mapped_column(primary_key=True)
139+
name: Mapped[str] = mapped_column(String(20))
140+
130141
engine = connection.engine
131142
with Session(engine) as session:
132143
number = Number(
133144
number=1, name="One", alternative_name="Uno", prime=False, ln=0.0
134145
)
135146
session.add(number)
136147
session.commit()
148+
149+
with Session(engine) as session:
150+
user = User(name="Test")
151+
session.add(user)
152+
session.commit()
153+
154+
statement = select(User).filter_by(name="Test")
155+
users = session.scalars(statement).all()
156+
eq_(1, len(users))
157+
is_true(users[0].ID > 0)

0 commit comments

Comments
 (0)