From b247bdc843302ac3d2a0b2c659ab84cffa843802 Mon Sep 17 00:00:00 2001 From: Gilairmay Date: Mon, 10 Jun 2024 21:30:52 -0300 Subject: [PATCH] configuration: wip --- config/__init__.py | 1 + infrastructure/db/tab_db.py | 3 +- scripts/{utils.py => database/seed_utils.py} | 0 tests/test_integration.py | 51 +++++++++++--------- utils/__init__.py | 14 ++++++ 5 files changed, 44 insertions(+), 25 deletions(-) create mode 100644 config/__init__.py rename scripts/{utils.py => database/seed_utils.py} (100%) create mode 100644 utils/__init__.py diff --git a/config/__init__.py b/config/__init__.py new file mode 100644 index 0000000..cf03af1 --- /dev/null +++ b/config/__init__.py @@ -0,0 +1 @@ +connections = {"MYSQL": "mysql+mysqldb://gervasgu:gervasgu@0.0.0.0/FoodOps"} diff --git a/infrastructure/db/tab_db.py b/infrastructure/db/tab_db.py index 82e63a3..53166bb 100644 --- a/infrastructure/db/tab_db.py +++ b/infrastructure/db/tab_db.py @@ -1,7 +1,8 @@ import sqlalchemy +from config import connections from sqlalchemy import text -engine = sqlalchemy.create_engine("mysql+mysqldb://gervasgu:gervasgu@0.0.0.0/FoodOps") +engine = sqlalchemy.create_engine(connections["MYSQL"]) def execute_raw_query(raw_query, params=None): diff --git a/scripts/utils.py b/scripts/database/seed_utils.py similarity index 100% rename from scripts/utils.py rename to scripts/database/seed_utils.py diff --git a/tests/test_integration.py b/tests/test_integration.py index 8ac6dd8..8102fc5 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -1,52 +1,55 @@ from starlette.testclient import TestClient -from main import app import sqlalchemy -from sqlalchemy import text +from scripts.database import seed_utils import ipdb -from scripts import utils - +from utils import execute_non_query, execute_raw_query +from config import connections from testcontainers.mysql import MySqlContainer -client = TestClient(app) -mysql = MySqlContainer("mysql:5.7.17") +mysql = MySqlContainer("mysql:5.7.17", port=3306) mysql.start() - engine = sqlalchemy.create_engine(mysql.get_connection_url()) -seed_commands = utils.get_seed_commands() - +connections["MYSQL"] = mysql.get_connection_url() -def execute_raw_query(raw_query, params=None): - with engine.connect() as connection: - result = connection.execute(text(raw_query)) - return result.mappings().all() +from main import app +client = TestClient(app) -def execute_non_query(raw_query, params=None): - with engine.connect() as connection: - result = connection.execute(text(raw_query)) - connection.commit() - return result +# ipdb.set_trace() +seed_commands = seed_utils.get_seed_commands() for statement in seed_commands.split(";"): - execute_non_query(statement) - -print(mysql.get_connection_url()) -insert = seed_commands.split(";")[2] + execute_non_query(engine, statement) def get_all_tabs(): sql = "select * from Tab" - return execute_raw_query(sql) + return execute_raw_query(engine, sql) def test_simple_query(): assert len(get_all_tabs()) == 1 -def test_read_main(): +def test_hello_world(): response = client.get("/") assert response.status_code == 200 assert response.json() == {"Hello": "world"} + + +def test_get_all_tabs(): + response = client.get("/tabs") + assert response.status_code == 200 + assert response.json() == [ + { + "tab_id": 1, + "table_number": 1, + "is_paid": 0, + "items": '[{"name": "chicken_salad", "amount": 1}]', + "from_day": "2024-05-18", + "created_at": "2024-05-18T20:36:42", + } + ] diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..64bdb9e --- /dev/null +++ b/utils/__init__.py @@ -0,0 +1,14 @@ +from sqlalchemy import text + + +def execute_raw_query(engine, raw_query, params=None): + with engine.connect() as connection: + result = connection.execute(text(raw_query)) + return result.mappings().all() + + +def execute_non_query(engine, raw_query, params=None): + with engine.connect() as connection: + result = connection.execute(text(raw_query)) + connection.commit() + return result