添加注册登录功能
This commit is contained in:
@@ -14,6 +14,7 @@ import sqlalchemy as sa
|
||||
from .. import config
|
||||
from .. import engines
|
||||
from .. import eq_
|
||||
from .. import eq_regex
|
||||
from .. import expect_raises
|
||||
from .. import expect_raises_message
|
||||
from .. import expect_warnings
|
||||
@@ -23,6 +24,8 @@ from ..provision import get_temp_table_name
|
||||
from ..provision import temp_table_keyword_args
|
||||
from ..schema import Column
|
||||
from ..schema import Table
|
||||
from ... import Boolean
|
||||
from ... import DateTime
|
||||
from ... import event
|
||||
from ... import ForeignKey
|
||||
from ... import func
|
||||
@@ -220,6 +223,7 @@ class HasTableTest(OneConnectionTablesTest):
|
||||
|
||||
class HasIndexTest(fixtures.TablesTest):
|
||||
__backend__ = True
|
||||
__requires__ = ("index_reflection",)
|
||||
|
||||
@classmethod
|
||||
def define_tables(cls, metadata):
|
||||
@@ -294,25 +298,36 @@ class HasIndexTest(fixtures.TablesTest):
|
||||
)
|
||||
|
||||
|
||||
class BizarroCharacterFKResolutionTest(fixtures.TestBase):
|
||||
"""tests for #10275"""
|
||||
class BizarroCharacterTest(fixtures.TestBase):
|
||||
|
||||
__backend__ = True
|
||||
|
||||
@testing.combinations(
|
||||
("id",), ("(3)",), ("col%p",), ("[brack]",), argnames="columnname"
|
||||
)
|
||||
def column_names():
|
||||
return testing.combinations(
|
||||
("plainname",),
|
||||
("(3)",),
|
||||
("col%p",),
|
||||
("[brack]",),
|
||||
argnames="columnname",
|
||||
)
|
||||
|
||||
def table_names():
|
||||
return testing.combinations(
|
||||
("plain",),
|
||||
("(2)",),
|
||||
("per % cent",),
|
||||
("[brackets]",),
|
||||
argnames="tablename",
|
||||
)
|
||||
|
||||
@testing.variation("use_composite", [True, False])
|
||||
@testing.combinations(
|
||||
("plain",),
|
||||
("(2)",),
|
||||
("per % cent",),
|
||||
("[brackets]",),
|
||||
argnames="tablename",
|
||||
)
|
||||
@column_names()
|
||||
@table_names()
|
||||
@testing.requires.foreign_key_constraint_reflection
|
||||
def test_fk_ref(
|
||||
self, connection, metadata, use_composite, tablename, columnname
|
||||
):
|
||||
"""tests for #10275"""
|
||||
tt = Table(
|
||||
tablename,
|
||||
metadata,
|
||||
@@ -352,6 +367,77 @@ class BizarroCharacterFKResolutionTest(fixtures.TestBase):
|
||||
if use_composite:
|
||||
assert o2.c.ref2.references(t1.c[1])
|
||||
|
||||
@column_names()
|
||||
@table_names()
|
||||
@testing.requires.identity_columns
|
||||
def test_reflect_identity(
|
||||
self, tablename, columnname, connection, metadata
|
||||
):
|
||||
Table(
|
||||
tablename,
|
||||
metadata,
|
||||
Column(columnname, Integer, Identity(), primary_key=True),
|
||||
)
|
||||
metadata.create_all(connection)
|
||||
insp = inspect(connection)
|
||||
|
||||
eq_(insp.get_columns(tablename)[0]["identity"]["start"], 1)
|
||||
|
||||
@column_names()
|
||||
@table_names()
|
||||
@testing.requires.comment_reflection
|
||||
def test_reflect_comments(
|
||||
self, tablename, columnname, connection, metadata
|
||||
):
|
||||
Table(
|
||||
tablename,
|
||||
metadata,
|
||||
Column("id", Integer, primary_key=True),
|
||||
Column(columnname, Integer, comment="some comment"),
|
||||
)
|
||||
metadata.create_all(connection)
|
||||
insp = inspect(connection)
|
||||
|
||||
eq_(insp.get_columns(tablename)[1]["comment"], "some comment")
|
||||
|
||||
|
||||
class TempTableElementsTest(fixtures.TestBase):
|
||||
|
||||
__backend__ = True
|
||||
|
||||
__requires__ = ("temp_table_reflection",)
|
||||
|
||||
@testing.fixture
|
||||
def tablename(self):
|
||||
return get_temp_table_name(
|
||||
config, config.db, f"ident_tmp_{config.ident}"
|
||||
)
|
||||
|
||||
@testing.requires.identity_columns
|
||||
def test_reflect_identity(self, tablename, connection, metadata):
|
||||
Table(
|
||||
tablename,
|
||||
metadata,
|
||||
Column("id", Integer, Identity(), primary_key=True),
|
||||
)
|
||||
metadata.create_all(connection)
|
||||
insp = inspect(connection)
|
||||
|
||||
eq_(insp.get_columns(tablename)[0]["identity"]["start"], 1)
|
||||
|
||||
@testing.requires.temp_table_comment_reflection
|
||||
def test_reflect_comments(self, tablename, connection, metadata):
|
||||
Table(
|
||||
tablename,
|
||||
metadata,
|
||||
Column("id", Integer, primary_key=True),
|
||||
Column("foobar", Integer, comment="some comment"),
|
||||
)
|
||||
metadata.create_all(connection)
|
||||
insp = inspect(connection)
|
||||
|
||||
eq_(insp.get_columns(tablename)[1]["comment"], "some comment")
|
||||
|
||||
|
||||
class QuotedNameArgumentTest(fixtures.TablesTest):
|
||||
run_create_tables = "once"
|
||||
@@ -455,7 +541,7 @@ class QuotedNameArgumentTest(fixtures.TablesTest):
|
||||
is_true(isinstance(res, dict))
|
||||
else:
|
||||
with expect_raises(NotImplementedError):
|
||||
res = insp.get_table_options(name)
|
||||
insp.get_table_options(name)
|
||||
|
||||
@quote_fixtures
|
||||
@testing.requires.view_column_reflection
|
||||
@@ -474,11 +560,13 @@ class QuotedNameArgumentTest(fixtures.TablesTest):
|
||||
assert insp.get_pk_constraint(name)
|
||||
|
||||
@quote_fixtures
|
||||
@testing.requires.foreign_key_constraint_reflection
|
||||
def test_get_foreign_keys(self, name):
|
||||
insp = inspect(config.db)
|
||||
assert insp.get_foreign_keys(name)
|
||||
|
||||
@quote_fixtures
|
||||
@testing.requires.index_reflection
|
||||
def test_get_indexes(self, name):
|
||||
insp = inspect(config.db)
|
||||
assert insp.get_indexes(name)
|
||||
@@ -1947,6 +2035,8 @@ class ComponentReflectionTest(ComparesTables, OneConnectionTablesTest):
|
||||
if dupe:
|
||||
names_that_duplicate_index.add(dupe)
|
||||
eq_(refl.pop("comment", None), None)
|
||||
# ignore dialect_options
|
||||
refl.pop("dialect_options", None)
|
||||
eq_(orig, refl)
|
||||
|
||||
reflected_metadata = MetaData()
|
||||
@@ -2038,7 +2128,7 @@ class ComponentReflectionTest(ComparesTables, OneConnectionTablesTest):
|
||||
is_true(isinstance(res, dict))
|
||||
else:
|
||||
with expect_raises(NotImplementedError):
|
||||
res = insp.get_table_options("users", schema=schema)
|
||||
insp.get_table_options("users", schema=schema)
|
||||
|
||||
@testing.combinations((True, testing.requires.schemas), False)
|
||||
def test_multi_get_table_options(self, use_schema):
|
||||
@@ -2054,7 +2144,7 @@ class ComponentReflectionTest(ComparesTables, OneConnectionTablesTest):
|
||||
eq_(res, exp)
|
||||
else:
|
||||
with expect_raises(NotImplementedError):
|
||||
res = insp.get_multi_table_options()
|
||||
insp.get_multi_table_options()
|
||||
|
||||
@testing.fixture
|
||||
def get_multi_exp(self, connection):
|
||||
@@ -2762,12 +2852,25 @@ class ComponentReflectionTestExtra(ComparesIndexes, fixtures.TestBase):
|
||||
eq_(typ.scale, 5)
|
||||
|
||||
@testing.requires.table_reflection
|
||||
def test_varchar_reflection(self, connection, metadata):
|
||||
typ = self._type_round_trip(
|
||||
connection, metadata, sql_types.String(52)
|
||||
)[0]
|
||||
assert isinstance(typ, sql_types.String)
|
||||
@testing.combinations(
|
||||
sql_types.String,
|
||||
sql_types.VARCHAR,
|
||||
sql_types.CHAR,
|
||||
(sql_types.NVARCHAR, testing.requires.nvarchar_types),
|
||||
(sql_types.NCHAR, testing.requires.nvarchar_types),
|
||||
argnames="type_",
|
||||
)
|
||||
def test_string_length_reflection(self, connection, metadata, type_):
|
||||
typ = self._type_round_trip(connection, metadata, type_(52))[0]
|
||||
if issubclass(type_, sql_types.VARCHAR):
|
||||
assert isinstance(typ, sql_types.VARCHAR)
|
||||
elif issubclass(type_, sql_types.CHAR):
|
||||
assert isinstance(typ, sql_types.CHAR)
|
||||
else:
|
||||
assert isinstance(typ, sql_types.String)
|
||||
|
||||
eq_(typ.length, 52)
|
||||
assert isinstance(typ.length, int)
|
||||
|
||||
@testing.requires.table_reflection
|
||||
def test_nullable_reflection(self, connection, metadata):
|
||||
@@ -2879,6 +2982,47 @@ class ComponentReflectionTestExtra(ComparesIndexes, fixtures.TestBase):
|
||||
eq_(opts, expected)
|
||||
# eq_(dict((k, opts[k]) for k in opts if opts[k]), expected)
|
||||
|
||||
@testing.combinations(
|
||||
(Integer, sa.text("10"), r"'?10'?"),
|
||||
(Integer, "10", r"'?10'?"),
|
||||
(Boolean, sa.true(), r"1|true"),
|
||||
(
|
||||
Integer,
|
||||
sa.text("3 + 5"),
|
||||
r"3\+5",
|
||||
testing.requires.expression_server_defaults,
|
||||
),
|
||||
(
|
||||
Integer,
|
||||
sa.text("(3 * 5)"),
|
||||
r"3\*5",
|
||||
testing.requires.expression_server_defaults,
|
||||
),
|
||||
(DateTime, func.now(), r"current_timestamp|now|getdate"),
|
||||
(
|
||||
Integer,
|
||||
sa.literal_column("3") + sa.literal_column("5"),
|
||||
r"3\+5",
|
||||
testing.requires.expression_server_defaults,
|
||||
),
|
||||
argnames="datatype, default, expected_reg",
|
||||
)
|
||||
@testing.requires.server_defaults
|
||||
def test_server_defaults(
|
||||
self, metadata, connection, datatype, default, expected_reg
|
||||
):
|
||||
t = Table(
|
||||
"t",
|
||||
metadata,
|
||||
Column("id", Integer, primary_key=True),
|
||||
Column("thecol", datatype, server_default=default),
|
||||
)
|
||||
t.create(connection)
|
||||
|
||||
reflected = inspect(connection).get_columns("t")[1]["default"]
|
||||
reflected_sanitized = re.sub(r"[\(\) \']", "", reflected)
|
||||
eq_regex(reflected_sanitized, expected_reg, flags=re.IGNORECASE)
|
||||
|
||||
|
||||
class NormalizedNameTest(fixtures.TablesTest):
|
||||
__requires__ = ("denormalized_names",)
|
||||
@@ -3215,11 +3359,12 @@ __all__ = (
|
||||
"ComponentReflectionTestExtra",
|
||||
"TableNoColumnsTest",
|
||||
"QuotedNameArgumentTest",
|
||||
"BizarroCharacterFKResolutionTest",
|
||||
"BizarroCharacterTest",
|
||||
"HasTableTest",
|
||||
"HasIndexTest",
|
||||
"NormalizedNameTest",
|
||||
"ComputedReflectionTest",
|
||||
"IdentityReflectionTest",
|
||||
"CompositeKeyReflectionTest",
|
||||
"TempTableElementsTest",
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user