From: Anton Kovalevich Date: Sat, 5 Jun 2021 01:57:18 +0000 (+0300) Subject: Fix tests X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d6a8bbce571194d85e0f929636f2afe3a23ac35;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Fix tests --- diff --git a/test/dialect/mysql/test_compiler.py b/test/dialect/mysql/test_compiler.py index 5a0f332ce6..cd7034bfe4 100644 --- a/test/dialect/mysql/test_compiler.py +++ b/test/dialect/mysql/test_compiler.py @@ -50,6 +50,7 @@ from sqlalchemy import UnicodeText from sqlalchemy import VARCHAR from sqlalchemy.dialects.mysql import base as mysql from sqlalchemy.dialects.mysql import insert +from sqlalchemy.dialects.mysql import match_ from sqlalchemy.sql import column from sqlalchemy.sql import table from sqlalchemy.sql.expression import literal_column @@ -1289,3 +1290,96 @@ class RegexpTestMariaDb(fixtures.TestBase, RegexpCommon): "REGEXP_REPLACE(mytable.myid, CONCAT('(?', %s, ')', %s), %s)", checkpositional=("ig", "pattern", "replacement"), ) + + +class MatchExpressionTest(fixtures.TestBase, AssertsCompiledSQL): + + __dialect__ = mysql.dialect() + + matcheble = table( + "user", + column("firstname", String), + column("lastname", String), + ) + + def test_match_expression(self): + firstname = self.matcheble.c.firstname + lastname = self.matcheble.c.lastname + + expr = match_(firstname, lastname, against="John Connor") + + self.assert_compile( + expr, + "MATCH (user.firstname, user.lastname) AGAINST (%s)", + dialect=self.__dialect__, + ) + + self.assert_compile( + expr.in_boolean_mode, + "MATCH (user.firstname, user.lastname) AGAINST " + "(%s IN BOOLEAN MODE)", + dialect=self.__dialect__, + ) + + self.assert_compile( + expr.in_natural_language_mode, + "MATCH (user.firstname, user.lastname) AGAINST " + "(%s IN NATURAL LANGUAGE MODE)", + dialect=self.__dialect__, + ) + + self.assert_compile( + expr.with_query_expansion, + "MATCH (user.firstname, user.lastname) AGAINST " + "(%s WITH QUERY EXPANSION)", + dialect=self.__dialect__, + ) + + self.assert_compile( + expr.in_natural_language_mode.with_query_expansion, + "MATCH (user.firstname, user.lastname) AGAINST " + "(%s IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION)", + dialect=self.__dialect__, + ) + + def test_match_expression_fails(self): + firstname = self.matcheble.c.firstname + lastname = self.matcheble.c.lastname + + assert_raises_message( + exc.CompileError, + "Can not match with no columns", + match_, + against="John Connor", + ) + + expr = match_(firstname, lastname, against="John Connor") + + msg = "Flag combination does not make sence: " \ + "mysql_boolean_mode=%s, " \ + "mysql_natural_language=%s, " \ + "mysql_query_expansion=%s" + + assert_raises_message( + exc.CompileError, + msg % (True, False, True), + expr.in_boolean_mode.with_query_expansion + .compile, + dialect=self.__dialect__, + ) + + assert_raises_message( + exc.CompileError, + msg % (True, True, False), + expr.in_boolean_mode.in_natural_language_mode + .compile, + dialect=self.__dialect__, + ) + + assert_raises_message( + exc.CompileError, + msg % (True, True, True), + expr.in_boolean_mode.in_natural_language_mode.with_query_expansion + .compile, + dialect=self.__dialect__, + ) diff --git a/test/dialect/mysql/test_match_expression.py b/test/dialect/mysql/test_match_expression.py deleted file mode 100644 index 97023f7528..0000000000 --- a/test/dialect/mysql/test_match_expression.py +++ /dev/null @@ -1,103 +0,0 @@ -from sqlalchemy import exc -from sqlalchemy import String -from sqlalchemy.dialects.mysql import base as mysql -from sqlalchemy.dialects.mysql import match -from sqlalchemy.sql import column -from sqlalchemy.sql import table -# from sqlalchemy.sql.expression import literal_column -from sqlalchemy.testing import assert_raises_message -from sqlalchemy.testing import AssertsCompiledSQL -from sqlalchemy.testing import fixtures - - -class MatchExpressionTest(fixtures.TestBase, AssertsCompiledSQL): - - __dialect__ = mysql.dialect() - - matcheble = table( - "user", - column("firstname", String), - column("lastname", String), - ) - - def test_match_expression(self): - firstname = self.matcheble.c.firstname - lastname = self.matcheble.c.lastname - - expr = match(firstname, lastname, against="John Connor") - - self.assert_compile( - expr, - "MATCH (user.firstname, user.lastname) AGAINST (%s)", - dialect=self.__dialect__, - ) - - self.assert_compile( - expr.in_boolean_mode, - "MATCH (user.firstname, user.lastname) AGAINST " - "(%s IN BOOLEAN MODE)", - dialect=self.__dialect__, - ) - - self.assert_compile( - expr.in_natural_language_mode, - "MATCH (user.firstname, user.lastname) AGAINST " - "(%s IN NATURAL LANGUAGE MODE)", - dialect=self.__dialect__, - ) - - self.assert_compile( - expr.with_query_expansion, - "MATCH (user.firstname, user.lastname) AGAINST " - "(%s WITH QUERY EXPANSION)", - dialect=self.__dialect__, - ) - - self.assert_compile( - expr.in_natural_language_mode.with_query_expansion, - "MATCH (user.firstname, user.lastname) AGAINST " - "(%s IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION)", - dialect=self.__dialect__, - ) - - def test_match_expression_fails(self): - firstname = self.matcheble.c.firstname - lastname = self.matcheble.c.lastname - - assert_raises_message( - exc.CompileError, - "Can not match with no columns", - match, - against="John Connor", - ) - - expr = match(firstname, lastname, against="John Connor") - - msg = "Flag combination does not make sence: " \ - "mysql_boolean_mode=%s, " \ - "mysql_natural_language=%s, " \ - "mysql_query_expansion=%s" - - assert_raises_message( - exc.CompileError, - msg % (True, False, True), - expr.in_boolean_mode.with_query_expansion - .compile, - dialect=self.__dialect__, - ) - - assert_raises_message( - exc.CompileError, - msg % (True, True, False), - expr.in_boolean_mode.in_natural_language_mode - .compile, - dialect=self.__dialect__, - ) - - assert_raises_message( - exc.CompileError, - msg % (True, True, True), - expr.in_boolean_mode.in_natural_language_mode.with_query_expansion - .compile, - dialect=self.__dialect__, - )