Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,12 @@ def update_format(self):
def delete_format(self):
return "DELETE FROM {table} {wheres}"

def insert_format(self):
return "INSERT INTO {table} ({columns}) VALUES ({values})"

def bulk_insert_format(self):
return "INSERT INTO {table} ({columns}) VALUES {values}"

def aggregate_string_with_alias(self):
return "{aggregate_function}({column}) AS {alias}"

Expand Down
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import unittest

from fastapi_startkit.masoniteorm.query.grammars.PostgresGrammar import PostgresGrammar


class TestPostgresInsertGrammar(unittest.TestCase):
"""Grammar-level unit tests — no live Postgres connection required."""

def test_insert_format_is_defined(self):
result = PostgresGrammar().insert_format()
self.assertEqual(result, "INSERT INTO {table} ({columns}) VALUES ({values})")

def test_bulk_insert_format_is_defined(self):
result = PostgresGrammar().bulk_insert_format()
self.assertEqual(result, "INSERT INTO {table} ({columns}) VALUES {values}")

def test_compile_bulk_create_builds_multi_row_insert(self):
# Regression: PostgresGrammar previously lacked bulk_insert_format(),
# so compiling a bulk create raised AttributeError.
rows = [
{"name": "Joe", "email": "joe@example.com"},
{"name": "Bob", "email": "bob@example.com"},
]
grammar = PostgresGrammar(columns=rows, table="users")

sql = grammar.compile("bulk_create")._sql

self.assertEqual(
sql,
'INSERT INTO "users" ("name", "email") VALUES '
"('Joe', 'joe@example.com'), ('Bob', 'bob@example.com')",
)


if __name__ == "__main__":
unittest.main()
Loading