class TestMSSQLUpdateGrammar(unittest.TestCase): def setUp(self): self.builder = QueryBuilder(MSSQLGrammar, table="users") def test_can_compile_update(self): to_sql = (self.builder.where("name", "bob").update({ "name": "Joe" }, dry=True).to_sql()) sql = "UPDATE [users] SET [users].[name] = 'Joe' WHERE [users].[name] = 'bob'" self.assertEqual(to_sql, sql) def test_can_compile_update_with_multiple_where(self): to_sql = (self.builder.where("name", "bob").where("age", 20).update( { "name": "Joe" }, dry=True).to_sql()) sql = "UPDATE [users] SET [users].[name] = 'Joe' WHERE [users].[name] = 'bob' AND [users].[age] = '20'" self.assertEqual(to_sql, sql) def test_raw_expression(self): to_sql = self.builder.update({ "name": Raw("[username]") }, dry=True).to_sql() sql = "UPDATE [users] SET [users].[name] = [username]" self.assertEqual(to_sql, sql)
class TestMSSQLQmark(unittest.TestCase): def setUp(self): self.builder = QueryBuilder(MSSQLGrammar, table="users") def test_can_compile_select(self): mark = self.builder.select("username").where("name", "Joe") sql = "SELECT [users].[username] FROM [users] WHERE [users].[name] = '?'" self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, ["Joe"]) def test_can_compile_update(self): mark = self.builder.update({ "name": "Bob" }, dry=True).where("name", "Joe") sql = "UPDATE [users] SET [users].[name] = '?' WHERE [users].[name] = '?'" self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, ["Bob", "Joe"]) def test_can_compile_insert(self): mark = self.builder.create({"name": "Bob"}, query=True) sql = "INSERT INTO [users] ([users].[name]) VALUES ('?')" self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, ["Bob"]) def test_can_compile_where_in(self): mark = self.builder.where_in("id", [1, 2, 3]) sql = "SELECT * FROM [users] WHERE [users].[id] IN ('?', '?', '?')" self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, ["1", "2", "3"])
class BaseTestCaseUpdateGrammar: def setUp(self): self.builder = QueryBuilder(PostgresGrammar, connection_class=PostgresConnection, table="users") def test_can_compile_update(self): to_sql = (self.builder.where("name", "bob").update({ "name": "Joe" }, dry=True).to_sql()) sql = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(to_sql, sql) def test_can_compile_multiple_update(self): to_sql = self.builder.update({ "name": "Joe", "email": "*****@*****.**" }, dry=True).to_sql() sql = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(to_sql, sql) def test_can_compile_update_with_multiple_where(self): to_sql = (self.builder.where("name", "bob").where("age", 20).update( { "name": "Joe" }, dry=True).to_sql()) sql = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(to_sql, sql) def test_can_compile_increment(self): to_sql = self.builder.increment("age").to_sql() sql = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(to_sql, sql) def test_can_compile_decrement(self): to_sql = self.builder.decrement("age", 20).to_sql() sql = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(to_sql, sql)
class BaseQMarkTest: def setUp(self): self.builder = QueryBuilder(grammar=MySQLGrammar, table="users") def test_can_compile_select(self): mark = self.builder.select("username").where("name", "Joe") sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", "") )() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_delete(self): mark = self.builder.where("name", "Joe").delete(query=True) sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", "") )() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_update(self): mark = self.builder.update({"name": "Bob"}, dry=True).where("name", "Joe") sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", "") )() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_where_in(self): mark = self.builder.where_in("id", [1, 2, 3]) sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", "") )() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_where_not_null(self): mark = self.builder.where_not_null("id") sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", "") )() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings)
class BaseTestCaseUpdateGrammar: def setUp(self): self.builder = QueryBuilder(SQLiteGrammar, table="users") def test_can_compile_update(self): to_sql = (self.builder.where("name", "bob").update({ "name": "Joe" }, dry=True).to_sql()) sql = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(to_sql, sql) def test_can_compile_multiple_update(self): to_sql = self.builder.update({ "name": "Joe", "email": "*****@*****.**" }, dry=True).to_sql() sql = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(to_sql, sql) def test_can_compile_update_with_multiple_where(self): to_sql = (self.builder.where("name", "bob").where("age", 20).update( { "name": "Joe" }, dry=True).to_sql()) sql = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(to_sql, sql) # def test_can_compile_increment(self): # to_sql = self.builder.increment("age") # print(to_sql) # self.assertTrue(to_sql.isnumeric()) # def test_can_compile_decrement(self): # to_sql = self.builder.decrement("age", 20).to_sql() # sql = getattr( # self, inspect.currentframe().f_code.co_name.replace("test_", "") # )() # self.assertEqual(to_sql, sql) def test_raw_expression(self): to_sql = self.builder.update({ "name": Raw('"username"') }, dry=True).to_sql() sql = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(to_sql, sql)
class BaseQMarkTest: def setUp(self): self.builder = QueryBuilder(grammar=MySQLGrammar, table="users") def test_can_compile_select(self): mark = self.builder.select("username").where("name", "Joe") sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_delete(self): mark = self.builder.where("name", "Joe").delete(query=True) sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_update(self): mark = self.builder.update({ "name": "Bob" }, dry=True).where("name", "Joe") sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_where_in(self): mark = self.builder.where_in("id", [1, 2, 3]) sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_where_not_null(self): mark = self.builder.where_not_null("id") sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, []) def test_can_compile_where_with_falsy_values(self): mark = self.builder.where("name", 0) sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_where_with_true_value(self): mark = self.builder.where("is_admin", True) sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_where_with_false_value(self): mark = self.builder.where("is_admin", False) sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings) def test_can_compile_sub_group_bindings(self): mark = self.builder.where(lambda query: (query.where( "challenger", 1).or_where("proposer", 1).or_where("referee", 1))) sql, bindings = getattr( self, inspect.currentframe().f_code.co_name.replace("test_", ""))() self.assertEqual(mark.to_qmark(), sql) self.assertEqual(mark._bindings, bindings)